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

📄 tmonitor_entry.s

📁 T-monitor监控程序
💻 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 + -