As we discussed in the last meeting, we reset the ports tree and began from scratch, even though this change involves porting all the packages. Starting small and growing gradually, this approach will reduce build times and consequently lower energy consumption in a world affected by climate change. We will add new ports as users needs arise; ok h3artbl33d@

This commit is contained in:
purplerain 2024-05-26 03:08:12 +00:00
parent 83a0aaf92c
commit 9a3af55370
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
59377 changed files with 98673 additions and 4712155 deletions

View file

@ -0,0 +1,369 @@
Index: src/aarch64/sysv.S
--- src/aarch64/sysv.S.orig
+++ src/aarch64/sysv.S
@@ -78,6 +78,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cfi_startproc
CNAME(ffi_call_SYSV):
+ bti c
/* Sign the lr with x1 since that is where it will be stored */
SIGN_LR_WITH_REG(x1)
@@ -138,78 +139,142 @@ CNAME(ffi_call_SYSV):
/* Save the return value as directed. */
adr x5, 0f
and w4, w4, #AARCH64_RET_MASK
- add x5, x5, x4, lsl #3
+ add x5, x5, x4, lsl #4
br x5
- /* Note that each table entry is 2 insns, and thus 8 bytes.
+ /* Note that each table entry is 4 insns, and thus 16 bytes.
For integer data, note that we're storing into ffi_arg
and therefore we want to extend to 64 bits; these types
have two consecutive entries allocated for them. */
.align 4
-0: b 99f /* VOID */
+0: bti j /* VOID */
+ b 99f
+ nop
nop
-1: str x0, [x3] /* INT64 */
+1: bti j /* INT64 */
+ str x0, [x3]
b 99f
-2: stp x0, x1, [x3] /* INT128 */
+ nop
+2: bti j /* INT128 */
+ stp x0, x1, [x3]
b 99f
+ nop
3: brk #1000 /* UNUSED */
b 99f
+ nop
+ nop
4: brk #1000 /* UNUSED */
b 99f
+ nop
+ nop
5: brk #1000 /* UNUSED */
b 99f
+ nop
+ nop
6: brk #1000 /* UNUSED */
b 99f
+ nop
+ nop
7: brk #1000 /* UNUSED */
b 99f
-8: st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] /* S4 */
+ nop
+ nop
+8: bti j /* S4 */
+ st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3]
b 99f
-9: st3 { v0.s, v1.s, v2.s }[0], [x3] /* S3 */
+ nop
+9: bti j /* S3 */
+ st3 { v0.s, v1.s, v2.s }[0], [x3]
b 99f
-10: stp s0, s1, [x3] /* S2 */
+ nop
+10: bti j /* S2 */
+ stp s0, s1, [x3]
b 99f
-11: str s0, [x3] /* S1 */
+ nop
+11: bti j
+ str s0, [x3] /* S1 */
b 99f
-12: st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] /* D4 */
+ nop
+12: bti j /* D4 */
+ st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3]
b 99f
-13: st3 { v0.d, v1.d, v2.d }[0], [x3] /* D3 */
+ nop
+13: bti j /* D3 */
+ st3 { v0.d, v1.d, v2.d }[0], [x3]
b 99f
-14: stp d0, d1, [x3] /* D2 */
+ nop
+14: bti j /* D2 */
+ stp d0, d1, [x3]
b 99f
-15: str d0, [x3] /* D1 */
+ nop
+15: bti j /* D1 */
+ str d0, [x3]
b 99f
-16: str q3, [x3, #48] /* Q4 */
nop
-17: str q2, [x3, #32] /* Q3 */
+16: bti j /* Q4 */
+ str q3, [x3, #48]
nop
-18: stp q0, q1, [x3] /* Q2 */
+ nop
+17: bti j /* Q3 */
+ str q2, [x3, #32]
+ nop
+ nop
+18: bti j /* Q2 */
+ stp q0, q1, [x3]
b 99f
-19: str q0, [x3] /* Q1 */
+ nop
+19: bti j /* Q1 */
+ str q0, [x3]
b 99f
-20: uxtb w0, w0 /* UINT8 */
+ nop
+20: bti j /* UINT8 */
+ uxtb w0, w0
str x0, [x3]
+ nop
21: b 99f /* reserved */
nop
-22: uxth w0, w0 /* UINT16 */
+ nop
+ nop
+22: bti j /* UINT16 */
+ uxth w0, w0
str x0, [x3]
+ nop
23: b 99f /* reserved */
nop
-24: mov w0, w0 /* UINT32 */
+ nop
+ nop
+24: bti j /* UINT32 */
+ mov w0, w0
str x0, [x3]
+ nop
25: b 99f /* reserved */
nop
-26: sxtb x0, w0 /* SINT8 */
+ nop
+ nop
+26: bti j /* SINT8 */
+ sxtb x0, w0
str x0, [x3]
+ nop
27: b 99f /* reserved */
nop
-28: sxth x0, w0 /* SINT16 */
+ nop
+ nop
+28: bti j /* SINT16 */
+ sxth x0, w0
str x0, [x3]
+ nop
29: b 99f /* reserved */
nop
-30: sxtw x0, w0 /* SINT32 */
+ nop
+ nop
+30: bti j /* SINT32 */
+ sxtw x0, w0
str x0, [x3]
+ nop
31: b 99f /* reserved */
nop
+ nop
+ nop
/* Return now that result has been populated. */
99:
@@ -246,6 +311,7 @@ CNAME(ffi_call_SYSV):
.align 4
CNAME(ffi_closure_SYSV_V):
cfi_startproc
+ bti c
SIGN_LR
stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
@@ -270,6 +336,7 @@ CNAME(ffi_closure_SYSV_V):
.align 4
cfi_startproc
CNAME(ffi_closure_SYSV):
+ bti c
SIGN_LR
stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
@@ -299,74 +366,136 @@ CNAME(ffi_closure_SYSV):
/* Load the return value as directed. */
adr x1, 0f
and w0, w0, #AARCH64_RET_MASK
- add x1, x1, x0, lsl #3
+ add x1, x1, x0, lsl #4
add x3, sp, #16+CALL_CONTEXT_SIZE
br x1
- /* Note that each table entry is 2 insns, and thus 8 bytes. */
+ /* Note that each table entry is 4 insns, and thus 16 bytes. */
.align 4
-0: b 99f /* VOID */
+0: bti j /* VOID */
+ b 99f
nop
-1: ldr x0, [x3] /* INT64 */
+ nop
+1: bti j /* INT64 */
+ ldr x0, [x3]
b 99f
-2: ldp x0, x1, [x3] /* INT128 */
+ nop
+2: bti j /* INT128 */
+ ldp x0, x1, [x3]
b 99f
+ nop
3: brk #1000 /* UNUSED */
nop
+ nop
+ nop
4: brk #1000 /* UNUSED */
nop
+ nop
+ nop
5: brk #1000 /* UNUSED */
nop
+ nop
+ nop
6: brk #1000 /* UNUSED */
nop
+ nop
+ nop
7: brk #1000 /* UNUSED */
nop
-8: ldr s3, [x3, #12] /* S4 */
nop
-9: ldr s2, [x3, #8] /* S3 */
nop
-10: ldp s0, s1, [x3] /* S2 */
+8: bti j /* S4 */
+ ldr s3, [x3, #12]
+ nop
+ nop
+9: bti j /* S3 */
+ ldr s2, [x3, #8]
+ nop
+ nop
+10: bti j /* S2 */
+ ldp s0, s1, [x3]
b 99f
-11: ldr s0, [x3] /* S1 */
+ nop
+11: bti j /* S1 */
+ ldr s0, [x3]
b 99f
-12: ldr d3, [x3, #24] /* D4 */
nop
-13: ldr d2, [x3, #16] /* D3 */
+12: bti j /* D4 */
+ ldr d3, [x3, #24]
nop
-14: ldp d0, d1, [x3] /* D2 */
+ nop
+13: bti j /* D3 */
+ ldr d2, [x3, #16]
+ nop
+ nop
+14: bti j /* D2 */
+ ldp d0, d1, [x3]
b 99f
-15: ldr d0, [x3] /* D1 */
+ nop
+15: bti j /* D1 */
+ ldr d0, [x3]
b 99f
-16: ldr q3, [x3, #48] /* Q4 */
nop
-17: ldr q2, [x3, #32] /* Q3 */
+16: bti j /* Q4 */
+ ldr q3, [x3, #48]
nop
-18: ldp q0, q1, [x3] /* Q2 */
+ nop
+17: bti j /* Q3 */
+ ldr q2, [x3, #32]
+ nop
+ nop
+18: bti j /* Q2 */
+ ldp q0, q1, [x3]
b 99f
-19: ldr q0, [x3] /* Q1 */
+ nop
+19: bti j /* Q1 */
+ ldr q0, [x3]
b 99f
-20: ldrb w0, [x3, #BE(7)] /* UINT8 */
+ nop
+20: bti j /* UINT8 */
+ ldrb w0, [x3, #BE(7)]
b 99f
+ nop
21: brk #1000 /* reserved */
nop
-22: ldrh w0, [x3, #BE(6)] /* UINT16 */
+ nop
+ nop
+22: bti j /* UINT16 */
+ ldrh w0, [x3, #BE(6)]
b 99f
+ nop
23: brk #1000 /* reserved */
nop
-24: ldr w0, [x3, #BE(4)] /* UINT32 */
+ nop
+ nop
+24: bti j /* UINT32 */
+ ldr w0, [x3, #BE(4)]
b 99f
+ nop
25: brk #1000 /* reserved */
nop
-26: ldrsb x0, [x3, #BE(7)] /* SINT8 */
+ nop
+ nop
+26: bti j /* SINT8 */
+ ldrsb x0, [x3, #BE(7)]
b 99f
+ nop
27: brk #1000 /* reserved */
nop
-28: ldrsh x0, [x3, #BE(6)] /* SINT16 */
+ nop
+ nop
+28: bti j /* SINT16 */
+ ldrsh x0, [x3, #BE(6)]
b 99f
+ nop
29: brk #1000 /* reserved */
nop
-30: ldrsw x0, [x3, #BE(4)] /* SINT32 */
nop
+ nop
+30: bti j /* SINT32 */
+ ldrsw x0, [x3, #BE(4)]
+ nop
+ nop
31: /* reserved */
99: ldp x29, x30, [sp], #ffi_closure_SYSV_FS
cfi_adjust_cfa_offset (-ffi_closure_SYSV_FS)
@@ -479,6 +608,7 @@ CNAME(ffi_closure_trampoline_table_page):
.align 4
CNAME(ffi_go_closure_SYSV_V):
cfi_startproc
+ bti c
stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
cfi_rel_offset (x29, 0)
@@ -502,6 +632,7 @@ CNAME(ffi_go_closure_SYSV_V):
.align 4
cfi_startproc
CNAME(ffi_go_closure_SYSV):
+ bti c
stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
cfi_rel_offset (x29, 0)