2 * arch/ppc/kernel/gemini_prom.S
4 * Not really prom support code (yet), but sort of anti-prom code. The current
5 * bootloader does a number of things it shouldn't and doesn't do things that it
6 * should. The stuff in here is mainly a hodge-podge collection of setup code
7 * to get the board up and running.
11 #include <linux/config.h>
12 #include <asm/processor.h>
14 #include <platforms/gemini.h>
15 #include <asm/ppc_asm.h>
17 #define HID0_ABE (1<<3)
20 * On 750's the MMU is on when Linux is booted, so we need to clear out the
21 * bootloader's BAT settings, make sure we're in supervisor state (gotcha!),
22 * and turn off the MMU.
26 _GLOBAL(gemini_prom_init)
28 /* Since the MMU's on, get stuff in rom space that we'll need */
29 lis r4,GEMINI_CPUSTAT@h
30 ori r4,r4,GEMINI_CPUSTAT@l
33 mr r24,r5 /* cpu # used later on */
36 li r3,MSR_PR /* ensure supervisor! */
37 ori r3,r3,MSR_IR|MSR_DR
42 /* zero out the bats now that the MMU is off */
64 /* the bootloader (as far as I'm currently aware) doesn't mess with page
65 tables, but since we're already here, might as well zap these, too */
78 /* The 750 book (and Mot/IBM support) says that this will "assist" snooping
79 when in SMP. Not sure yet whether this should stay or leave... */
84 #endif /* CONFIG_SMP */
87 /* apparently, SMon doesn't pay attention to HID0[SRST]. Disable the MMU and
88 branch to 0xfff00100 */
89 _GLOBAL(_gemini_reboot)
90 lis r5,GEMINI_BOOT_INIT@h
91 ori r5,r5,GEMINI_BOOT_INIT@l