?? ipl_startup2.c
字號:
#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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -