microblaze: Save and restore first unused vector
Use one memory space to detect little/big endian platforms. The first unused address(0x28) is used instead 0x0 address (reset vectors). Detection rewrited reset vector setup from first stage bootloader. Workflow: 1. Store 0x28 to r7 2. Do little/big endian test 3. Restore r7 to 0x28 Signed-off-by: Michal Simek <monstr@monstr.eu>
This commit is contained in:
		
							parent
							
								
									86c1b2a86b
								
							
						
					
					
						commit
						f3090fce77
					
				|  | @ -51,8 +51,10 @@ _start: | |||
| 	 * 4b) BIG endian - r10 contains 0x0 because 0x2 offset is on addr 0x3 | ||||
| 	 */ | ||||
| 	addik	r6, r0, 0x2 /* BIG/LITTLE endian offset */ | ||||
| 	swi	r6, r0, 0 | ||||
| 	lbui	r10, r0, 0 | ||||
| 	lwi	r7, r0, 0x28 | ||||
| 	swi	r6, r0, 0x28 /* used first unused MB vector */ | ||||
| 	lbui	r10, r0, 0x28 /* used first unused MB vector */ | ||||
| 	swi	r7, r0, 0x28 | ||||
| 
 | ||||
| 	/* add opcode instruction for 32bit jump - 2 instruction imm & brai */ | ||||
| 	addi	r2, r0, 0xb0000000	/* hex b000 opcode imm */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue