Эх сурвалжийг харах

MIPS: fix a latent bug on initialize $gp

If bal is 8 bytes aligned, the _gp will not be 8 bytes aligned.
then the following ld insntrustion generates a Adel exception.
So here make _gp be always aligned in 8 bytes.

Signed-off-by: Zhi-zhou Zhang <zhizhou.zh@gmail.com>
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Zhi-zhou Zhang 12 жил өмнө
parent
commit
0d69d918ab

+ 6 - 1
arch/mips/cpu/mips64/start.S

@@ -108,7 +108,12 @@ reset:
 	mtc0	t0, CP0_CONFIG
 #endif
 
-	/* Initialize $gp */
+	/*
+	 * Initialize $gp, force 8 byte alignment of bal instruction to forbid
+	 * the compiler to put nop's between bal and _gp. This is required to
+	 * keep _gp and ra aligned to 8 byte.
+	 */
+	.align	3
 	bal	1f
 	 nop
 	.dword	_gp