aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-10-11 08:08:12 -0400
committerPaul Mackerras <paulus@samba.org>2005-10-11 08:08:12 -0400
commitfd582ec88eb8d2d907876603e4ecebe6eab330d9 (patch)
treebafacc1916098001051b8235722daa6b9b52e63a
parent35d81a4bfe28a6ea81c9f67c9ce40543124ded0b (diff)
ppc: Various minor compile fixes
This fixes up a variety of minor problems in compiling with ARCH=ppc arising from using the merged versions of various header files. A lot of the changes are just adding #include <asm/machdep.h> to files that use ppc_md or smp_ops_t. This also arranges for us to use semaphore.c, vecemu.c, vector.S and fpu.S from arch/powerpc/kernel when compiling with ARCH=ppc. Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r--arch/powerpc/kernel/Makefile12
-rw-r--r--arch/powerpc/kernel/asm-offsets.c1
-rw-r--r--arch/powerpc/platforms/4xx/Makefile1
-rw-r--r--arch/powerpc/platforms/85xx/Makefile1
-rw-r--r--arch/ppc/Makefile5
-rw-r--r--arch/ppc/kernel/Makefile7
-rw-r--r--arch/ppc/kernel/asm-offsets.c1
-rw-r--r--arch/ppc/kernel/head.S2
-rw-r--r--arch/ppc/kernel/pci.c4
-rw-r--r--arch/ppc/kernel/process.c6
-rw-r--r--arch/ppc/kernel/setup.c7
-rw-r--r--arch/ppc/kernel/traps.c16
-rw-r--r--arch/ppc/platforms/chrp_smp.c1
-rw-r--r--arch/ppc/platforms/ev64360.c1
-rw-r--r--arch/ppc/platforms/gemini_setup.c1
-rw-r--r--arch/ppc/platforms/katana.c1
-rw-r--r--arch/ppc/platforms/lite5200.c1
-rw-r--r--arch/ppc/platforms/pal4_setup.c1
-rw-r--r--arch/ppc/platforms/pmac_pic.c1
-rw-r--r--arch/ppc/syslib/gt64260_pic.c1
-rw-r--r--arch/ppc/syslib/mpc52xx_pci.c1
-rw-r--r--arch/ppc/syslib/mpc83xx_devices.c1
-rw-r--r--arch/ppc/syslib/mv64360_pic.c1
-rw-r--r--arch/ppc/syslib/mv64x60_dbg.c1
-rw-r--r--arch/ppc/syslib/open_pic.c1
-rw-r--r--arch/ppc/syslib/open_pic2.c1
-rw-r--r--arch/ppc/syslib/ppc403_pic.c1
-rw-r--r--arch/ppc/syslib/ppc4xx_pic.c1
-rw-r--r--arch/ppc/syslib/ppc83xx_setup.c1
-rw-r--r--arch/ppc/syslib/ppc85xx_setup.c1
-rw-r--r--arch/ppc/syslib/pq2_devices.c1
-rw-r--r--arch/ppc/syslib/xilinx_pic.c1
-rw-r--r--arch/ppc/xmon/start.c3
-rw-r--r--include/asm-powerpc/reg.h4
-rw-r--r--include/asm-ppc/system.h3
35 files changed, 78 insertions, 15 deletions
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 47a8eb6e7e39..e1db51e6f23a 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -10,7 +10,7 @@ CFLAGS_prom_init.o += -fPIC
10CFLAGS_btext.o += -fPIC 10CFLAGS_btext.o += -fPIC
11endif 11endif
12 12
13obj-y := semaphore.o traps.o 13obj-y := semaphore.o
14obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o 14obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o
15obj-$(CONFIG_POWER4) += idle_power4.o 15obj-$(CONFIG_POWER4) += idle_power4.o
16 16
@@ -28,7 +28,7 @@ extra-$(CONFIG_PPC_FPU) += fpu.o
28extra-y += vmlinux.lds 28extra-y += vmlinux.lds
29 29
30obj-y += process.o init_task.o \ 30obj-y += process.o init_task.o \
31 prom.o systbl.o 31 prom.o systbl.o traps.o
32obj-$(CONFIG_PPC32) += entry_32.o setup_32.o misc_32.o 32obj-$(CONFIG_PPC32) += entry_32.o setup_32.o misc_32.o
33obj-$(CONFIG_PPC64) += setup_64.o misc_64.o 33obj-$(CONFIG_PPC64) += setup_64.o misc_64.o
34obj-$(CONFIG_PPC_OF) += prom_init.o of_device.o 34obj-$(CONFIG_PPC_OF) += prom_init.o of_device.o
@@ -39,4 +39,12 @@ ifeq ($(CONFIG_PPC_ISERIES),y)
39$(obj)/head_64.o: $(obj)/lparmap.s 39$(obj)/head_64.o: $(obj)/lparmap.s
40AFLAGS_head_64.o += -I$(obj) 40AFLAGS_head_64.o += -I$(obj)
41endif 41endif
42
43else
44# stuff used from here for ARCH=ppc or ARCH=ppc64
45obj-$(CONFIG_PPC64) += traps.o
46
47fpux-$(CONFIG_PPC32) += fpu.o
48extra-$(CONFIG_PPC_FPU) += $(fpux-y)
49
42endif 50endif
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
index ddf0c81e1958..b0d6a7cd85e9 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -252,6 +252,7 @@ int main(void)
252 DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address)); 252 DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address));
253 DEFINE(pbe_next, offsetof(struct pbe, next)); 253 DEFINE(pbe_next, offsetof(struct pbe, next));
254 254
255 DEFINE(TASK_SIZE, TASK_SIZE);
255 DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28); 256 DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28);
256#else /* CONFIG_PPC64 */ 257#else /* CONFIG_PPC64 */
257 /* systemcfg offsets for use by vdso */ 258 /* systemcfg offsets for use by vdso */
diff --git a/arch/powerpc/platforms/4xx/Makefile b/arch/powerpc/platforms/4xx/Makefile
new file mode 100644
index 000000000000..79ff6b1e887c
--- /dev/null
+++ b/arch/powerpc/platforms/4xx/Makefile
@@ -0,0 +1 @@
# empty makefile so make clean works \ No newline at end of file
diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile
new file mode 100644
index 000000000000..6407197ffd89
--- /dev/null
+++ b/arch/powerpc/platforms/85xx/Makefile
@@ -0,0 +1 @@
# empty makefile so make clean works
diff --git a/arch/ppc/Makefile b/arch/ppc/Makefile
index 90c750227ed9..aedc9ae13b2a 100644
--- a/arch/ppc/Makefile
+++ b/arch/ppc/Makefile
@@ -57,9 +57,10 @@ head-$(CONFIG_FSL_BOOKE) := arch/ppc/kernel/head_fsl_booke.o
57 57
58head-$(CONFIG_6xx) += arch/ppc/kernel/idle_6xx.o 58head-$(CONFIG_6xx) += arch/ppc/kernel/idle_6xx.o
59head-$(CONFIG_POWER4) += arch/ppc/kernel/idle_power4.o 59head-$(CONFIG_POWER4) += arch/ppc/kernel/idle_power4.o
60head-$(CONFIG_PPC_FPU) += arch/ppc/kernel/fpu.o 60head-$(CONFIG_PPC_FPU) += arch/powerpc/kernel/fpu.o
61 61
62core-y += arch/ppc/kernel/ arch/ppc/platforms/ \ 62core-y += arch/ppc/kernel/ arch/powerpc/kernel/ \
63 arch/ppc/platforms/ \
63 arch/ppc/mm/ arch/ppc/lib/ arch/ppc/syslib/ 64 arch/ppc/mm/ arch/ppc/lib/ arch/ppc/syslib/
64core-$(CONFIG_4xx) += arch/ppc/platforms/4xx/ 65core-$(CONFIG_4xx) += arch/ppc/platforms/4xx/
65core-$(CONFIG_83xx) += arch/ppc/platforms/83xx/ 66core-$(CONFIG_83xx) += arch/ppc/platforms/83xx/
diff --git a/arch/ppc/kernel/Makefile b/arch/ppc/kernel/Makefile
index 74b30978619f..59b6b62d1120 100644
--- a/arch/ppc/kernel/Makefile
+++ b/arch/ppc/kernel/Makefile
@@ -10,12 +10,11 @@ extra-$(CONFIG_FSL_BOOKE) := head_fsl_booke.o
10extra-$(CONFIG_8xx) := head_8xx.o 10extra-$(CONFIG_8xx) := head_8xx.o
11extra-$(CONFIG_6xx) += idle_6xx.o 11extra-$(CONFIG_6xx) += idle_6xx.o
12extra-$(CONFIG_POWER4) += idle_power4.o 12extra-$(CONFIG_POWER4) += idle_power4.o
13extra-$(CONFIG_PPC_FPU) += fpu.o
14extra-y += vmlinux.lds 13extra-y += vmlinux.lds
15 14
16obj-y := entry.o traps.o irq.o idle.o time.o misc.o \ 15obj-y := entry.o traps.o irq.o idle.o time.o misc.o \
17 process.o signal.o ptrace.o align.o \ 16 process.o signal.o ptrace.o align.o \
18 semaphore.o syscalls.o setup.o \ 17 syscalls.o setup.o \
19 cputable.o ppc_htab.o perfmon.o 18 cputable.o ppc_htab.o perfmon.o
20obj-$(CONFIG_6xx) += l2cr.o cpu_setup_6xx.o 19obj-$(CONFIG_6xx) += l2cr.o cpu_setup_6xx.o
21obj-$(CONFIG_SOFTWARE_SUSPEND) += swsusp.o 20obj-$(CONFIG_SOFTWARE_SUSPEND) += swsusp.o
@@ -26,7 +25,6 @@ obj-$(CONFIG_PCI) += pci.o
26obj-$(CONFIG_KGDB) += ppc-stub.o 25obj-$(CONFIG_KGDB) += ppc-stub.o
27obj-$(CONFIG_SMP) += smp.o smp-tbsync.o 26obj-$(CONFIG_SMP) += smp.o smp-tbsync.o
28obj-$(CONFIG_TAU) += temp.o 27obj-$(CONFIG_TAU) += temp.o
29obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o
30ifndef CONFIG_E200 28ifndef CONFIG_E200
31obj-$(CONFIG_FSL_BOOKE) += perfmon_fsl_booke.o 29obj-$(CONFIG_FSL_BOOKE) += perfmon_fsl_booke.o
32endif 30endif
@@ -37,9 +35,6 @@ obj-$(CONFIG_8xx) += softemu8xx.o
37endif 35endif
38 36
39# These are here while we do the architecture merge 37# These are here while we do the architecture merge
40vecemu-y += ../../powerpc/kernel/vecemu.o
41vector-y += ../../powerpc/kernel/vector.o
42fpu-y += ../../powerpc/kernel/fpu.o
43 38
44else 39else
45obj-y := irq.o idle.o time.o \ 40obj-y := irq.o idle.o time.o \
diff --git a/arch/ppc/kernel/asm-offsets.c b/arch/ppc/kernel/asm-offsets.c
index d9ad1d776d0e..7972db1f6570 100644
--- a/arch/ppc/kernel/asm-offsets.c
+++ b/arch/ppc/kernel/asm-offsets.c
@@ -141,6 +141,7 @@ main(void)
141 DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address)); 141 DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address));
142 DEFINE(pbe_next, offsetof(struct pbe, next)); 142 DEFINE(pbe_next, offsetof(struct pbe, next));
143 143
144 DEFINE(TASK_SIZE, TASK_SIZE);
144 DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28); 145 DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28);
145 return 0; 146 return 0;
146} 147}
diff --git a/arch/ppc/kernel/head.S b/arch/ppc/kernel/head.S
index 2c3a1d34e3c7..5b43987a943b 100644
--- a/arch/ppc/kernel/head.S
+++ b/arch/ppc/kernel/head.S
@@ -467,7 +467,7 @@ FPUnavailable:
467 EXCEPTION_PROLOG 467 EXCEPTION_PROLOG
468 bne load_up_fpu /* if from user, just load it up */ 468 bne load_up_fpu /* if from user, just load it up */
469 addi r3,r1,STACK_FRAME_OVERHEAD 469 addi r3,r1,STACK_FRAME_OVERHEAD
470 EXC_XFER_EE_LITE(0x800, KernelFP) 470 EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
471 471
472/* Decrementer */ 472/* Decrementer */
473 EXCEPTION(0x900, Decrementer, timer_interrupt, EXC_XFER_LITE) 473 EXCEPTION(0x900, Decrementer, timer_interrupt, EXC_XFER_LITE)
diff --git a/arch/ppc/kernel/pci.c b/arch/ppc/kernel/pci.c
index 6600fd485b50..163276be7cc5 100644
--- a/arch/ppc/kernel/pci.c
+++ b/arch/ppc/kernel/pci.c
@@ -1034,6 +1034,10 @@ static ssize_t pci_show_devspec(struct device *dev, struct device_attribute *att
1034} 1034}
1035static DEVICE_ATTR(devspec, S_IRUGO, pci_show_devspec, NULL); 1035static DEVICE_ATTR(devspec, S_IRUGO, pci_show_devspec, NULL);
1036 1036
1037#else /* CONFIG_PPC_OF */
1038void pcibios_make_OF_bus_map(void)
1039{
1040}
1037#endif /* CONFIG_PPC_OF */ 1041#endif /* CONFIG_PPC_OF */
1038 1042
1039/* Add sysfs properties */ 1043/* Add sysfs properties */
diff --git a/arch/ppc/kernel/process.c b/arch/ppc/kernel/process.c
index 82de66e4db6d..0870e5553453 100644
--- a/arch/ppc/kernel/process.c
+++ b/arch/ppc/kernel/process.c
@@ -557,14 +557,16 @@ int sys_clone(unsigned long clone_flags, unsigned long usp,
557 return do_fork(clone_flags, usp, regs, 0, parent_tidp, child_tidp); 557 return do_fork(clone_flags, usp, regs, 0, parent_tidp, child_tidp);
558} 558}
559 559
560int sys_fork(int p1, int p2, int p3, int p4, int p5, int p6, 560int sys_fork(unsigned long p1, unsigned long p2, unsigned long p3,
561 unsigned long p4, unsigned long p5, unsigned long p6,
561 struct pt_regs *regs) 562 struct pt_regs *regs)
562{ 563{
563 CHECK_FULL_REGS(regs); 564 CHECK_FULL_REGS(regs);
564 return do_fork(SIGCHLD, regs->gpr[1], regs, 0, NULL, NULL); 565 return do_fork(SIGCHLD, regs->gpr[1], regs, 0, NULL, NULL);
565} 566}
566 567
567int sys_vfork(int p1, int p2, int p3, int p4, int p5, int p6, 568int sys_vfork(unsigned long p1, unsigned long p2, unsigned long p3,
569 unsigned long p4, unsigned long p5, unsigned long p6,
568 struct pt_regs *regs) 570 struct pt_regs *regs)
569{ 571{
570 CHECK_FULL_REGS(regs); 572 CHECK_FULL_REGS(regs);
diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c
index fae6335193ef..6bcb85d2b7fd 100644
--- a/arch/ppc/kernel/setup.c
+++ b/arch/ppc/kernel/setup.c
@@ -87,6 +87,9 @@ extern void chrp_init(unsigned long r3, unsigned long r4,
87dev_t boot_dev; 87dev_t boot_dev;
88#endif /* CONFIG_PPC_MULTIPLATFORM */ 88#endif /* CONFIG_PPC_MULTIPLATFORM */
89 89
90int have_of;
91EXPORT_SYMBOL(have_of);
92
90#ifdef __DO_IRQ_CANON 93#ifdef __DO_IRQ_CANON
91int ppc_do_canonicalize_irqs; 94int ppc_do_canonicalize_irqs;
92EXPORT_SYMBOL(ppc_do_canonicalize_irqs); 95EXPORT_SYMBOL(ppc_do_canonicalize_irqs);
@@ -420,6 +423,8 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
420 } 423 }
421#endif 424#endif
422 425
426 have_of = 1;
427
423 /* prom_init has already been called from __start */ 428 /* prom_init has already been called from __start */
424 if (boot_infos) 429 if (boot_infos)
425 relocate_nodes(); 430 relocate_nodes();
@@ -735,7 +740,7 @@ void __init setup_arch(char **cmdline_p)
735#endif 740#endif
736 741
737#ifdef CONFIG_XMON 742#ifdef CONFIG_XMON
738 xmon_map_scc(); 743 xmon_init(1);
739 if (strstr(cmd_line, "xmon")) 744 if (strstr(cmd_line, "xmon"))
740 xmon(NULL); 745 xmon(NULL);
741#endif /* CONFIG_XMON */ 746#endif /* CONFIG_XMON */
diff --git a/arch/ppc/kernel/traps.c b/arch/ppc/kernel/traps.c
index 26606aa33de6..3145e9773db9 100644
--- a/arch/ppc/kernel/traps.c
+++ b/arch/ppc/kernel/traps.c
@@ -44,6 +44,11 @@
44#include <asm/perfmon.h> 44#include <asm/perfmon.h>
45 45
46#ifdef CONFIG_XMON 46#ifdef CONFIG_XMON
47extern int xmon_bpt(struct pt_regs *regs);
48extern int xmon_sstep(struct pt_regs *regs);
49extern int xmon_iabr_match(struct pt_regs *regs);
50extern int xmon_dabr_match(struct pt_regs *regs);
51
47void (*debugger)(struct pt_regs *regs) = xmon; 52void (*debugger)(struct pt_regs *regs) = xmon;
48int (*debugger_bpt)(struct pt_regs *regs) = xmon_bpt; 53int (*debugger_bpt)(struct pt_regs *regs) = xmon_bpt;
49int (*debugger_sstep)(struct pt_regs *regs) = xmon_sstep; 54int (*debugger_sstep)(struct pt_regs *regs) = xmon_sstep;
@@ -814,6 +819,17 @@ void TAUException(struct pt_regs *regs)
814} 819}
815#endif /* CONFIG_INT_TAU */ 820#endif /* CONFIG_INT_TAU */
816 821
822/*
823 * FP unavailable trap from kernel - print a message, but let
824 * the task use FP in the kernel until it returns to user mode.
825 */
826void kernel_fp_unavailable_exception(struct pt_regs *regs)
827{
828 regs->msr |= MSR_FP;
829 printk(KERN_ERR "floating point used in kernel (task=%p, pc=%lx)\n",
830 current, regs->nip);
831}
832
817void altivec_unavailable_exception(struct pt_regs *regs) 833void altivec_unavailable_exception(struct pt_regs *regs)
818{ 834{
819 static int kernel_altivec_count; 835 static int kernel_altivec_count;
diff --git a/arch/ppc/platforms/chrp_smp.c b/arch/ppc/platforms/chrp_smp.c
index dc62e3209443..97e539557ecb 100644
--- a/arch/ppc/platforms/chrp_smp.c
+++ b/arch/ppc/platforms/chrp_smp.c
@@ -31,6 +31,7 @@
31#include <asm/residual.h> 31#include <asm/residual.h>
32#include <asm/time.h> 32#include <asm/time.h>
33#include <asm/open_pic.h> 33#include <asm/open_pic.h>
34#include <asm/machdep.h>
34 35
35extern unsigned long smp_chrp_cpu_nr; 36extern unsigned long smp_chrp_cpu_nr;
36 37
diff --git a/arch/ppc/platforms/ev64360.c b/arch/ppc/platforms/ev64360.c
index 9811a8a52c25..53388a1c334f 100644
--- a/arch/ppc/platforms/ev64360.c
+++ b/arch/ppc/platforms/ev64360.c
@@ -35,6 +35,7 @@
35#include <asm/bootinfo.h> 35#include <asm/bootinfo.h>
36#include <asm/ppcboot.h> 36#include <asm/ppcboot.h>
37#include <asm/mv64x60.h> 37#include <asm/mv64x60.h>
38#include <asm/machdep.h>
38#include <platforms/ev64360.h> 39#include <platforms/ev64360.h>
39 40
40#define BOARD_VENDOR "Marvell" 41#define BOARD_VENDOR "Marvell"
diff --git a/arch/ppc/platforms/gemini_setup.c b/arch/ppc/platforms/gemini_setup.c
index a8ed5c0a2980..a2a09dc4b5e2 100644
--- a/arch/ppc/platforms/gemini_setup.c
+++ b/arch/ppc/platforms/gemini_setup.c
@@ -36,6 +36,7 @@
36#include <asm/time.h> 36#include <asm/time.h>
37#include <asm/open_pic.h> 37#include <asm/open_pic.h>
38#include <asm/bootinfo.h> 38#include <asm/bootinfo.h>
39#include <asm/machdep.h>
39 40
40void gemini_find_bridges(void); 41void gemini_find_bridges(void);
41static int gemini_get_clock_speed(void); 42static int gemini_get_clock_speed(void);
diff --git a/arch/ppc/platforms/katana.c b/arch/ppc/platforms/katana.c
index 2b53afae0e9c..3eb611e23f69 100644
--- a/arch/ppc/platforms/katana.c
+++ b/arch/ppc/platforms/katana.c
@@ -42,6 +42,7 @@
42#include <asm/ppcboot.h> 42#include <asm/ppcboot.h>
43#include <asm/mv64x60.h> 43#include <asm/mv64x60.h>
44#include <platforms/katana.h> 44#include <platforms/katana.h>
45#include <asm/machdep.h>
45 46
46static struct mv64x60_handle bh; 47static struct mv64x60_handle bh;
47static katana_id_t katana_id; 48static katana_id_t katana_id;
diff --git a/arch/ppc/platforms/lite5200.c b/arch/ppc/platforms/lite5200.c
index b604cf8b3cae..d44cc991179f 100644
--- a/arch/ppc/platforms/lite5200.c
+++ b/arch/ppc/platforms/lite5200.c
@@ -35,6 +35,7 @@
35#include <asm/io.h> 35#include <asm/io.h>
36#include <asm/mpc52xx.h> 36#include <asm/mpc52xx.h>
37#include <asm/ppc_sys.h> 37#include <asm/ppc_sys.h>
38#include <asm/machdep.h>
38 39
39#include <syslib/mpc52xx_pci.h> 40#include <syslib/mpc52xx_pci.h>
40 41
diff --git a/arch/ppc/platforms/pal4_setup.c b/arch/ppc/platforms/pal4_setup.c
index 12446b93e38c..f93a3f871932 100644
--- a/arch/ppc/platforms/pal4_setup.c
+++ b/arch/ppc/platforms/pal4_setup.c
@@ -28,6 +28,7 @@
28#include <asm/io.h> 28#include <asm/io.h>
29#include <asm/todc.h> 29#include <asm/todc.h>
30#include <asm/bootinfo.h> 30#include <asm/bootinfo.h>
31#include <asm/machdep.h>
31 32
32#include <syslib/cpc700.h> 33#include <syslib/cpc700.h>
33 34
diff --git a/arch/ppc/platforms/pmac_pic.c b/arch/ppc/platforms/pmac_pic.c
index 3349cfb624a0..9f2d95ea8564 100644
--- a/arch/ppc/platforms/pmac_pic.c
+++ b/arch/ppc/platforms/pmac_pic.c
@@ -35,6 +35,7 @@
35#include <asm/open_pic.h> 35#include <asm/open_pic.h>
36#include <asm/xmon.h> 36#include <asm/xmon.h>
37#include <asm/pmac_feature.h> 37#include <asm/pmac_feature.h>
38#include <asm/machdep.h>
38 39
39#include "pmac_pic.h" 40#include "pmac_pic.h"
40 41
diff --git a/arch/ppc/syslib/gt64260_pic.c b/arch/ppc/syslib/gt64260_pic.c
index 44aa87385451..f97b3a9abd1e 100644
--- a/arch/ppc/syslib/gt64260_pic.c
+++ b/arch/ppc/syslib/gt64260_pic.c
@@ -45,6 +45,7 @@
45#include <asm/system.h> 45#include <asm/system.h>
46#include <asm/irq.h> 46#include <asm/irq.h>
47#include <asm/mv64x60.h> 47#include <asm/mv64x60.h>
48#include <asm/machdep.h>
48 49
49#define CPU_INTR_STR "gt64260 cpu interface error" 50#define CPU_INTR_STR "gt64260 cpu interface error"
50#define PCI0_INTR_STR "gt64260 pci 0 error" 51#define PCI0_INTR_STR "gt64260 pci 0 error"
diff --git a/arch/ppc/syslib/mpc52xx_pci.c b/arch/ppc/syslib/mpc52xx_pci.c
index 59cf3e8bd1a0..02edff8befd0 100644
--- a/arch/ppc/syslib/mpc52xx_pci.c
+++ b/arch/ppc/syslib/mpc52xx_pci.c
@@ -21,6 +21,7 @@
21#include "mpc52xx_pci.h" 21#include "mpc52xx_pci.h"
22 22
23#include <asm/delay.h> 23#include <asm/delay.h>
24#include <asm/machdep.h>
24 25
25 26
26static int 27static int
diff --git a/arch/ppc/syslib/mpc83xx_devices.c b/arch/ppc/syslib/mpc83xx_devices.c
index 95b3b8a7f0ba..dbf8acac507f 100644
--- a/arch/ppc/syslib/mpc83xx_devices.c
+++ b/arch/ppc/syslib/mpc83xx_devices.c
@@ -21,6 +21,7 @@
21#include <asm/mpc83xx.h> 21#include <asm/mpc83xx.h>
22#include <asm/irq.h> 22#include <asm/irq.h>
23#include <asm/ppc_sys.h> 23#include <asm/ppc_sys.h>
24#include <asm/machdep.h>
24 25
25/* We use offsets for IORESOURCE_MEM since we do not know at compile time 26/* We use offsets for IORESOURCE_MEM since we do not know at compile time
26 * what IMMRBAR is, will get fixed up by mach_mpc83xx_fixup 27 * what IMMRBAR is, will get fixed up by mach_mpc83xx_fixup
diff --git a/arch/ppc/syslib/mv64360_pic.c b/arch/ppc/syslib/mv64360_pic.c
index 8356da4678a2..58b0aa813e85 100644
--- a/arch/ppc/syslib/mv64360_pic.c
+++ b/arch/ppc/syslib/mv64360_pic.c
@@ -48,6 +48,7 @@
48#include <asm/system.h> 48#include <asm/system.h>
49#include <asm/irq.h> 49#include <asm/irq.h>
50#include <asm/mv64x60.h> 50#include <asm/mv64x60.h>
51#include <asm/machdep.h>
51 52
52#ifdef CONFIG_IRQ_ALL_CPUS 53#ifdef CONFIG_IRQ_ALL_CPUS
53#error "The mv64360 does not support distribution of IRQs on all CPUs" 54#error "The mv64360 does not support distribution of IRQs on all CPUs"
diff --git a/arch/ppc/syslib/mv64x60_dbg.c b/arch/ppc/syslib/mv64x60_dbg.c
index 2927c7adf5e5..fa5b2e45e0ca 100644
--- a/arch/ppc/syslib/mv64x60_dbg.c
+++ b/arch/ppc/syslib/mv64x60_dbg.c
@@ -24,6 +24,7 @@
24#include <linux/irq.h> 24#include <linux/irq.h>
25#include <asm/delay.h> 25#include <asm/delay.h>
26#include <asm/mv64x60.h> 26#include <asm/mv64x60.h>
27#include <asm/machdep.h>
27 28
28 29
29#if defined(CONFIG_SERIAL_TEXT_DEBUG) 30#if defined(CONFIG_SERIAL_TEXT_DEBUG)
diff --git a/arch/ppc/syslib/open_pic.c b/arch/ppc/syslib/open_pic.c
index 53da58523e39..df0f76dc0ce3 100644
--- a/arch/ppc/syslib/open_pic.c
+++ b/arch/ppc/syslib/open_pic.c
@@ -24,6 +24,7 @@
24#include <asm/sections.h> 24#include <asm/sections.h>
25#include <asm/open_pic.h> 25#include <asm/open_pic.h>
26#include <asm/i8259.h> 26#include <asm/i8259.h>
27#include <asm/machdep.h>
27 28
28#include "open_pic_defs.h" 29#include "open_pic_defs.h"
29 30
diff --git a/arch/ppc/syslib/open_pic2.c b/arch/ppc/syslib/open_pic2.c
index 9a7e8748e2b2..ef365cc04bd9 100644
--- a/arch/ppc/syslib/open_pic2.c
+++ b/arch/ppc/syslib/open_pic2.c
@@ -28,6 +28,7 @@
28#include <asm/sections.h> 28#include <asm/sections.h>
29#include <asm/open_pic.h> 29#include <asm/open_pic.h>
30#include <asm/i8259.h> 30#include <asm/i8259.h>
31#include <asm/machdep.h>
31 32
32#include "open_pic_defs.h" 33#include "open_pic_defs.h"
33 34
diff --git a/arch/ppc/syslib/ppc403_pic.c b/arch/ppc/syslib/ppc403_pic.c
index ce4d1deb86e9..c46043c47225 100644
--- a/arch/ppc/syslib/ppc403_pic.c
+++ b/arch/ppc/syslib/ppc403_pic.c
@@ -26,6 +26,7 @@
26#include <asm/system.h> 26#include <asm/system.h>
27#include <asm/irq.h> 27#include <asm/irq.h>
28#include <asm/ppc4xx_pic.h> 28#include <asm/ppc4xx_pic.h>
29#include <asm/machdep.h>
29 30
30/* Function Prototypes */ 31/* Function Prototypes */
31 32
diff --git a/arch/ppc/syslib/ppc4xx_pic.c b/arch/ppc/syslib/ppc4xx_pic.c
index 40086212b9c3..0b435633a0d1 100644
--- a/arch/ppc/syslib/ppc4xx_pic.c
+++ b/arch/ppc/syslib/ppc4xx_pic.c
@@ -25,6 +25,7 @@
25#include <asm/system.h> 25#include <asm/system.h>
26#include <asm/irq.h> 26#include <asm/irq.h>
27#include <asm/ppc4xx_pic.h> 27#include <asm/ppc4xx_pic.h>
28#include <asm/machdep.h>
28 29
29/* See comment in include/arch-ppc/ppc4xx_pic.h 30/* See comment in include/arch-ppc/ppc4xx_pic.h
30 * for more info about these two variables 31 * for more info about these two variables
diff --git a/arch/ppc/syslib/ppc83xx_setup.c b/arch/ppc/syslib/ppc83xx_setup.c
index 890484e576e7..4da168a6ad03 100644
--- a/arch/ppc/syslib/ppc83xx_setup.c
+++ b/arch/ppc/syslib/ppc83xx_setup.c
@@ -40,6 +40,7 @@
40#include <asm/ppc_sys.h> 40#include <asm/ppc_sys.h>
41#include <asm/kgdb.h> 41#include <asm/kgdb.h>
42#include <asm/delay.h> 42#include <asm/delay.h>
43#include <asm/machdep.h>
43 44
44#include <syslib/ppc83xx_setup.h> 45#include <syslib/ppc83xx_setup.h>
45#if defined(CONFIG_PCI) 46#if defined(CONFIG_PCI)
diff --git a/arch/ppc/syslib/ppc85xx_setup.c b/arch/ppc/syslib/ppc85xx_setup.c
index 832b8bf99ae7..de2f90576577 100644
--- a/arch/ppc/syslib/ppc85xx_setup.c
+++ b/arch/ppc/syslib/ppc85xx_setup.c
@@ -29,6 +29,7 @@
29#include <asm/mmu.h> 29#include <asm/mmu.h>
30#include <asm/ppc_sys.h> 30#include <asm/ppc_sys.h>
31#include <asm/kgdb.h> 31#include <asm/kgdb.h>
32#include <asm/machdep.h>
32 33
33#include <syslib/ppc85xx_setup.h> 34#include <syslib/ppc85xx_setup.h>
34 35
diff --git a/arch/ppc/syslib/pq2_devices.c b/arch/ppc/syslib/pq2_devices.c
index 1d3869768f96..6f88ba93412b 100644
--- a/arch/ppc/syslib/pq2_devices.c
+++ b/arch/ppc/syslib/pq2_devices.c
@@ -18,6 +18,7 @@
18#include <asm/cpm2.h> 18#include <asm/cpm2.h>
19#include <asm/irq.h> 19#include <asm/irq.h>
20#include <asm/ppc_sys.h> 20#include <asm/ppc_sys.h>
21#include <asm/machdep.h>
21 22
22struct platform_device ppc_sys_platform_devices[] = { 23struct platform_device ppc_sys_platform_devices[] = {
23 [MPC82xx_CPM_FCC1] = { 24 [MPC82xx_CPM_FCC1] = {
diff --git a/arch/ppc/syslib/xilinx_pic.c b/arch/ppc/syslib/xilinx_pic.c
index 2cbcad278cef..47f04c71fe9c 100644
--- a/arch/ppc/syslib/xilinx_pic.c
+++ b/arch/ppc/syslib/xilinx_pic.c
@@ -17,6 +17,7 @@
17#include <asm/io.h> 17#include <asm/io.h>
18#include <asm/xparameters.h> 18#include <asm/xparameters.h>
19#include <asm/ibm4xx.h> 19#include <asm/ibm4xx.h>
20#include <asm/machdep.h>
20 21
21/* No one else should require these constants, so define them locally here. */ 22/* No one else should require these constants, so define them locally here. */
22#define ISR 0 /* Interrupt Status Register */ 23#define ISR 0 /* Interrupt Status Register */
diff --git a/arch/ppc/xmon/start.c b/arch/ppc/xmon/start.c
index 507d4eeffe07..98612d420346 100644
--- a/arch/ppc/xmon/start.c
+++ b/arch/ppc/xmon/start.c
@@ -478,8 +478,9 @@ void *xmon_stdout;
478void *xmon_stderr; 478void *xmon_stderr;
479 479
480void 480void
481xmon_init(void) 481xmon_init(int arg)
482{ 482{
483 xmon_map_scc();
483} 484}
484 485
485int 486int
diff --git a/include/asm-powerpc/reg.h b/include/asm-powerpc/reg.h
index ff619630dff9..06a1f0f2db21 100644
--- a/include/asm-powerpc/reg.h
+++ b/include/asm-powerpc/reg.h
@@ -74,7 +74,9 @@
74#define MSR_DR __MASK(MSR_DR_LG) /* Data Relocate */ 74#define MSR_DR __MASK(MSR_DR_LG) /* Data Relocate */
75#define MSR_PE __MASK(MSR_PE_LG) /* Protection Enable */ 75#define MSR_PE __MASK(MSR_PE_LG) /* Protection Enable */
76#define MSR_PX __MASK(MSR_PX_LG) /* Protection Exclusive Mode */ 76#define MSR_PX __MASK(MSR_PX_LG) /* Protection Exclusive Mode */
77#ifndef MSR_PMM
77#define MSR_PMM __MASK(MSR_PMM_LG) /* Performance monitor */ 78#define MSR_PMM __MASK(MSR_PMM_LG) /* Performance monitor */
79#endif
78#define MSR_RI __MASK(MSR_RI_LG) /* Recoverable Exception */ 80#define MSR_RI __MASK(MSR_RI_LG) /* Recoverable Exception */
79#define MSR_LE __MASK(MSR_LE_LG) /* Little Endian */ 81#define MSR_LE __MASK(MSR_LE_LG) /* Little Endian */
80 82
@@ -87,11 +89,13 @@
87 89
88#else /* 32-bit */ 90#else /* 32-bit */
89/* Default MSR for kernel mode. */ 91/* Default MSR for kernel mode. */
92#ifndef MSR_KERNEL /* reg_booke.h also defines this */
90#ifdef CONFIG_APUS_FAST_EXCEPT 93#ifdef CONFIG_APUS_FAST_EXCEPT
91#define MSR_KERNEL (MSR_ME|MSR_IP|MSR_RI|MSR_IR|MSR_DR) 94#define MSR_KERNEL (MSR_ME|MSR_IP|MSR_RI|MSR_IR|MSR_DR)
92#else 95#else
93#define MSR_KERNEL (MSR_ME|MSR_RI|MSR_IR|MSR_DR) 96#define MSR_KERNEL (MSR_ME|MSR_RI|MSR_IR|MSR_DR)
94#endif 97#endif
98#endif
95 99
96#define MSR_USER (MSR_KERNEL|MSR_PR|MSR_EE) 100#define MSR_USER (MSR_KERNEL|MSR_PR|MSR_EE)
97#endif 101#endif
diff --git a/include/asm-ppc/system.h b/include/asm-ppc/system.h
index 6a49b138c218..af93ff04c53f 100644
--- a/include/asm-ppc/system.h
+++ b/include/asm-ppc/system.h
@@ -77,6 +77,7 @@ extern void enable_kernel_fp(void);
77extern void enable_kernel_altivec(void); 77extern void enable_kernel_altivec(void);
78extern void giveup_altivec(struct task_struct *); 78extern void giveup_altivec(struct task_struct *);
79extern void load_up_altivec(struct task_struct *); 79extern void load_up_altivec(struct task_struct *);
80extern int emulate_altivec(struct pt_regs *);
80extern void giveup_spe(struct task_struct *); 81extern void giveup_spe(struct task_struct *);
81extern void load_up_spe(struct task_struct *); 82extern void load_up_spe(struct task_struct *);
82extern int fix_alignment(struct pt_regs *); 83extern int fix_alignment(struct pt_regs *);
@@ -89,6 +90,8 @@ extern int do_page_fault(struct pt_regs *, unsigned long, unsigned long);
89extern void bad_page_fault(struct pt_regs *, unsigned long, int); 90extern void bad_page_fault(struct pt_regs *, unsigned long, int);
90extern int die(const char *, struct pt_regs *, long); 91extern int die(const char *, struct pt_regs *, long);
91extern void _exception(int, struct pt_regs *, int, unsigned long); 92extern void _exception(int, struct pt_regs *, int, unsigned long);
93void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
94
92#ifdef CONFIG_BOOKE_WDT 95#ifdef CONFIG_BOOKE_WDT
93extern u32 booke_wdt_enabled; 96extern u32 booke_wdt_enabled;
94extern u32 booke_wdt_period; 97extern u32 booke_wdt_period;