📄 tmonitor_entry.s
字号:
;/*""FILE COMMENT""*************************************************************
;* System Name : RENESAS T-Engine/micro T-Engine
;* File Name : tmonitor_entry.S
;* Version : 1.00.00
;* Contents : T-Monitor service function entry
;* Model : SH7145 micro T-Engine
;* CPU : SH7145F
;* Compiler : Renesas SH-C
;* OS : T-Kernel
;* note : The Software is being delivered to you "AS IS"
;* : and Renesas,whether explicitly or implicitly makes
;* : no warranty as to its Use or performance.
;* : RENESAS AND ITS SUPPLIER DO NOT AND CANNOT WARRANT
;* : THE PERFORMANCE OR RESULTS YOU MAY OBTAIN BY USING
;* : THE SOFTWARE. AS TO ANY MATTER INCLUDING WITHOUT
;* : LIMITATION NONINFRINGEMENT OF THIRD PARTY RIGHTS,
;* : MERCHANTABILITY, INTEGRATION, SATISFACTORY QUALITY,
;* : OR FITNESS FOR ANY PARTICULAR PURPOSE.
;*
;* Copyright (c) 2004 RENESAS TECHNOLOGY CORP. All Rights Reserved.
;* AND RENESAS SOLUTIONS CORP. All Rights Reserved.
;* history : 2006.03.27 ver.1.00.00
;*""FILE COMMENT END""*********************************************************/
.import _tm_exec_null
.import _tm_exec_getchar
.import _tm_exec_putchar
.import _tm_exec_getline
.import _tm_exec_putstring
.section TMONITORTBL,data
tm_function_table:
.data.l _tm_exec_null ;/* TM_MONITOR (0) */
.data.l _tm_exec_getchar ;/* TM_GETCHAR (1) */
.data.l _tm_exec_putchar ;/* TM_PUTCHAR (2) */
.data.l _tm_exec_getline ;/* TM_GETLINE (3) */
.data.l _tm_exec_putstring ;/* TM_PUTSTRING (4) */
.data.l _tm_exec_null ;/* TM_COMMAND (5) */
.data.l _tm_exec_null ;/* TM_READDISK (6) */
.data.l _tm_exec_null ;/* TM_WRITEDISK (7) */
.data.l _tm_exec_null ;/* TM_INFODISK (8) */
.data.l _tm_exec_null ;/* TM_EXIT (9) */
.section B,data
tm_function_retcodearea:
.res.l 1
.section P,code
.global _tm_entry
_tm_entry:
; /* save registers(R0:fncd,R2,R3:already saved) */
mov.l r1,@-r15
mov.l r4,@-r15
mov.l r5,@-r15
mov.l r6,@-r15
mov.l r7,@-r15
stc.l gbr,@-r15
sts.l pr,@-r15
sts.l macl,@-r15
sts.l mach,@-r15
; /* R0:fncd,R4,R5,R6,R6:arg in */
mov #5,r1
cmp/gt r0,r1 ;/* R0 < #5 T=1 */
bt tm_exec_call
; /* no delayed slot */
mov #0,r0
bra tm_exec_after
nop
tm_exec_call:
mov.l tm_function_tbl,r1
shll2 r0
add r0,r1
mov.l @r1,r1
jsr @r1
nop ;/* delayed slot */
tm_exec_after:
mov.l tm_function_retcode,r1
mov.l r0,@r1 ;/* r0: function retcode */
; /* restore registers */
lds.l @r15+,mach
lds.l @r15+,macl
lds.l @r15+,pr
ldc.l @r15+,gbr
mov.l @r15+,r7
mov.l @r15+,r6
mov.l @r15+,r5
mov.l @r15+,r4
mov.l @r15+,r1
mov.l @r15+,r2
mov.l @r15+,r3
rte
nop ;/* delayed slot */
.align 4
tm_function_tbl: .data.l tm_function_table
tm_function_retcode: .data.l tm_function_retcodearea
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -