diff options
Diffstat (limited to 'cpu/mpc512x')
| -rw-r--r-- | cpu/mpc512x/start.S | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/cpu/mpc512x/start.S b/cpu/mpc512x/start.S index 46c5efa05..d26b61707 100644 --- a/cpu/mpc512x/start.S +++ b/cpu/mpc512x/start.S @@ -65,7 +65,7 @@  /*   * Set up GOT: Global Offset Table   * - * Use r14 to access the GOT + * Use r12 to access the GOT   */  	START_GOT  	GOT_ENTRY(_GOT2_TABLE_) @@ -486,6 +486,7 @@ relocate_code:  	mr	r9,  r4		/* Save copy of Global Data pointer */  	mr	r10, r5		/* Save copy of Destination Address */ +	GET_GOT  	mr	r3,  r5				/* Destination Address */  	lis	r4, CONFIG_SYS_MONITOR_BASE@h		/* Source      Address */  	ori	r4, r4, CONFIG_SYS_MONITOR_BASE@l @@ -504,7 +505,7 @@ relocate_code:  	sub	r15, r10, r4  	/* First our own GOT */ -	add	r14, r14, r15 +	add	r12, r12, r15  	/* then the one used by the C code */  	add	r30, r30, r15 @@ -584,7 +585,7 @@ relocate_code:  in_ram:  	/* -	 * Relocation Function, r14 point to got2+0x8000 +	 * Relocation Function, r12 point to got2+0x8000  	 *  	 * Adjust got2 pointers, no need to check for 0, this code  	 * already puts a few entries in the table. @@ -648,6 +649,8 @@ clear_bss:  	 */  	.globl	trap_init  trap_init: +	mflr	r4		/* save link register */ +	GET_GOT  	lwz	r7, GOT(_start)  	lwz	r8, GOT(_end_of_vectors) @@ -655,8 +658,6 @@ trap_init:  	cmplw	0, r7, r8  	bgelr			/* return if r7>=r8 - just in case */ - -	mflr	r4		/* save link register */  1:  	lwz	r0, 0(r7)  	stw	r0, 0(r9) |