?? arm.c
字號:
/*
* file:
* arm.c
* description:
* implementation code depend on architecture.
*/
#define SYS_MODE 0x1f
/*
* extern functions
*/
extern void _exit_thread(int exit_code);
extern void _dbg_print(const char* format, ...);
void _thread_context_init(thread_context* context, void* proc,
void* param, unsigned int stack_top, unsigned int stack_bottom)
{
context->_cpsr= SYS_MODE;
context->_r4 = (unsigned int)_exit_thread;
context->_r5 = (unsigned int)proc;
context->_r6 = (unsigned int)param;
context->_r7 = 0;
context->_r8 = 0;
context->_r9 = 0;
context->_r10 = stack_bottom;
context->_r11 = 0;
context->_ip = 0;
context->_sp = stack_top;
context->_lr = (unsigned int)_start_thread;
}
void Isr_UndefineHandler(unsigned int addr)
{
_dbg_print("EXCEPTION : UNDEFINED INSTRUCTION !!!\n");
_dbg_print(" pc : [<%08x>]\n", addr);
while(1);
}
void Isr_SwiHandler(unsigned int addr, unsigned int swi_no)
{
_dbg_print("EXCEPTION : SOFTWARE INTERRUPT !!!\n");
_dbg_print(" pc : [<%08x>] number : %d\n", addr, swi_no);
while(1);
}
void Isr_PrefetchAbortHandler(unsigned int addr)
{
_dbg_print("EXCEPTION : PREFETCH ABORT !!!\n");
_dbg_print(" pc : [<%08x>]\n", addr);
while(1);
}
void Isr_DataAbortHandler(unsigned int addr)
{
_dbg_print("EXCEPTION : DATA ABORT !!!\n");
_dbg_print(" pc : [<%08x>]\n", addr);
while(1);
}
/* end of file */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -