Blame SOURCES/0010-gnu-efi-fix-lib-ia64-setjmp.S-IA-64-build-failure.patch

5c11e1
From 0e6995a96b0f5867c8d85fbd251cfbc295a3fc4d Mon Sep 17 00:00:00 2001
5c11e1
From: Sergei Trofimovich <slyfox@gentoo.org>
5c11e1
Date: Sun, 28 Jan 2018 16:44:21 +0000
5c11e1
Subject: [PATCH 10/25] gnu-efi: fix lib/ia64/setjmp.S IA-64 build failure
5c11e1
5c11e1
The build failed as:
5c11e1
  lib/ia64/setjmp.S:171: Error: Unknown opcode `ldf.nt1 f26=[r10],8'
5c11e1
  lib/ia64/setjmp.S:178: Error: Operand 1 of `ldf.fill.nt1' should be a floating-point register
5c11e1
5c11e1
The change syncs longjmp definition with
5c11e1
    edk2/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/setjmp.s
5c11e1
pulling in:
5c11e1
- branch in the end of function
5c11e1
- registers used wrong instruction for float restore
5c11e1
5c11e1
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
5c11e1
---
5c11e1
 lib/ia64/setjmp.S | 61 +++++++++++++++++++++++++++----------------------------
5c11e1
 1 file changed, 30 insertions(+), 31 deletions(-)
5c11e1
5c11e1
diff --git a/lib/ia64/setjmp.S b/lib/ia64/setjmp.S
5c11e1
index c806fbc82b6..bbb29d8b8f5 100644
5c11e1
--- a/lib/ia64/setjmp.S
5c11e1
+++ b/lib/ia64/setjmp.S
5c11e1
@@ -16,11 +16,11 @@ BASIS,
5c11e1
 	.globl	setjmp
5c11e1
 	.type	setjmp, @function
5c11e1
 setjmp:
5c11e1
-	alloc	loc = ar.pfs, 1, 2, 1, 0
5c11e1
+	alloc	loc0 = ar.pfs, 1, 2, 1, 0
5c11e1
 	;;
5c11e1
 	mov	r14 = ar.unat
5c11e1
 	mov	r15 = ar.bsp
5c11e1
-	add	r10 = 0x10 * 20, in0
5c11e1
+	add	r10 = 0x10*20, in0
5c11e1
 	;;
5c11e1
 	stf.spill.nta	[in0] = f2, 0x10 
5c11e1
 	st8.spill.nta	[r10] = r4, 8
5c11e1
@@ -98,29 +98,25 @@ setjmp:
5c11e1
 
5c11e1
 	.globl	longjmp
5c11e1
 	.type	longjmp, @function
5c11e1
-	.regstk
5c11e1
+	.regstk 2, 0, 0, 0
5c11e1
 longjmp:
5c11e1
-	add		r10 = 0x10 * 20 + 8*14, in0
5c11e1
-	movl		r2 = ~(((1<<14) - 1) << 16) | 3)
5c11e1
+	add		r10 = 0x10*20 + 8*14, in0
5c11e1
+	movl		r2  = ~((((1<<14) - 1) << 16) | 3)
5c11e1
 	;;
5c11e1
 	ld8.nt1		r14 = [r10], -8*2
5c11e1
 	mov		r15 = ar.bspstore
5c11e1
 	;;
5c11e1
 	ld8.nt1		r17 = [r10], -8
5c11e1
 	mov		r16 = ar.rsc
5c11e1
-	cmp.leu		p6 = r14, r15
5c11e1
+	cmp.leu		p6  = r14, r15
5c11e1
 	;;
5c11e1
 	ld8.nt1		r18 = [r10], -8
5c11e1
 	ld8.nt1		r25 = [r10], -8
5c11e1
-	and		r2 = r16, r2
5c11e1
+	and		r2  = r16, r2
5c11e1
 	;;
5c11e1
-	ldf.fill.nt1	f2 = [in0], 0x10
5c11e1
+	ldf.fill.nt1	f2  = [in0], 0x10
5c11e1
 	ld8.nt1		r24 = [r10], -8
5c11e1
-	mov		b5 = r25
5c11e1
-	;;
5c11e1
-	mov		ar.rsc = r2
5c11e1
-	ld8.nt1		r23 = [r10], -8
5c11e1
-	mov		b5 = r25
5c11e1
+	mov		b5  = r25
5c11e1
 	;;
5c11e1
 	mov		ar.rsc = r2
