summaryrefslogtreecommitdiffstats
path: root/main/uclibc/0002-Make-use-of-macros-from-sys-asm.h-in-crt1.S.patch
blob: 9f04a3ae6e38b34f5d4a0e12af42da787ef4fb6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
From 2911103dd4a03bbd3aad11eddfce524a5c9ba9b3 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 22 Jan 2010 13:00:20 +0100
Subject: [PATCH 2/9] Make use of macros from sys/asm.h in crt1.S

Needed for mips nptl to boot once again.
(cherry picked from commit 9c343fd4030dcd7a52616f365893177dded50346)

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
 libc/sysdeps/linux/mips/crt1.S |   46 +++++++++++----------------------------
 1 files changed, 13 insertions(+), 33 deletions(-)

diff --git a/libc/sysdeps/linux/mips/crt1.S b/libc/sysdeps/linux/mips/crt1.S
index e851d52..6a80412 100644
--- a/libc/sysdeps/linux/mips/crt1.S
+++ b/libc/sysdeps/linux/mips/crt1.S
@@ -85,29 +85,10 @@
 
 __start:
 #ifdef __PIC__
-#if _MIPS_SIM == _MIPS_SIM_ABI32
-	.frame	sp, 24, sp
-        .set noreorder
-	move $0, $31		/* Save old ra.  */
-	bal 10f			/* Find addr of cpload.  */
-        nop
-10:
-	.cpload $31
-	move $31, $0
-	.set reorder
-	.cprestore 16
-#else
-	move $0, $31; /* Save old ra.  */
-	.set noreorder
-	bal 10f /* Find addr of .cpsetup.  */
-	nop
-10:
-	.set reorder
-	.cpsetup $31, $25, 10b
-	move $31, $0
-#endif
+	SETUP_GPX($0)
+	SETUP_GPX64($25,$0)
 #else
-	la $28, _gp             /* Setup GP correctly if we're non-PIC.  */
+	PTR_LA $28, _gp             /* Setup GP correctly if we're non-PIC.  */
 	move $31, $0
 #endif
 
@@ -118,18 +99,18 @@ __start:
 	/* Allocate space on the stack for seven arguments and
 	 * make sure the stack is aligned to double words (8 bytes) */
 
+	and $29, -2 * SZREG
+
 #if _MIPS_SIM == _MIPS_SIM_ABI32
-	and $29, -2 * 4
-	subu $29, 32
-	la $7, _init		/* init */
-	la $8, _fini
-	sw $8, 16($29)		/* fini */
-	sw $2, 20($29)		/* rtld_fini */
-	sw $29, 24($29)		/* stack_end */
-#else
-	and $29, -2 * PTRSIZE
+	PTR_SUBIU $29, 32
+#endif
 	PTR_LA $7, _init		/* init */
-	PTR_LA $8, _fini		/* fini */
+	PTR_LA $8, _fini
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+	PTR_S $8, 16($29)		/* fini */
+	PTR_S $2, 20($29)		/* rtld_fini */
+	PTR_S $29, 24($29)		/* stack_end */
+#else
 	move $9, $2		/* rtld_fini */
 	move $10, $29		/* stack_end */
 #endif
@@ -148,4 +129,3 @@ __data_start:
 	.weak data_start
 	data_start = __data_start
 
-
-- 
1.6.6.1