📄 stubs.c
字号:
/* -*-C-*- * * $Revision: 1.3 $ * $Author: mechavar $ * $Date: 2000/05/01 19:37:08 $ * * Copyright (c) 2000 ARM, INC. * All Rights Reserved. * * Project: BootStrap Loader * * */#include <stdarg.h>#include "uhal.h"#include "module.h"#include "gdata.h"extern int __main( void );extern const CmdTable CommandTable[];const char timestamp[] = "BootStrapLoader v1.0 " __DATE__ " " __TIME__ "";const ModuleHeader ModuleHead = { MODULE_MAGIC, /* magic field */ 0, MAJOR_VERSION, /* major version = current version */ MINOR_VERSION, /* minor version = current version */ 0, /* checksum - done later - set to 0 now */ Image$$RO$$Base, /* ro_base */ Image$$RO$$Limit, /* ro_limit */ Image$$RW$$Base, /* rw_base */ Image$$ZI$$Base, /* zi_base */ Image$$ZI$$Limit, /* zi_limit */ &ModuleHead, /* 'self' */ (StartCode)__main, /* entry */ 0, /* No init code */ 0, /* No final code */ 0, /* No service code */ "BootStrapLoader", /* title */ (char *)×tamp[0], /* help string */ CommandTable, 0, 0};__value_in_regs ServiceBlock ISE_helper( unsigned arg1, unsigned arg2, void *pFun ){ __value_in_regs ServiceBlock (*pFun2Invoke)(); pFun2Invoke = ((__value_in_regs ServiceBlock (*)(ServiceBlock))(pFun)); return( (*pFun2Invoke)(arg1, arg2) );}__value_in_regs ServiceBlock Invoke_Service_Entry(void *instantiation, void *address, ...){ va_list ap; unsigned arg1, arg2, save_r9; va_start( ap, address ); arg1 = va_arg( ap, unsigned ); arg2 = va_arg( ap, unsigned ); va_end( ap ); __asm { mov save_r9, r9 mov r9, (unsigned)instantiation mov r0, arg1 mov r1, arg2 mov r2, address bl ISE_helper, {r0-r2,r9}, {r0}, {} mov r9, save_r9 } /* This function intentionally exits without a return statement to keep the array elements returned from ISE_helper in registers */}CallBack IE_helper( unsigned arg1, unsigned arg2, void *pFun ){ CallBack (*pFun2Invoke)(); pFun2Invoke = ((CallBack (*)(CallBack))(pFun)); return( (*pFun2Invoke)(arg1, arg2) );}CallBack Invoke_Entry(void *instantiation, void *address, ...){ CallBack cb; va_list ap; unsigned arg1, arg2, save_r9; va_start( ap, address ); arg1 = va_arg( ap, unsigned ); arg2 = va_arg( ap, unsigned ); va_end( ap ); __asm { mov save_r9, r9 mov r9, (unsigned)instantiation mov r0, arg1 mov r1, arg2 mov r2, address bl IE_helper, {r0-r2,r9}, {r0}, {} mov cb, r0 mov r9, save_r9 } return( cb );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -