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

📄 arm.c

📁 一个基于ARM9的操作系统, 实现了很多的功能,包括内存管理,进程创建等
💻 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 + -