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

📄 rominit.s

📁 MPC8260的vxworks BSP源码
💻 S
📖 第 1 页 / 共 2 页
字号:
	addis   r5,0,0x692E     /*xiyong: EB2E */	ori     r5,r5,0xB452        lis     r6, HIADJ (M8260_PSDMR (INTERNAL_MEM_MAP_ADDR))        addi    r6, r6, LO (M8260_PSDMR (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6) 	addis   r0,0,0 	/* do a single write to an arbitrary location */	addi    r5,0,0x00FF      /* Load 0x000000FF into r5 */	stb     r5,0(r0)         /* Write 0xFF to address 0 - bits [24-31] */	/* issue a "CBR Refresh" command to SDRAM */	addis   r5,0,0x492E   /* xiyong: CB2E */	ori     r5,r5,0xB452	stw	r5, 0 (r6) 	/* Loop 8 times, writing 0xFF to address 0 */	addi	r7,0,0x0008	mtspr	9,r7             /* Load spr CTR with 8 */	addi 	r8,0,0x00FF      /* Load 0x000000FF into r8 */ SdramWrLoop: 	stb  	r8,0(r0)        	/* Write 0xFF to address 0 */	bc   	16,0,SdramWrLoop	/* Decrement CTR, and possibly branch */ 	/* issue a "Mode Register Write" command to SDRAM */	addis   r5,0,0x592E    /*xiyong: DB2E */ 	ori     r5,r5,0xB452	stw	r5, 0 (r6) 	/* do a single write to an arbitrary location */	addi    r8,0,0x00FF      /* Load 0x000000FF into r8 */	stb     r8,0(r0)         /* Write 0xFF to address 0 - bits [24-31] */	/* enable refresh services and put SDRAM into normal operation */        /* this was changed for PILOT but will work for the ENG as well */		addis   r5,0,0x412E    /*xiyong :C32EB452*/	ori     r5,r5,0xB452	stw	r5, 0 (r6)	lis	r4, HIADJ (INTERNAL_MEM_MAP_ADDR+0x10000)	/*xiyong here: */		addi	r4, r4, LO (INTERNAL_MEM_MAP_ADDR+0x10000)#ifdef INCLUDE_LOC_SDRAM	/*xiyong:cpm local sdram use cs3 */  	   addi     r5,0,0x0010      /* load 0x10 or 16 */   stb      r5,0x01a4(r4)      /* store byte - bits[24-31]  reg: LSTR*/    addis    r8,0,0x4000      /* R3 holds the value temporarily xiyong:base 0x4000000*/ /*  lis      r8, HIADJ (LOC_BASE_ADRS) */   ori      r8,r8,0x1861    addis    r5,0,0xFe00     /* R5 holds the value temporarily  xiyong:*/   ori      r5,r5,0x2cc0    stw        r5,0x011C(r4) 	/* xiyong: OR3 */   stw        r8,0x0118(r4)	/* xiyong: BR3 */    addis    r8,0,0x696a   ori      r8,r8,0x2562   stw      r8,0x0194 (r4)    addis    r2,0,0x4000   addi     r8,0,0xFFFF   stb      r8,0(r2)         /* Write 0xFF to address 0x40000000 */   addis    r8,0,0x496a   ori      r8,r8,0x2562   stw      r8,0x0194 (r4)    addis r6,0,0   ori   r6,r6,8   mtspr 9,r6           /* Load CTR with 8. */    addi  r8,0,0xFFFF      /* Load 0xFs into r8 */ locSdramWrLoop:     stb   r8,0(r2)         /* Write 0 to address 0x40000000 */    bc    16,0,locSdramWrLoop /* Decrement CTR, then branch if the decremented CTR */                          /* is not equal to 0 */   addis    r8,0,0x596a   ori      r8,r8,0x2562   stw      r8,0x0194 (r4)    addi     r8,0,0xFFFF   stb      r8,0(r2)         /* Write 0xFF to address 0x40000000 */    addis    r8,0,0x416A   ori      r8,r8,0x2562   stw      r8,0x0194 (r4) #endif /* INCLUDE_LOC_SDRAM */#ifdef  BOOT_FILE_ROM                    	/* Map the bank 2 to the flash area */        /* CS2 is 4Mbytes flash */        lis     r5, HIADJ (0XFF800954)        addi    r5, r5, LO (0XFF800954)                    	lis	r6, HIADJ (M8260_OR2 (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_OR2 (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)		lis     r5, HIADJ (0X70001001)        addi    r5, r5, LO (0X70001001)	lis	r6, HIADJ (M8260_BR2 (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_BR2 (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)#else        /* CS2 is 512kbytes flash */        lis     r5, HIADJ (0XFF800856)        addi    r5, r5, LO (0XFF800856)                    	lis	r6, HIADJ (M8260_OR2 (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_OR2 (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)		lis     r5, HIADJ (0X70000801)        addi    r5, r5, LO (0X70000801)	lis	r6, HIADJ (M8260_BR2 (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_BR2 (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)#endif /* INCLUDE_FLASH_CS2 */		/* cubit-3 use CS4,xiyong*/        lis     r5, HIADJ (0XFFFF80f6)        addi    r5, r5, LO (0XFFFF80f6)                    	lis	r6, HIADJ (M8260_OR4 (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_OR4 (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)		lis     r5, HIADJ (0X50000801)  /* BASE ADDRESS:0x50000000, 8 bit port */        addi    r5, r5, LO (0X50000801)	lis	r6, HIADJ (M8260_BR4 (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_BR4 (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)        /* Zero-out registers: SPRGs */ 	addis    r0,0,0	isync				/* synchronize */        mtspr   272,r0        mtspr   273,r0        mtspr   274,r0        mtspr   275,r0	isync				/* synchronize */         /* zero-out the Segment registers */         mtsr    0,r0        isync        mtsr    1,r0        isync        mtsr    2,r0        isync        mtsr    3,r0        isync        mtsr    4,r0        isync        mtsr    5,r0        isync        mtsr    6,r0        isync        mtsr    7,r0        isync        mtsr    8,r0        isync        mtsr    9,r0        isync        mtsr    10,r0        isync        mtsr    11,r0        isync        mtsr    12,r0        isync        mtsr    13,r0        isync        mtsr    14,r0        isync        mtsr    15,r0        isync 	/* invalidate DBATs: clear VP and VS bits */	mtspr   536,r0   /* Data bat register 0 upper */	isync	mtspr   538,r0   /* Data bat register 1 upper */	isync	mtspr   540,r0   /* Data bat register 2 upper */	isync	mtspr   542,r0   /* Data bat register 3 upper */	isync		/* invalidate IBATs: clear VP and VS bits */	mtspr   528,r0   /* Instruction bat register 0 upper */	isync	mtspr   530,r0   /* Instruction bat register 1 upper */	isync	mtspr   532,r0   /* Instruction bat register 2 upper */	isync	mtspr   534,r0   /* Instruction bat register 3 upper */	isync	/* invalidate TLBs: loop on all TLB entries using r7 as an index */	addi     r0,0,0x0020	mtspr    9,r0			/* Load CTR with 32 */	addi     r7,0,0            	/* Use r7 as the tlb index */ tlb_write_loop: 	tlbie    r7                	/* invalidate the tlb entry */	sync	addi     r7,r7,0x1000          	/* increment the index */	bc       16,0,tlb_write_loop   	/* Decrement CTR, then branch if the */				       	/* decremented CTR is not equal to 0 */        /* Turn off data and instruction cache control bits */         mfspr   r7, HID0        isync	sync				/* synchronize */	andi.	r7,r7,0x3FFF   		/* Clear DCE and ICE bits */	mtspr	HID0,r7        isync	sync				/* synchronize */        /*****************************************************************/        /* added by wangyan , open led ,mod by xiyong,we have four led, */        /*        lis     r5, HIADJ (0X00000000)        addi    r5, r5, LO (0X00000000)                    	lis	r6, HIADJ (M8260_PPARC (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_PPARC (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)		lis     r5, HIADJ (0X00000000)        addi    r5, r5, LO (0X00000000)	lis	r6, HIADJ (M8260_PSORC (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_PSORC (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)        lis     r5, HIADJ (0X00000000)        addi    r5, r5, LO (0X00000000)                    	lis	r6, HIADJ (M8260_PODRC (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_PODRC (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)		lis     r5, HIADJ (0Xf0000000)        addi    r5, r5, LO (0Xf0000000)	lis	r6, HIADJ (M8260_PDIRC (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_PDIRC (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6)        lis     r5, HIADJ (0Xa0000000)        addi    r5, r5, LO (0Xa0000000)	lis	r6, HIADJ (M8260_PDATC (INTERNAL_MEM_MAP_ADDR))		addi	r6, r6, LO (M8260_PDATC (INTERNAL_MEM_MAP_ADDR))	stw	r5, 0 (r6) 	*/	/* two led on ,two led off */        /**********************************************************/                      /* initialize the stack pointer */	lis	sp, HIADJ(STACK_ADRS)	addi	sp, sp, LO(STACK_ADRS)		/* go to C entry point */	addi	sp, sp, -FRAMEBASESZ		/* get frame stack */	/* 	 * calculate C entry point: routine - entry point + ROM base 	 * routine	= romStart	 * entry point	= romInit	= R7	 * ROM base	= ROM_TEXT_ADRS = R8	 * C entry point: romStart - R7 + R8 	 */        lis     r7, HIADJ(romInit)        addi    r7, r7, LO(romInit)         lis     r8, HIADJ(ROM_TEXT_ADRS)        addi    r8, r8, LO(ROM_TEXT_ADRS)         lis	r6, HIADJ(romStart)	        addi	r6, r6, LO(romStart)	/* load R6 with C entry point */	sub	r6, r6, r7		/* routine - entry point */	add	r6, r6, r8 		/* + ROM base */	mtspr	LR, r6				/* save destination address*/						/* into LR register */	blr				/* jump to the C entry point */

⌨️ 快捷键说明

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