patch-1.3.94 linux/arch/m68k/boot/atari/bootstrap.h
Next file: linux/arch/m68k/boot/atari/sysvars.h
Previous file: linux/arch/m68k/boot/atari/bootstrap.c
Back to the patch index
Back to the overall index
- Lines: 148
- Date:
Mon Mar 4 22:36:11 1996
- Orig file:
v1.3.93/linux/arch/m68k/boot/atari/bootstrap.h
- Orig date:
Thu Jan 1 02:00:00 1970
diff -u --recursive --new-file v1.3.93/linux/arch/m68k/boot/atari/bootstrap.h linux/arch/m68k/boot/atari/bootstrap.h
@@ -0,0 +1,147 @@
+/*
+** bootstrap.h -- This file is a part of the Atari bootloader.
+**
+** Copyright 1993 by Arjan Knor
+**
+** Modified by Andreas Schwab
+** - clear transparent translation registers
+**
+** This file is subject to the terms and conditions of the GNU General Public
+** License. See the file README.legal in the main directory of this archive
+** for more details.
+**
+*/
+
+#ifndef BOOTSTRAP_H
+#define BOOTSTRAP_H
+
+/* _MCH cookie values */
+#define MACH_ST 0
+#define MACH_STE 1
+#define MACH_TT 2
+#define MACH_FALCON 3
+
+/* some constants for memory handling */
+#define ST_RAM 0
+#define TT_RAM 1
+#define TT_RAM_BASE (u_long)(0x01000000)
+#define MB (1024 * 1024)
+#define START_MEM (bi.memory[0].addr)
+#define MEM_SIZE (bi.memory[0].size)
+
+/* the various CPU- and FPU-types */
+#define AFF_68000 (1)
+#define AFF_68020 (2)
+#define AFF_68030 (4)
+#define AFF_68040 (8)
+#define AFF_68881 (16)
+#define AFF_68882 (32)
+
+/* the possible OS-languages */
+#define USA 0
+#define FRG 1
+#define FRA 2
+#define UK 3
+#define SPA 4
+#define ITA 5
+#define SWE 6
+#define SWF 7
+#define SWG 8
+#define TUR 9
+#define FIN 10
+#define NOR 11
+#define DEN 12
+#define SAU 13
+#define HOL 14
+
+/* some inline functions */
+
+static __inline int fpu_idle_frame_size (void)
+{
+ char fpu_frame[216];
+ __asm__ __volatile__ ("fnop"::);
+ __asm__ __volatile__ ("fsave %0@" : : "a" (fpu_frame));
+ return fpu_frame[1];
+}
+
+static __inline void change_stack (u_long *stackp)
+{
+ __asm__ volatile ("movel %0,sp\n\t" :: "g" (stackp) : "sp");
+}
+
+static __inline void disable_interrupts (void)
+{
+ __asm__ volatile ("orw #0x700,sr":);
+}
+
+extern struct bootinfo bi;
+static __inline void disable_cache (void)
+{
+ __asm__ volatile ("movec %0,cacr" :: "d" (0));
+ if (bi.cputype & CPU_68060) {
+ /* '060: clear branch cache after disabling it;
+ * disable superscalar operation (and enable FPU) */
+ __asm__ volatile ("movec %0,cacr" :: "d" (0x00400000));
+ __asm__ volatile ("moveq #0,d0;"
+ ".long 0x4e7b0808" /* movec d0,pcr */
+ : /* no outputs */
+ : /* no inputs */
+ : "d0");
+ }
+}
+
+static __inline void disable_mmu (void)
+{
+ if (bi.cputype & (CPU_68040|CPU_68060)) {
+ __asm__ volatile ("moveq #0,d0;"
+ ".long 0x4e7b0003;" /* movec d0,tc */
+ ".long 0x4e7b0004;" /* movec d0,itt0 */
+ ".long 0x4e7b0005;" /* movec d0,itt1 */
+ ".long 0x4e7b0006;" /* movec d0,dtt0 */
+ ".long 0x4e7b0007" /* movec d0,dtt1 */
+ : /* no outputs */
+ : /* no inputs */
+ : "d0");
+ }
+ else {
+ __asm__ volatile ("subl #4,sp\n\t"
+ "pmove tc,sp@\n\t"
+ "bclr #7,sp@\n\t"
+ "pmove sp@,tc\n\t"
+ "addl #4,sp");
+ if (bi.cputype & CPU_68030) {
+ __asm__ volatile ("clrl sp@-\n\t"
+ ".long 0xf0170800\n\t" /* pmove sp@,tt0 */
+ ".long 0xf0170c00\n\t" /* pmove sp@,tt1 */
+ "addl #4,sp\n");
+ }
+ }
+}
+
+static __inline void jump_to_mover (void *, void *, void *, void *, int, int,
+ void *) __attribute__ ((noreturn));
+static __inline void jump_to_mover (void *kernel_start, void *mem_start,
+ void *ramdisk_end, void *mem_end,
+ int kernel_size, int ramdisk_size,
+ void *mover_addr)
+{
+ asm volatile ("movel %0,a0\n\t"
+ "movel %1,a1\n\t"
+ "movel %2,a2\n\t"
+ "movel %3,a3\n\t"
+ "movel %4,d0\n\t"
+ "movel %5,d1\n\t"
+ "jmp %6@\n"
+ : /* no outputs */
+ : "g" (kernel_start), "g" (mem_start),
+ "g" (ramdisk_end), "g" (mem_end),
+ "g" (kernel_size), "g" (ramdisk_size),
+ "a" (mover_addr)
+ : "a0", "a1", "a2", "a3", "d0", "d1");
+
+ /* Avoid warning that function may return */
+ for (;;) ;
+}
+
+#endif /* BOOTSTRAP_H */
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this