📄 init.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
;Part 2
;***********************************************************************
; Set memory map
;For ARMulate do null
;Part 3
;***********************************************************************
;Set stack pointer & jump to c function
; Put the stack base address into R0
LDR r0, =(0x1400000-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 load_kernel
LDR pc, =load_kernel
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 + -