5c11e1
 	ld8.nt1		r23 = [r10], -8
5c11e1
@@ -137,51 +133,51 @@ _skip_flushrs:
5c11e1
 	mov		r31 = ar.rnat
5c11e1
 	loadrs
5c11e1
 	;;
5c11e1
-	ldf.fill.nt1	f4 = [in0], 0x10
5c11e1
+	ldf.fill.nt1	f4  = [in0], 0x10
5c11e1
 	ld8.nt1		r22 = [r10], -8
5c11e1
-	dep		r2 = -1, r14, 3, 6
5c11e1
+	dep		r2  = -1, r14, 3, 6
5c11e1
 	;;
5c11e1
-	ldf.fill.nt1	f5 = [in0], 0x10
5c11e1
-	ld8.nt1		f21 = [r10], -8
5c11e1
-	cmp		p6 = r2, r15
5c11e1
+	ldf.fill.nt1	f5  = [in0], 0x10
5c11e1
+	ld8.nt1		r21 = [r10], -8
5c11e1
+	cmp.ltu		p6  = r2, r15
5c11e1
 	;;
5c11e1
 	ld8.nt1		r20 = [r10], -0x10
5c11e1
 (p6)	ld8.nta		r31 = [r2]
5c11e1
-	mov		b3 = r23
5c11e1
+	mov		b3  = r23
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f16 = [in0], 0x10
5c11e1
-	ld8.fill.nt1	r7 = [r10], -8
5c11e1
-	mov		b2 = r22
5c11e1
+	ld8.fill.nt1	r7  = [r10], -8
5c11e1
+	mov		b2  = r22
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f17 = [in0], 0x10
5c11e1
-	ld8.fill.nt1	r6 = [r10], -8
5c11e1
-	mov		b1 = r21
5c11e1
+	ld8.fill.nt1	r6  = [r10], -8
5c11e1
+	mov		b1  = r21
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f18 = [in0], 0x10
5c11e1
-	ld8.fill.nt1	r5 = [r10], -8
5c11e1
-	mov		b0 = r20
5c11e1
+	ld8.fill.nt1	r5  = [r10], -8
5c11e1
+	mov		b0  = r20
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f19 = [in0], 0x10
5c11e1
-	ld8.fill.nt1	r4 = [r10], 8*13
5c11e1
+	ld8.fill.nt1	r4  = [r10], 8*13
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f20 = [in0], 0x10
5c11e1
 	ld8.nt1		r19 = [r10], 0x10
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f21 = [in0], 0x10
5c11e1
-	ldf.nt1		f26 = [r10], 8
5c11e1
+	ld8.nt1		r26 = [r10], 8
5c11e1
 	mov		ar.pfs = r19
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f22 = [in0], 0x10
5c11e1
 	ld8.nt1		r27 = [r10], 8
5c11e1
-	mov		pr = r26, -1
5c11e1
+	mov		pr  = r26, -1
5c11e1
 	;;
5c11e1
-	ldf.fill.nt1	r23 = [in0], 0x10
5c11e1
+	ldf.fill.nt1	f23 = [in0], 0x10
5c11e1
 	ld8.nt1		r28 = [r10], -17*8 - 0x10
5c11e1
 	mov		ar.lc = r27
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f24 = [in0], 0x10
5c11e1
 	ldf.fill.nt1	f25 = [in0], 0x10
5c11e1
-	mov		r8 = in1
5c11e1
+	mov		r8  = in1
5c11e1
 	;;
5c11e1
 	ldf.fill.nt1	f26 = [in0], 0x10
5c11e1
 	ldf.fill.nt1	f31 = [r10], -0x10
5c11e1
@@ -192,9 +188,12 @@ _skip_flushrs:
5c11e1
 	ldf.fill.nt1	f28 = [in0]
5c11e1
 	ldf.fill.nt1	f29 = [r10], 0x10*3 + 8*4
5c11e1
 	;;
5c11e1
-	ld8.fill.nt1	sp = [r10]
5c11e1
+	ld8.fill.nt1	sp  = [r10]
5c11e1
 	mov		ar.unat = r18
5c11e1
 	;;
5c11e1
 	mov		ar.bspstore = r14
5c11e1
 	mov		ar.rnat = r31
5c11e1
 	;;
5c11e1
+	invala
5c11e1
+	mov		ar.rsc = r16
5c11e1
+	br.ret.sptk	b0
5c11e1
-- 
5c11e1
2.15.0
5c11e1