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

📄 accesstst.s

📁 mips架构的bootloader,99左右的版本 但源代码现在没人更新了
💻 S
字号:
/************************************************************* * File: bsps/accesstst.s * Purpose: Example Ocm access routine * Author: Phil Bunce (pjb@carmel.com) * Revision History: *	980323	Start of revision history *	980323	Corrected typo. globl not global. *	980811	Fixed prob w trashing AT. *//*************************************************************This is an example ocm access routine for use with serialice1.dll.  Ocmregions do not require an access routine, but you need to provide one ifaccess to your Ocm region requires that a special procedure be followed.This example contains no special access procedure but it can be used asa template for the functions that you need to provide.  The number ofregisters that are available as temps depends on how many are saved inyour serialIce kernel (see regmap function below).  However, you mustnot use t0 and t1.  It is safest to start with t2.  Your SerialIcekernel must use the new style savearea format.  Just look for ICE_MAP.The argument 'mode' has three possible values:	0.  Read. In this case 'value' is a don't care.	1.  Write.	2.  Regmap. You must return a value that has a bit set	    for every register you are using. eg. If you are using	    registers a0..a3, and AT. Then the value you return will	    be 0x000000f2. In this case 'addr', 'sz', and 'value' are	    all don't cares.	3.  Function size. You must return the size of the function	    in bytes in v0 (not a0). This is only used in the IMON	    configuration. It is called from C, which is why it must	    have a "j ra".The argument 'sz' has three possible values:	1.  Byte operation (8-bits).	2.  Halfword operation (16-bits).	4.  Word operation (32-bits).For use with IMON, you must link it with the driver, and install it withthe addOcmRec() function. See d4101.c for an example.For use with the DLL you must convert this file into the .ocm format.See the makefile rule below:accesstst.ocm : accesstst.s	pmcc -crt0 -o accesstst accesstst.s	rdsrec -m accesstst.rec > accesstst.ocm*************************************************************/#include <mips.h>#ifndef LABEL#define LABEL _start#endif/**************************************************************  accesstst(int mode,Ulong addr,int sz, Ulong value)*                a0          a1     a2        a3       result=a0*	feprom access routine.*/	.globl LABEL	.ent LABELLABEL:	li	v0,3		# 980811	bne	a0,v0,2f	# brif not funcsize   	# must be funcsize	la	v0,9f	la	t2,LABEL	subu	v0,t2	srl	v0,2		# return value is words	j	ra		# return value must be in v0   2:	# read?	bne	a0,zero,2f	# brif not read	# read	# use sz to select one of the following:	bne	a2,1,1f	lbu	a0,(a1)	b	3f   1:	bne	a2,2,1f	lhu	a0,(a1)	b	3f   1:	# must be sz=4   	lw	a0,(a1)	b	3f   2:	# write?	li	v0,1		# 980811   	bne	a0,v0,2f	# brif not write   	# write	# use sz to select one of the following:	bne	a2,1,1f	sb	a3,(a1)	b	3f   1:	bne	a2,2,1f   	sh	a3,(a1)	b	3f   1:	# must be sz=4   	sw	a3,(a1)	b	3f   2:	# must be regmap   	li	a0,0x000004f2	# regs required by this routine				# AT,a0-a3,t2	# fall thru   3:   9:	# a subroutine return is not required	# It will be appended by the SerialIce kernel   	.end LABEL

⌨️ 快捷键说明

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