d8307d
Upstream commit 1d880d4a9bf7608c2cd33bbe954ce6995f79121a
d8307d
d8307d
From: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
d8307d
Date: Wed, 12 Dec 2018 12:41:52 +0000 (-0200)
d8307d
Subject: powerpc: Add missing CFI register information (bug #23614)
d8307d
X-Git-Tag: glibc-2.29~210
d8307d
X-Git-Url: https://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=1d880d4a9bf7608c2cd33bbe954ce6995f79121a
d8307d
d8307d
powerpc: Add missing CFI register information (bug #23614)
d8307d
d8307d
Add CFI information about the offset of registers stored in the stack
d8307d
frame.
d8307d
d8307d
	[BZ #23614]
d8307d
	* sysdeps/powerpc/powerpc64/addmul_1.S (FUNC): Add CFI offset for
d8307d
	registers saved in the stack frame.
d8307d
	* sysdeps/powerpc/powerpc64/lshift.S (__mpn_lshift): Likewise.
d8307d
	* sysdeps/powerpc/powerpc64/mul_1.S (__mpn_mul_1): Likewise.
d8307d
d8307d
Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
d8307d
Reviewed-by: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
d8307d
---
d8307d
d8307d
diff --git a/sysdeps/powerpc/powerpc64/addmul_1.S b/sysdeps/powerpc/powerpc64/addmul_1.S
d8307d
index 48e3b1b..e450d6a 100644
d8307d
--- a/sysdeps/powerpc/powerpc64/addmul_1.S
d8307d
+++ b/sysdeps/powerpc/powerpc64/addmul_1.S
d8307d
@@ -34,16 +34,27 @@
d8307d
 #define N   r5
d8307d
 #define VL  r6
d8307d
 
d8307d
+#define R27SAVE  (-40)
d8307d
+#define R28SAVE  (-32)
d8307d
+#define R29SAVE  (-24)
d8307d
+#define R30SAVE  (-16)
d8307d
+#define R31SAVE  (-8)
d8307d
+
d8307d
 ENTRY_TOCLESS (FUNC, 5)
d8307d
-	std	r31, -8(r1)
d8307d
+	std	r31, R31SAVE(r1)
d8307d
 	rldicl.	r0, N, 0, 62
d8307d
-	std	r30, -16(r1)
d8307d
+	std	r30, R30SAVE(r1)
d8307d
 	cmpdi	VL, r0, 2
d8307d
-	std	r29, -24(r1)
d8307d
+	std	r29, R29SAVE(r1)
d8307d
 	addi	N, N, 3
d8307d
-	std	r28, -32(r1)
d8307d
+	std	r28, R28SAVE(r1)
d8307d
 	srdi	N, N, 2
d8307d
-	std	r27, -40(r1)
d8307d
+	std	r27, R27SAVE(r1)
d8307d
+	cfi_offset(r31, R31SAVE)
d8307d
+	cfi_offset(r30, R30SAVE)
d8307d
+	cfi_offset(r29, R29SAVE)
d8307d
+	cfi_offset(r28, R28SAVE)
d8307d
+	cfi_offset(r27, R27SAVE)
d8307d
 	mtctr	N
d8307d
 	beq	cr0, L(b00)
d8307d
 	blt	cr6, L(b01)
d8307d
@@ -199,10 +210,10 @@ L(end):	mulld	r0, r9, VL
d8307d
 	addic	r11, r11, 1
d8307d
 #endif
d8307d
 	addze	RP, r8
d8307d
-	ld	r31, -8(r1)
d8307d
-	ld	r30, -16(r1)
d8307d
-	ld	r29, -24(r1)
d8307d
-	ld	r28, -32(r1)
d8307d
-	ld	r27, -40(r1)
d8307d
+	ld	r31, R31SAVE(r1)
d8307d
+	ld	r30, R30SAVE(r1)
d8307d
+	ld	r29, R29SAVE(r1)
d8307d
+	ld	r28, R28SAVE(r1)
d8307d
+	ld	r27, R27SAVE(r1)
d8307d
 	blr
d8307d
 END(FUNC)
d8307d
diff --git a/sysdeps/powerpc/powerpc64/lshift.S b/sysdeps/powerpc/powerpc64/lshift.S
d8307d
index 8b6396e..855d6f2 100644
d8307d
--- a/sysdeps/powerpc/powerpc64/lshift.S
d8307d
+++ b/sysdeps/powerpc/powerpc64/lshift.S
d8307d
@@ -26,11 +26,15 @@
d8307d
 #define TNC      r0
d8307d
 #define U0      r30
d8307d
 #define U1      r31
d8307d
+#define U0SAVE  (-16)
d8307d
+#define U1SAVE  (-8)
d8307d
 #define RETVAL   r5
d8307d
 
d8307d
 ENTRY_TOCLESS (__mpn_lshift, 5)
d8307d
-	std	U1, -8(r1)
d8307d
-	std	U0, -16(r1)
d8307d
+	std	U1, U1SAVE(r1)
d8307d
+	std	U0, U0SAVE(r1)
d8307d
+	cfi_offset(U1, U1SAVE)
d8307d
+	cfi_offset(U0, U0SAVE)
d8307d
 	subfic	TNC, CNT, 64
d8307d
 	sldi	r7, N, RP
d8307d
 	add	UP, UP, r7
d8307d
@@ -170,8 +174,8 @@ L(cj3):	or	r10, r12, r7
d8307d
 L(cj2):	std	r10, -32(RP)
d8307d
 	std	r8, -40(RP)
d8307d
 
d8307d
-L(ret):	ld	U1, -8(r1)
d8307d
-	ld	U0, -16(r1)
d8307d
+L(ret):	ld	U1, U1SAVE(r1)
d8307d
+	ld	U0, U0SAVE(r1)
d8307d
 	mr	RP, RETVAL
d8307d
 	blr
d8307d
 END(__mpn_lshift)
d8307d
diff --git a/sysdeps/powerpc/powerpc64/mul_1.S b/sysdeps/powerpc/powerpc64/mul_1.S
d8307d
index 953ded8..cade365 100644
d8307d
--- a/sysdeps/powerpc/powerpc64/mul_1.S
d8307d
+++ b/sysdeps/powerpc/powerpc64/mul_1.S
d8307d
@@ -24,9 +24,14 @@
d8307d
 #define N   r5
d8307d
 #define VL  r6
d8307d
 
d8307d
+#define R26SAVE  (-48)
d8307d
+#define R27SAVE  (-40)
d8307d
+
d8307d
 ENTRY_TOCLESS (__mpn_mul_1, 5)
d8307d
-	std	r27, -40(r1)
d8307d
-	std	r26, -48(r1)
d8307d
+	std	r27, R27SAVE(r1)
d8307d
+	std	r26, R26SAVE(r1)
d8307d
+	cfi_offset(r27, R27SAVE)
d8307d
+	cfi_offset(r26, R26SAVE)
d8307d
 	li	r12, 0
d8307d
 	ld	r26, 0(UP)
d8307d
 
d8307d
@@ -129,7 +134,7 @@ L(end):	mulld	r0, r26, VL
d8307d
 	std	r0, 0(RP)
d8307d
 	std	r7, 8(RP)
d8307d
 L(ret):	addze	RP, r8
d8307d
-	ld	r27, -40(r1)
d8307d
-	ld	r26, -48(r1)
d8307d
+	ld	r27, R27SAVE(r1)
d8307d
+	ld	r26, R26SAVE(r1)
d8307d
 	blr
d8307d
 END(__mpn_mul_1)