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

📄 init.s

📁 ADS环境下的类似linux内核的操作系统
💻 S
字号:
;;**************************************************************
;;BootLoader for MSimulator,you can only free use it for personal study purpose!
;;www.MShowTec.com for more information.
;;lmjx,Email:limiao@mshowtec.com,All Right Reserved.
;;**************************************************************
		IMPORT undef
		IMPORT swi
		IMPORT prefetch
		IMPORT data
		IMPORT irq
		IMPORT fiq
		
		
 
        AREA    Init, CODE, READONLY
		CODE32
		GET snds.s
		
        ENTRY

start

	B	reset					; Reset   
	B	undef  					; Undef	
	B	swi						; Software interrupt
	B	prefetch				; Prefetch Abort
	B	data					; Data Abort
	NOP							; Reserved
	B	irq						; Irq
	B	fiq						; Fiq



reset	

;Part 1
;***************************************************************
;disable interrupts in CPU and switch to SVC32 mode

	MRS	r0, cpsr
	BIC	r0, r0, #MASK_MODE
	ORR	r0, r0, #MODE_SVC32
	ORR 	r0, r0, #I_BIT
	ORR 	r0, r0, #F_BIT
	MSR	cpsr_c, r0

	LDR	r2, =ARM7_INTMASK			 ;R2->interrupt controller
	MVN	r1, #0						 ;&FFFFFFFF
	STR	r1, [r2]					 ;disable all interrupt soucres

	LDR	r2, =ARM7_INTPEND			 ;R2->interrupt pend register.
	MOV	r1, #0						 ;&FFFFFFFF
	STR	r1, [r2]					 ;clear all interrupt flags.


;Part 2
;****************************************************************
;Initalize the memory as followa:
;	FLASH			@ 0  ~ 8 M
;	SDRAM			@ 8  ~ 16M

	LDR	r2, =ARM7_MEMMAP			 
	LDR	r1, =0x08080800				;8M flash form address 0x00000000,8M sdram form 0x08000000		 
	STR	r1, [r2]
	
;Part 3
;***********************************************************************
	
;Set stack pointer & jump to c function

	; Put the stack base address into R0
	LDR     r0, =(0x1000000-0x10000)
	; Add the stack size to get the top of the stack in R0
	ADD	r0,r0,#0x6000
    SUB	r0,r0,#4

    ; stack IRQ
    MOV     r3,#2_11010010
    MSR     CPSR_c,r3		
    MOV     r13,r0			

    ; stack  ABORT
    SUB     r0,r0,#0x1000
    MOV     r3,#2_11010111
    MSR     CPSR_c,r3		
    MOV     r13,r0			

    ; stack UNDEF 
    SUB     r0,r0,#0x1000
    MOV     r3,#2_11011011
    MSR     CPSR_c,r3		
    MOV     r13,r0			

    ; stack FIQ 
    SUB     r0,r0,#0x1000
    MOV     r3,#2_11010001
    MSR     CPSR_c,r3		
    MOV     r13,r0			

    ; stack SYSTEM(USER)
    SUB     r0,r0,#0x1000
    MOV     r3,#2_11011111
    MSR     CPSR_c,r3		
    MOV     r13,r0		
    
    ; stack SVC
    SUB     r0,r0,#0x1000
    MOV     r3,#2_11010011
    MSR     CPSR_c,r3
	MOV	r13,r0

	IMPORT	loadkernel
	LDR		pc, =loadkernel 
	
    EXPORT  __user_initial_stackheap

__user_initial_stackheap    
        LDR     r0,=bottom_of_heap
        MOV     pc,lr		

		AREA	|C$$data|
		
bottom_of_heap
	%	4		
	
        END

⌨️ 快捷键说明

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