S3C2410启动代码详解(1)
时间:11-11
来源:互联网
点击:
来判断中断源 并根据优先级关系再跳到对应中断源的处理代码中
MACRO
$HandlerLabel HANDLER $HandleLabel //
$HandlerLabel
sub sp,sp,#4;减少sp(预留一个字,用于存放转跳地址)
stmfd sp!,{r0};把工作寄存器压入栈(lr does not push because it return to original address)
ldr r0,=$HandleLabel ;将HandleXXX的址址放入r0
ldr r0,[r0];把HandleXXX所指向的内容(也就是中断程序的入口)放入r0
str r0,[sp,#4];把中断服务程序(ISR)压入栈,保存在高一个地址预留的空间中,但SP没变。
ldmfd sp!,{r0,pc} ;用出栈的方式恢复r0的原值和为pc设定新值(也就完成了到ISR的转跳);
ADS仅支持FD(满递减)型堆栈,故只能用stmfd和ldmfd
MEND
S3C2410启动代 相关文章:
- S3C2410启动代码详解(3)(11-11)
- S3C2410启动代码详解(2)(11-11)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)