ipl_startup2.c

来自「i.mx31 3DS平台Nandboot引导程序源码」· C语言 代码 · 共 57 行

C
57
字号
#include <string.h>void *memcpy(void *dest, const void *src, size_t n);typedef unsigned short u16;typedef unsigned int u32;typedef unsigned char u8;/* These variable come from linker */extern u32 __end_ipl_startup; extern u32 __start_ipl_main; extern u32 __end_ipl_main;extern u32 main(void);//#define IPL_DEBUG#ifdef IPL_DEBUG/* Debug before serial is available *//* Debug message buffer */u32     *dbg = (u32 *)0x80010000;       #define DBG(_msg, _param)       \        *dbg++ = (u32)_msg;    \        *dbg++ = (u32)_param;#else#define DBG(_msg, _param)  do {} while(0)#endifu32 copy_jump_main(){        volatile u16     *src;        volatile u16     *dst;        u32     len;        u32     (*fptr)(void);        u32     ret;        volatile int tmp;        src = (u16 *)&__end_ipl_startup;        dst = (u16 *)&__start_ipl_main;        len = (&__end_ipl_main - &__start_ipl_main) * 2;        DBG(1, src);        DBG(2, dst);        DBG(3, &__end_ipl_main);        DBG(4, len);       while (len-- > 0)        {                *dst++ = *src++;        }         asm("ldr r1, =main");        asm("blx r1");        /* Should never return here! */}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?