linux/arch/parisc/include/asm
Helge Deller 48d27cb229 parisc: fix usage of 32bit PTE page table entries on 32bit kernels
This patch fixes a long outstanding bug on 32bit parisc linux kernels
which prevented us from using 32bit PTE table entries (instead of 64bit
entries of which 32bit were unused).

The problem was caused by this assembler statement in the L2_ptep
macro in arch/parisc/kernel/entry.S:447:
	EXTR \va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
which expanded to
	extrw,u r8,9,11,r1
and which has undefined behavior since the length value (11) extends
beyond the leftmost bit (11-1 > 9).
Interestingly PA2.0 processors seem to don't care and just zero-extend
the value, while PA1.1 processors don't.

Fix this problem by detecting an address space overflow with ASM_BITS_PER_PGD
and adjusting it accordingly. To prevent such problems in the future,
some compile time sanity checks in arch/parisc/mm/init.c were added.

Since the page table now only consumes half of it's old size, we can
use the freed memory to harmonize 32- and 64bit kernels and let both
map 16MB for the initial page table.

Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
2009-03-31 02:51:33 +00:00
..
agp.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
asmregs.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
assembly.h parisc: fix 64bit build 2009-03-13 01:18:56 -04:00
atomic.h atomic_t: unify all arch definitions 2009-01-06 15:59:10 -08:00
auxvec.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
bitops.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
bug.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
bugs.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
cacheflush.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
checksum.h parisc: fix ipv6 checksum 2009-01-05 19:11:05 +00:00
compat_rt_sigframe.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
compat_signal.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
compat_ucontext.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
compat.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
cputime.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
current.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
delay.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
device.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
div64.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
dma-mapping.h Documentation: move DMA-mapping.txt to Doc/PCI/ 2009-01-29 18:19:29 -08:00
dma.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
eisa_bus.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
eisa_eeprom.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
elf.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
emergency-restart.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
errno.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
fb.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
fcntl.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
fixmap.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
floppy.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
futex.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
grfioctl.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
hardirq.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
hardware.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
hw_irq.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ide.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
io.h parisc: define x->x mmio accessors 2009-03-13 01:20:48 -04:00
ioctl.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ioctls.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ipcbuf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
irq_regs.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
irq.h parisc: convert cpu_check_affinity to new cpumask api 2009-03-13 01:20:27 -04:00
Kbuild byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
kdebug.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
kmap_types.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
led.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
linkage.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
local.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
machdep.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mc146818rtc.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mckinley.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mman.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mmu_context.h parisc: fix braino in commit adding __space_to_prot 2009-01-05 18:15:25 +00:00
mmu.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mmzone.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
module.h parisc: fix module loading failure of large kernel modules 2009-01-05 08:40:14 +10:30
msgbuf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mutex.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
page.h parisc: fix usage of 32bit PTE page table entries on 32bit kernels 2009-03-31 02:51:33 +00:00
param.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
parisc-device.h parisc: struct device - replace bus_id with dev_name(), dev_set_name() 2008-11-26 22:22:41 +00:00
parport.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pci.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pdc_chassis.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pdc.h headers_check fix: parisc, pdc.h 2009-02-01 11:01:27 +05:30
pdcpat.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
percpu.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
perf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pgalloc.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pgtable.h parisc: fix usage of 32bit PTE page table entries on 32bit kernels 2009-03-31 02:51:33 +00:00
poll.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
posix_types.h parisc: __kernel_time_t is always long 2008-11-26 22:22:36 +00:00
prefetch.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
processor.h parisc: Replace NR_CPUS in parisc code 2009-01-05 19:09:02 +00:00
psw.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ptrace.h remove __ARCH_WANT_COMPAT_SYS_PTRACE 2008-11-30 11:00:15 -08:00
real.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
resource.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ropes.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
rt_sigframe.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
rtc.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
runway.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
scatterlist.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
sections.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
segment.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
sembuf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
serial.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
setup.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
shmbuf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
shmparam.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
sigcontext.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
siginfo.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
signal.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
smp.h parisc: remove gratuitous cpu_online_map declaration. 2009-01-01 10:12:16 +10:30
socket.h net: new user space API for time stamping of incoming and outgoing packets 2009-02-15 22:43:33 -08:00
sockios.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
spinlock_types.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
spinlock.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
stat.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
statfs.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
string.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
superio.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
swab.h headers_check fix: parisc, swab.h 2009-02-01 11:01:27 +05:30
system.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
termbits.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
termios.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
thread_info.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
timex.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
tlb.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
tlbflush.h parisc: disable UP-optimized flush_tlb_mm 2008-12-23 17:03:21 -08:00
topology.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
traps.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
types.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
uaccess.h parisc: fix `struct pt_regs' declared inside parameter list warning 2009-03-13 01:17:37 -04:00
ucontext.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
unaligned.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
unistd.h parisc: add new syscalls 2008-10-10 16:32:30 +00:00
unwind.h parisc: initialize unwinder much earlier 2008-10-10 16:32:30 +00:00
user.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
vga.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
xor.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00