1
linux/arch
Atsushi Nemoto 656be92f9a [MIPS] Load modules to CKSEG0 if CONFIG_BUILD_ELF64=n
This is a patch to load 64-bit modules to CKSEG0 so that can be
compiled with -msym32 option.  This makes each module ~10% smaller.

* introduce MODULE_START and MODULE_END
* custom module_alloc()
* PGD for modules
* change XTLB refill handler synthesizer
* enable -msym32 for modules again
  (revert ca78b1a5c6a6e70e052d3ea253828e49b5d07c8a)

New XTLB refill handler looks like this:

80000080 dmfc0   k0,C0_BADVADDR
80000084 bltz    k0,800000e4			# goto l_module_alloc
80000088 lui     k1,0x8046			# %high(pgd_current)
8000008c ld      k1,24600(k1)			# %low(pgd_current)
80000090 dsrl    k0,k0,0x1b			# l_vmalloc_done:
80000094 andi    k0,k0,0x1ff8
80000098 daddu   k1,k1,k0
8000009c dmfc0   k0,C0_BADVADDR
800000a0 ld      k1,0(k1)
800000a4 dsrl    k0,k0,0x12
800000a8 andi    k0,k0,0xff8
800000ac daddu   k1,k1,k0
800000b0 dmfc0   k0,C0_XCONTEXT
800000b4 ld      k1,0(k1)
800000b8 andi    k0,k0,0xff0
800000bc daddu   k1,k1,k0
800000c0 ld      k0,0(k1)
800000c4 ld      k1,8(k1)
800000c8 dsrl    k0,k0,0x6
800000cc mtc0    k0,C0_ENTRYLO0
800000d0 dsrl    k1,k1,0x6
800000d4 mtc0    k1,C0_ENTRYL01
800000d8 nop
800000dc tlbwr
800000e0 eret
800000e4 dsll    k1,k0,0x2			# l_module_alloc:
800000e8 bgez    k1,80000008			# goto l_vmalloc
800000ec lui     k1,0xc000
800000f0 dsubu   k0,k0,k1
800000f4 lui     k1,0x8046			# %high(module_pg_dir)
800000f8 beq     zero,zero,80000000
800000fc nop
80000000 beq     zero,zero,80000090		# goto l_vmalloc_done
80000004 daddiu  k1,k1,0x4000
80000008 dsll32  k1,k1,0x0			# l_vmalloc:
8000000c dsubu   k0,k0,k1
80000010 beq     zero,zero,80000090		# goto l_vmalloc_done
80000014 lui     k1,0x8046			# %high(swapper_pg_dir)

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2006-11-30 01:14:44 +00:00
..
alpha Update for the srm_env driver. 2006-11-07 23:50:37 +01:00
arm [ARM] Export smp_call_function() 2006-11-26 16:39:00 +00:00
arm26 [PATCH] remove bogus arch-specific syscall exports 2006-10-11 11:17:07 -07:00
avr32 AVR32: Add missing return instruction in __raw_writesb 2006-11-06 14:07:16 +01:00
cris [PATCH] cryptocop: double spin_lock_irqsave() 2006-10-30 12:08:41 -08:00
frv [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
h8300 [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
i386 x86: be more careful when walking back the frame pointer chain 2006-11-17 11:14:56 -08:00
ia64 [IA64] a fix towards allmodconfig build 2006-11-16 11:25:12 -08:00
m32r [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
m68k [PATCH] m68k: consolidate initcall sections 2006-10-29 12:07:41 -08:00
m68knommu [PATCH] m68knommu: fix up for the irq_handler_t changes 2006-11-20 10:16:49 -08:00
mips [MIPS] Load modules to CKSEG0 if CONFIG_BUILD_ELF64=n 2006-11-30 01:14:44 +00:00
parisc [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
powerpc [POWERPC] Fix ucc_geth of_device discovery on mpc832x 2006-11-22 13:28:21 +11:00
ppc [POWERPC] Make alignment exception always check exception table 2006-11-01 15:16:04 +11:00
s390 [S390] IRQs too early enabled. 2006-11-06 10:49:02 +01:00
sh sh: Titan defconfig update. 2006-10-31 12:53:29 +09:00
sh64 [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
sparc [SPARC]: Fix robust futex syscalls and wire up migrate_pages. 2006-11-05 16:51:03 -08:00
sparc64 [SPARC]: Fix robust futex syscalls and wire up migrate_pages. 2006-11-05 16:51:03 -08:00
um [PATCH] uml: make execvp safe for our usage 2006-11-25 13:28:34 -08:00
v850 [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
x86_64 Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-11-28 17:28:41 -08:00
xtensa [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00