⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sun3-head.s

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 S
字号:
#include <linux/linkage.h>#include <asm/page.h>#include <asm/contregs.h>#include <asm/sun3-head.h>PSL_HIGHIPL     = 0x2700NBSG            = 0x20000ICACHE_ONLY	= 0x00000009CACHES_OFF	= 0x00000008	| actually a clear and disable --m#define MAS_STACK INT_STACK ROOT_TABLE_SIZE = 128PAGESIZE	= 8192SUN3_INVALID_PMEG = 255.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).globl SYMBOL_NAME(availmem).global SYMBOL_NAME(m68k_pgtable_cachemode).global SYMBOL_NAME(kpt)| todo: all these should be in bss!SYMBOL_NAME(swapper_pg_dir):                .skip 0x2000SYMBOL_NAME(pg0):                           .skip 0x2000SYMBOL_NAME(empty_bad_page):                .skip 0x2000SYMBOL_NAME(empty_bad_page_table):          .skip 0x2000SYMBOL_NAME(kernel_pmd_table):              .skip 0x2000SYMBOL_NAME(empty_zero_page):               .skip 0x2000.globl SYMBOL_NAME(kernel_pg_dir).equ    SYMBOL_NAME(kernel_pg_dir),SYMBOL_NAME(kernel_pmd_table)	.section .headENTRY(_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/* map everything the bootloader left us into high memory, clean up the   excess later */	lea	(AC_SEGMAP+0),%a0 	lea	(AC_SEGMAP+KERNBASE),%a1	1:		movsb	%a0@, %d1	movsb	%d1, %a1@	cmpib	#SUN3_INVALID_PMEG, %d1	beq	2f	addl	#NBSG,%a0	addl	#NBSG,%a1	jmp	1b	2:					/* 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@, %d01:	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(base_trap_init)			        jbsr    SYMBOL_NAME(start_kernel)	trap	#15			        .data        .evenSYMBOL_NAME_LABEL(kpt)        .long 0SYMBOL_NAME_LABEL(availmem)        .long 0| todo: remove next two. --mSYMBOL_NAME_LABEL(is_medusa)        .long 0SYMBOL_NAME_LABEL(m68k_pgtable_cachemode)        .long 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -