patch-2.3.17 linux/arch/m68k/kernel/sun3-head.S
Next file: linux/arch/m68k/kernel/traps.c
Previous file: linux/arch/m68k/kernel/setup.c
Back to the patch index
Back to the overall index
- Lines: 103
- Date:
Sat Sep 4 13:06:41 1999
- Orig file:
v2.3.16/linux/arch/m68k/kernel/sun3-head.S
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.3.16/linux/arch/m68k/kernel/sun3-head.S linux/arch/m68k/kernel/sun3-head.S
@@ -0,0 +1,102 @@
+#include <linux/config.h>
+#include <linux/linkage.h>
+
+#include <asm/page.h>
+#include <asm/contregs.h>
+#include <asm/sun3-head.h>
+
+PSL_HIGHIPL = 0x2700
+NBSG = 0x20000
+ICACHE_ONLY = 0x00000009
+CACHES_OFF = 0x00000008 | actually a clear and disable --m
+#define MAS_STACK INT_STACK
+ROOT_TABLE_SIZE = 128
+PAGESIZE = 8192
+
+.globl SYMBOL_NAME(bootup_user_stack)
+.globl SYMBOL_NAME(bootup_kernel_stack)
+.globl SYMBOL_NAME(pg0)
+.globl SYMBOL_NAME(empty_bad_page)
+.globl SYMBOL_NAME(empty_bad_page_table)
+.globl SYMBOL_NAME(empty_zero_page)
+.globl SYMBOL_NAME(swapper_pg_dir)
+.globl SYMBOL_NAME(kernel_pmd_table)
+.global SYMBOL_NAME(m68k_pgtable_cachemode)
+.global SYMBOL_NAME(kpt)
+| todo: all these should be in bss!
+SYMBOL_NAME(swapper_pg_dir): .skip 0x2000
+SYMBOL_NAME(pg0): .skip 0x2000
+SYMBOL_NAME(empty_bad_page): .skip 0x2000
+SYMBOL_NAME(empty_bad_page_table): .skip 0x2000
+SYMBOL_NAME(kernel_pmd_table): .skip 0x2000
+SYMBOL_NAME(empty_zero_page): .skip 0x2000
+
+.globl SYMBOL_NAME(kernel_pg_dir)
+.equ SYMBOL_NAME(kernel_pg_dir),SYMBOL_NAME(kernel_pmd_table)
+
+ .section .head
+ENTRY(_stext)
+ENTRY(_start)
+
+/* Firstly, disable interrupts and set up function codes. */
+ movew #PSL_HIGHIPL, %sr
+ moveq #FC_CONTROL, %d0
+ movec %d0, %sfc
+ movec %d0, %dfc
+
+/* Make sure we're in context zero. */
+ moveq #0, %d0
+ movsb %d0, AC_CONTEXT
+
+/* Copy mappings for first megabyte of RAM to address 0xE000000. */
+ lea (AC_SEGMAP+0),%a0
+ lea (AC_SEGMAP+KERNBASE),%a1
+ moveq #(0x140000/NBSG-1),%d0
+1: movsb %a0@,%d1
+ movsb %d1,%a1@
+ addl #NBSG,%a0
+ addl #NBSG,%a1
+ dbf %d0,1b
+
+/* Disable caches and jump to high code. */
+ moveq #ICACHE_ONLY,%d0 | Cache disabled until we're ready to enable it
+ movc %d0, %cacr | is this the right value? (yes --m)
+ jmp 1f:l
+
+/* Following code executes at high addresses (0xE000xxx). */
+1: lea SYMBOL_NAME(init_task_union),%a2 | get initial thread...
+ lea %a2@(KTHREAD_SIZE),%sp | ...and its stack.
+
+/* copy bootinfo records from the loader to _end */
+ lea SYMBOL_NAME(_end), %a1
+ lea BI_START, %a0
+ /* number of longs to copy */
+ movel %a0@, %d0
+1: addl #4, %a0
+ movel %a0@, %a1@
+ addl #4, %a1
+ dbf %d0, 1b
+
+/* Point MSP at an invalid page to trap if it's used. --m */
+ movl #(PAGESIZE),%d0
+ movc %d0,%msp
+ moveq #-1,%d0
+ movsb %d0,(AC_SEGMAP+0x0)
+
+ jbsr SYMBOL_NAME(sun3_init)
+
+ jbsr SYMBOL_NAME(start_kernel)
+ trap #15
+
+ .data
+ .even
+SYMBOL_NAME_LABEL(kpt)
+ .long 0
+SYMBOL_NAME_LABEL(availmem)
+ .long 0
+| todo: remove next two. --m
+SYMBOL_NAME_LABEL(is_medusa)
+ .long 0
+SYMBOL_NAME_LABEL(m68k_pgtable_cachemode)
+ .long 0
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)