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

📄 callsrv.s

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 S
字号:
/* ******************************************************
 * @copyright(c) 版权所有,1998-2003微逻辑。保留所有权利。
 * ******************************************************
 * 
 * ******************************************************
 * 文件说明:系统服务陷阱功能
 * 版本号:1.0.0
 * 开发时期:2001-04-04
 * 作者:李林
 * 修改记录:
 * *******************************************************
 */

.nolist
.include "linkage.inc"
.list

.extern    _Sys_EntryTry

	.text
    @ DWORD WINAPI CALL_SERVER( CALLTRAP * lpcs, ... );
	@ 定义在文件eapisrv.h
    @ r0 = lpcs
	@ r1 = arg1
	@ r2 = arg2
	@ ...

    ENTRY CALL_SERVER
	ldr r12, [r0]
	ldr r0,  [r0,#0x4]
    swi 0


    @LRESULT WINAPI Sys_ImplementCallBack( LPCALLBACKDATA, ... );
    @LRESULT WINAPI Sys_ImplementCallBack4( LPCALLBACKDATA, ... );
    ENTRY Sys_ImplementCallBack
	ldr  r12, =0xF00404B8
	swi 0

    ENTRY Sys_ImplementCallBack4
	ldr  r12, =0xF00404B9
	swi 0

    ENTRY Sys_CaptureException    

    @ copy to EXCEPTION_CONTEXT struct
	mov    r12, #0
	add    r1, pc, #ExceptionRet-(.+8)
	stmfd  sp!, {r1}		@ return address	
	stmfd  sp!, {r4 - r12, sp, lr}

	@ call sys api
	mov  r0, sp	
	stmfd sp!, {lr}
    bl   _Sys_CaptureException
    ldmfd sp!, {lr}
   
    add  sp, sp, #48		@ popup EXCEPTION_CONTEXT struct 
    mov   pc, lr			@ common  return 

ExceptionRet:    
    mov   pc, lr			@ common  return 


⌨️ 快捷键说明

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