📄 boot.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Copyright (C) 2004, Eyoka @ Microunit
; All Rights Reserved
;________________________________________________________________________
;
; FILENAME: boot.asm
; PROJECT: High-Resolution Video System On OMAP
; MODULE: MPU Framework
; DESCRIPTION: Initialize system stack pointers at bootup.
; TARGET CPU: ARM-925T of OMAP5910
; VERSION: 0.1
;________________________________________________________________________
;
; REVISE HISTORY
; DATE VERSION AUTHOR DESCRIPTION
; 2004-11-03 0.1 Eyoka Created.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.global _c_int00
.global __reset
.global __svc_stack
.global __und_stack
.global __abt_stack
.global __irq_stack
.global __fiq_stack
_SVC_STACK_SIZE .set 0x200
_UND_STACK_SIZE .set 0x200
_ABT_STACK_SIZE .set 0x200
_IRQ_STACK_SIZE .set 0x800
_FIQ_STACK_SIZE .set 0x200
__svc_stack .usect ".svc_stack", _SVC_STACK_SIZE, 4
__und_stack .usect ".und_stack", _UND_STACK_SIZE, 4
__abt_stack .usect ".abt_stack", _ABT_STACK_SIZE, 4
__irq_stack .usect ".irq_stack", _IRQ_STACK_SIZE, 4
__fiq_stack .usect ".fiq_stack", _FIQ_STACK_SIZE, 4
.sect ".text"
_svc_stack .word __svc_stack
_und_stack .word __und_stack
_abt_stack .word __abt_stack
_irq_stack .word __irq_stack
_fiq_stack .word __fiq_stack
_svc_size .word _SVC_STACK_SIZE
_und_size .word _UND_STACK_SIZE
_abt_size .word _ABT_STACK_SIZE
_irq_size .word _IRQ_STACK_SIZE
_fiq_size .word _FIQ_STACK_SIZE
;***********************************************
__reset ;* Reset Status: ARM is in Supervisor mode
;* IRQ & FIQ is masked(disabled) in CPSR
;***********************************************
;***********************************************
;* Set Supervisor Mode Stack Pointer(R13_SVC)
;***********************************************
LDR SP, _svc_stack
LDR R0, _svc_size
ADD SP, SP, R0
;***********************************************
;* Switch Mode to Undefined: 11011
;***********************************************
MRS R0, CPSR
BIC R0, R0, #0x1F
ORR R0, R0, #0x1B
MSR CPSR, R0
;***********************************************
;* Set Undefined Mode Stack Pointer(R13_UND)
;***********************************************
LDR SP, _und_stack
LDR R0, _und_size
ADD SP, SP, R0
;***********************************************
;* Switch Mode to Abort: 10111
;***********************************************
MRS R0, CPSR
BIC R0, R0, #0x1F
ORR R0, R0, #0x17
MSR CPSR, R0
;***********************************************
;* Set Abort Mode Stack Pointer(R13_Abort)
;***********************************************
LDR SP, _abt_stack
LDR R0, _abt_size
ADD SP, SP, R0
;***********************************************
;* Switch Mode to IRQ: 10010
;***********************************************
MRS R0, CPSR
BIC R0, R0, #0x1F
ORR R0, R0, #0x12
MSR CPSR, R0
;***********************************************
;* Set IRQ Mode Stack Pointer(R13_IRQ)
;***********************************************
LDR SP, _irq_stack
LDR R0, _irq_size
ADD SP, SP, R0
;***********************************************
;* Switch Mode to FIQ: 10001
;***********************************************
MRS R0, CPSR
BIC R0, R0, #0x1F
ORR R0, R0, #0x11
MSR CPSR, R0
;***********************************************
;* Set FIQ Mode Stack Pointer(R13_FIQ)
;***********************************************
LDR SP, _fiq_stack
LDR R0, _fiq_size
ADD SP, SP, R0
;***********************************************
;* Go to Complier's C Entry.
;***********************************************
B _c_int00
; the end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -