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

📄 nand_ldrinit.s

📁 Boot code for ADM5120 with serial console for Edimax router.
💻 S
字号:
/*****************************************************************************;;   (C) Unpublished Work of ADMtek Incorporated.  All Rights Reserved.;;       THIS WORK IS AN UNPUBLISHED WORK AND CONTAINS CONFIDENTIAL,;       PROPRIETARY AND TRADESECRET INFORMATION OF ADMTEK INCORPORATED.;       ACCESS TO THIS WORK IS RESTRICTED TO (I) ADMTEK EMPLOYEES WHO HAVE A;       NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF THEIR ASSIGNMENTS;       AND (II) ENTITIES OTHER THAN ADMTEK WHO HAVE ENTERED INTO APPROPRIATE;       LICENSE AGREEMENTS.  NO PART OF THIS WORK MAY BE USED, PRACTICED,;       PERFORMED, COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED,;       ABBRIDGED, CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST,;       TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF ADMTEK.;       ANY USE OR EXPLOITATION OF THIS WORK WITHOUT AUTHORIZATION COULD;       SUBJECT THE PERPERTRATOR TO CRIMINAL AND CIVIL LIABILITY.;;------------------------------------------------------------------------------;;    Project : ADM5120;    Creator : ;    File    : ldrinit.S;    Abstract: ;;Modification History:; ;;*****************************************************************************/#include <mips.h>#include <mips4kc.h>#include <asm.h>#include <adm5120.h>#define SYS_STACK_SIZE			0x4000.textLEAF(_ldrinit)	.set noreorder	/*  Disable interrupt  */	mfc0	v0, CP0_STATUS_REG	and		v0, CP0_STATUS_BEV_BIT	mtc0	v0, CP0_STATUS_REG		// Jump to SDRAM 	la		t0, 2f					jr		t0	nop							/*	Branch delay slot  */2:				// We are in SDRAM now	/* clear BSS section  */	la		a0, _C_LABEL(__bss_start)	la		a1, _C_LABEL(_end)	subu	a1, a1, a0		/*  Clear BSS Loop */3:#ifndef RTL_SIMULATION	sw		zero, 0(a0)	sw		zero, 4(a0)	subu	a1, a1, 4*4			// substract the length to be zeroed	sw		zero, 8(a0)	sw		zero, 12(a0)	bgtz	a1, 3b	addu	a0, a0, 4*4			// next destination address // Branch delay slot#endif		/*  Load gp  */	la		gp, _C_LABEL(_gp)		/*  Initialize stack  */	la		t0, _C_LABEL(_end)	li		t1, SYS_STACK_SIZE	add		sp, t0, t1		/* Align sp to 16byte boundry*/	li		t0, ~0xf	and		sp, sp, t0		/* Store the first free memory address */	addu	t0, sp, 0x10	la		t1, _C_LABEL(_heap_h)	sw		t0, 0(t1)		// Call c_entry and never returned	jal		_C_LABEL(c_entry)	nop							// Branch delay slot		/*  Never Reached  */1:		b		1b	nop			.set reorderEND(_ldrinit)/*  Get program counter  */LEAF(_get_pc)	.set noreorder	jr		ra	move	v0, ra				/*	Branch delay slot */	.set reorderEND(_get_pc)LEAF(_icache_sync_all)	.set noreorder	mtc0	zero, CP0_TAGLO_REG	mtc0	zero, CP0_TAGHI_REG	li		a0, MEM_KSEG0_BASE	addiu	a1, a0, CPU_ICACHE_DFE_SIZE - 0x10*8	1:	cache	ICACHE_INDEX_STORETAG, 0x00(a0)	cache	ICACHE_INDEX_STORETAG, 0x10(a0)	cache	ICACHE_INDEX_STORETAG, 0x20(a0)	cache	ICACHE_INDEX_STORETAG, 0x30(a0)	cache	ICACHE_INDEX_STORETAG, 0x40(a0)	cache	ICACHE_INDEX_STORETAG, 0x50(a0)	cache	ICACHE_INDEX_STORETAG, 0x60(a0)	cache	ICACHE_INDEX_STORETAG, 0x70(a0)	bne		a0, a1, 1b	addiu	a0, a0, 0x10*8					/* Branch delay slot */		jr		ra	nop										/* Branch delay slot */		.set reorderEND(_icache_sync_all)

⌨️ 快捷键说明

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