aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/Makefile5
-rw-r--r--arch/powerpc/kernel/setup_64.c18
2 files changed, 16 insertions, 7 deletions
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 30101762f7c0..a733347964a0 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -12,7 +12,8 @@ endif
12 12
13obj-y := semaphore.o cputable.o ptrace.o syscalls.o \ 13obj-y := semaphore.o cputable.o ptrace.o syscalls.o \
14 signal_32.o pmc.o 14 signal_32.o pmc.o
15obj-$(CONFIG_PPC64) += binfmt_elf32.o sys_ppc32.o ptrace32.o 15obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \
16 ptrace32.o
16obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o 17obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o
17obj-$(CONFIG_POWER4) += idle_power4.o 18obj-$(CONFIG_POWER4) += idle_power4.o
18obj-$(CONFIG_PPC_OF) += of_device.o 19obj-$(CONFIG_PPC_OF) += of_device.o
@@ -34,7 +35,7 @@ extra-y += vmlinux.lds
34obj-y += process.o init_task.o time.o \ 35obj-y += process.o init_task.o time.o \
35 prom.o systbl.o traps.o setup-common.o 36 prom.o systbl.o traps.o setup-common.o
36obj-$(CONFIG_PPC32) += entry_32.o idle_6xx.o setup_32.o misc_32.o 37obj-$(CONFIG_PPC32) += entry_32.o idle_6xx.o setup_32.o misc_32.o
37obj-$(CONFIG_PPC64) += setup_64.o misc_64.o 38obj-$(CONFIG_PPC64) += misc_64.o
38obj-$(CONFIG_PPC_OF) += prom_init.o 39obj-$(CONFIG_PPC_OF) += prom_init.o
39obj-$(CONFIG_MODULES) += ppc_ksyms.o 40obj-$(CONFIG_MODULES) += ppc_ksyms.o
40obj-$(CONFIG_BOOTX_TEXT) += btext.o 41obj-$(CONFIG_BOOTX_TEXT) += btext.o
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index 9cdf294e76f6..721adeea601d 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -702,6 +702,17 @@ static void __init emergency_stack_init(void)
702 limit)) + PAGE_SIZE; 702 limit)) + PAGE_SIZE;
703} 703}
704 704
705extern unsigned long *sys_call_table;
706extern unsigned long sys_ni_syscall;
707#ifdef CONFIG_PPC_MERGE
708#define SYS_CALL_ENTRY64(i) sys_call_table[(i) * 2]
709#define SYS_CALL_ENTRY32(i) sys_call_table[(i) * 2 + 1]
710#else
711extern unsigned long *sys_call_table32;
712#define SYS_CALL_ENTRY64(i) sys_call_table[(i)]
713#define SYS_CALL_ENTRY32(i) sys_call_table32[(i)]
714#endif
715
705/* 716/*
706 * Called from setup_arch to initialize the bitmap of available 717 * Called from setup_arch to initialize the bitmap of available
707 * syscalls in the systemcfg page 718 * syscalls in the systemcfg page
@@ -709,17 +720,14 @@ static void __init emergency_stack_init(void)
709void __init setup_syscall_map(void) 720void __init setup_syscall_map(void)
710{ 721{
711 unsigned int i, count64 = 0, count32 = 0; 722 unsigned int i, count64 = 0, count32 = 0;
712 extern unsigned long *sys_call_table;
713 extern unsigned long sys_ni_syscall;
714
715 723
716 for (i = 0; i < __NR_syscalls; i++) { 724 for (i = 0; i < __NR_syscalls; i++) {
717 if (sys_call_table[i*2] != sys_ni_syscall) { 725 if (SYS_CALL_ENTRY64(i) != sys_ni_syscall) {
718 count64++; 726 count64++;
719 systemcfg->syscall_map_64[i >> 5] |= 727 systemcfg->syscall_map_64[i >> 5] |=
720 0x80000000UL >> (i & 0x1f); 728 0x80000000UL >> (i & 0x1f);
721 } 729 }
722 if (sys_call_table[i*2+1] != sys_ni_syscall) { 730 if (SYS_CALL_ENTRY32(i) != sys_ni_syscall) {
723 count32++; 731 count32++;
724 systemcfg->syscall_map_32[i >> 5] |= 732 systemcfg->syscall_map_32[i >> 5] |=
725 0x80000000UL >> (i & 0x1f); 733 0x80000000UL >> (i & 0x1f);