sparc: Solaris fixes, part 2

/bin/as seems to only understand single-digit labels
/bin/as knows nothing about .rept/.endr
This commit is contained in:
Richard Henderson
2015-01-16 11:40:33 -08:00
parent b740ab7cc9
commit d68c8aed19

View File

@@ -177,7 +177,7 @@ E(SPARC_RET_F_2)
restore restore
E(SP_V8_RET_CPLX8) E(SP_V8_RET_CPLX8)
stb %o0, [%i2+1] stb %o0, [%i2+1]
b 10f b 0f
srl %o0, 8, %o0 srl %o0, 8, %o0
E(SPARC_RET_F_1) E(SPARC_RET_F_1)
st %f0, [%i2] st %f0, [%i2]
@@ -189,7 +189,7 @@ E(SPARC_RET_F_1)
ret ret
restore restore
.align 8 .align 8
10: stb %o0, [%i2] 0: stb %o0, [%i2]
ret ret
restore restore
@@ -202,17 +202,35 @@ E(SPARC_RET_F_1)
sll %l1, 2, %l0 ! size * 4 sll %l1, 2, %l0 ! size * 4
1: sll %l1, 4, %l1 ! size * 16 1: sll %l1, 4, %l1 ! size * 16
add %l0, %l1, %l0 ! size * 20 add %l0, %l1, %l0 ! size * 20
add %o7, %l0, %o7 ! o7 = 0b + size*20 add %o7, %l0, %o7 ! o7 = 8b + size*20
jmp %o7+(2f-8b) jmp %o7+(2f-8b)
mov %i5, %g2 ! load static chain mov %i5, %g2 ! load static chain
2: 2:
.rept 0x1000
call %i1 /* The Sun assembler doesn't understand .rept 0x1000. */
nop #define rept1 \
unimp (. - 2b) / 20 call %i1; \
ret nop; \
unimp (. - 2b) / 20; \
ret; \
restore restore
.endr
#define rept16 \
rept1; rept1; rept1; rept1; \
rept1; rept1; rept1; rept1; \
rept1; rept1; rept1; rept1; \
rept1; rept1; rept1; rept1
#define rept256 \
rept16; rept16; rept16; rept16; \
rept16; rept16; rept16; rept16; \
rept16; rept16; rept16; rept16; \
rept16; rept16; rept16; rept16
rept256; rept256; rept256; rept256
rept256; rept256; rept256; rept256
rept256; rept256; rept256; rept256
rept256; rept256; rept256; rept256
cfi_endproc cfi_endproc
.size C(ffi_call_v8),. - C(ffi_call_v8) .size C(ffi_call_v8),. - C(ffi_call_v8)