remove textrels with -fPIC/-fPIE (for android/ios)

This commit is contained in:
kub 2019-12-03 23:52:13 +01:00
parent 4f992bf541
commit 9760505eaf
10 changed files with 298 additions and 261 deletions

View file

@ -6,6 +6,7 @@
@* See COPYING file in the top-level directory.
@*
#include "../arm_features.h"
#include "../pico_int_offs.h"
.equiv PCM_STEP_SHIFT, 11
@ -65,6 +66,7 @@
.extern PicoWrite16_io
.extern m68k_comm_check
PIC_LDR_INIT()
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ -73,16 +75,16 @@
@ r0=addr[in,out], r1,r2=tmp
.macro cell_map
ands r1, r0, #0x01c000
ldrne pc, [pc, r1, lsr #12]
beq 0f @ most common?
.long 0f
.long 0f
.long 0f
.long 0f
.long 1f
.long 1f
.long 2f
.long 3f
PIC_XB(ne ,r1, lsr #12)
b 0f @ most common?
PIC_BT(0f)
PIC_BT(0f)
PIC_BT(0f)
PIC_BT(0f)
PIC_BT(1f)
PIC_BT(1f)
PIC_BT(2f)
PIC_BT(3f)
1: @ x16 cells
and r1, r0, #0x7e00 @ col
and r2, r0, #0x01fc @ row
@ -128,7 +130,7 @@ PicoReadM68k8_cell1: @ 0x220000 - 0x23ffff, cell arranged
mov r3, #0x0e0000
0:
cell_map
ldr r1, =Pico
PIC_LDR(r1, r2, Pico)
add r0, r0, r3
ldr r1, [r1, #OFS_Pico_rom] @ Pico.mcd (used everywhere)
eor r0, r0, #1
@ -141,26 +143,26 @@ PicoRead8_mcd_io:
cmp r1, #0x2000 @ a120xx?
bne PicoRead8_io
ldr r1, =Pico
PIC_LDR(r1, r2, Pico)
and r0, r0, #0x3f
ldr r1, [r1, #OFS_Pico_rom] @ Pico.mcd
cmp r0, #0x0e
ldrlt pc, [pc, r0, lsl #2]
PIC_XB(lt ,r0, lsl #2)
b m_m68k_read8_hi
.long m_m68k_read8_r00
.long m_m68k_read8_r01
.long m_m68k_read8_r02
.long m_m68k_read8_r03
.long m_m68k_read8_r04
.long m_read_null @ unused bits
.long m_m68k_read8_r06
.long m_m68k_read8_r07
.long m_m68k_read8_r08
.long m_m68k_read8_r09
.long m_read_null @ reserved
.long m_read_null
.long m_m68k_read8_r0c
.long m_m68k_read8_r0d
PIC_BT(m_m68k_read8_r00)
PIC_BT(m_m68k_read8_r01)
PIC_BT(m_m68k_read8_r02)
PIC_BT(m_m68k_read8_r03)
PIC_BT(m_m68k_read8_r04)
PIC_BT(m_read_null) @ unused bits
PIC_BT(m_m68k_read8_r06)
PIC_BT(m_m68k_read8_r07)
PIC_BT(m_m68k_read8_r08)
PIC_BT(m_m68k_read8_r09)
PIC_BT(m_read_null) @ reserved
PIC_BT(m_read_null)
PIC_BT(m_m68k_read8_r0c)
PIC_BT(m_m68k_read8_r0d)
m_m68k_read8_r00:
add r1, r1, #0x110000
ldr r0, [r1, #0x30]
@ -238,7 +240,7 @@ PicoReadM68k16_cell1: @ 0x220000 - 0x23ffff, cell arranged
mov r3, #0x0e0000
0:
cell_map
ldr r1, =Pico
PIC_LDR(r1, r2, Pico)
add r0, r0, r3
ldr r1, [r1, #OFS_Pico_rom] @ Pico.mcd
bic r0, r0, #1
@ -252,19 +254,19 @@ PicoRead16_mcd_io:
bne PicoRead16_io
m_m68k_read16_m68k_regs:
ldr r1, =Pico
PIC_LDR(r1, r2, Pico)
and r0, r0, #0x3e
ldr r1, [r1, #OFS_Pico_rom] @ Pico.mcd
cmp r0, #0x0e
ldrlt pc, [pc, r0, lsl #1]
PIC_XB(lt ,r0, lsl #1)
b m_m68k_read16_hi
.long m_m68k_read16_r00
.long m_m68k_read16_r02
.long m_m68k_read16_r04
.long m_m68k_read16_r06
.long m_m68k_read16_r08
.long m_read_null @ reserved
.long m_m68k_read16_r0c
PIC_BT(m_m68k_read16_r00)
PIC_BT(m_m68k_read16_r02)
PIC_BT(m_m68k_read16_r04)
PIC_BT(m_m68k_read16_r06)
PIC_BT(m_m68k_read16_r08)
PIC_BT(m_read_null) @ reserved
PIC_BT(m_m68k_read16_r0c)
m_m68k_read16_r00:
add r1, r1, #0x110000
ldr r0, [r1, #0x30]
@ -329,7 +331,7 @@ PicoWriteM68k8_cell1: @ 0x220000 - 0x23ffff, cell arranged
0:
mov r3, r1
cell_map
ldr r2, =Pico
PIC_LDR(r2, r1, Pico)
add r0, r0, r12
ldr r2, [r2, #OFS_Pico_rom] @ Pico.mcd
ldr r2, [r2]
@ -357,7 +359,7 @@ PicoWriteM68k16_cell1: @ 0x220000 - 0x23ffff, cell arranged
0:
mov r3, r1
cell_map
ldr r1, =Pico
PIC_LDR(r1, r2, Pico)
add r0, r0, r12
ldr r1, [r1, #OFS_Pico_rom] @ Pico.mcd
bic r0, r0, #1
@ -399,7 +401,7 @@ PicoReadS68k8_dec0: @ 0x080000 - 0x0bffff
PicoReadS68k8_dec1:
mov r3, #0x0a0000 @ + ^ / 2
0:
ldr r2, =Pico
PIC_LDR(r2, r1, Pico)
eor r0, r0, #2
ldr r2, [r2, #OFS_Pico_rom] @ Pico.mcd
movs r0, r0, lsr #1 @ +4-6 <<16
@ -431,7 +433,7 @@ m_s68k_read8_regs:
bx lr
m_s68k_read8_comm:
ldr r1, =Pico
PIC_LDR(r1, r2, Pico)
ldr r1, [r1, #OFS_Pico_rom] @ Pico.mcd
add r1, r1, #0x110000
ldrb r1, [r1, r0]
@ -444,7 +446,7 @@ m_s68k_read8_pcm:
bne m_read_null
@ must not trash r3 and r12
ldr r1, =Pico
PIC_LDR(r1, r2, Pico)
bic r0, r0, #0xff0000
ldr r1, [r1, #OFS_Pico_rom] @ Pico.mcd
mov r2, #0x110000
@ -479,7 +481,7 @@ PicoReadS68k16_dec0: @ 0x080000 - 0x0bffff
PicoReadS68k16_dec1:
mov r3, #0x0a0000 @ + ^ / 2
0:
ldr r2, =Pico
PIC_LDR(r2, r1, Pico)
eor r0, r0, #2
ldr r2, [r2, #OFS_Pico_rom] @ Pico.mcd
mov r0, r0, lsr #1 @ +4-6 <<16
@ -505,12 +507,11 @@ m_s68k_read16_regs:
mov r0, #1
b cdc_host_r
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.macro m_s68k_write8_2M_decode
ldr r2, =Pico
PIC_LDR(r2, ip, Pico)
eor r0, r0, #2
ldr r2, [r2, #OFS_Pico_rom] @ Pico.mcd
movs r0, r0, lsr #1 @ +4-6 <<16
@ -594,7 +595,7 @@ m_s68k_write8_pcm:
bxlt lr
m_s68k_write8_pcm_ram:
ldr r3, =Pico
PIC_LDR(r3, r2, Pico)
bic r0, r0, #0x00e000
ldr r3, [r3, #OFS_Pico_rom] @ Pico.mcd
mov r0, r0, lsr #1
@ -608,12 +609,11 @@ m_s68k_write8_pcm_ram:
strb r1, [r3, r0]
bx lr
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.macro m_s68k_write16_2M_decode
ldr r2, =Pico
PIC_LDR(r2, ip, Pico)
eor r0, r0, #2
ldr r2, [r2, #OFS_Pico_rom] @ Pico.mcd
mov r0, r0, lsr #1 @ +4-6 <<16
@ -694,7 +694,7 @@ m_s68k_write16_regs:
bne s68k_reg_write16
m_s68k_write16_regs_spec: @ special case
ldr r2, =Pico
PIC_LDR(r2, r0, Pico)
mov r0, #0x110000
ldr r2, [r2, #OFS_Pico_rom] @ Pico.mcd
add r0, r0, #0x00000f
@ -707,7 +707,7 @@ m_s68k_write16_regs_spec: @ special case
.global s68k_write16
s68k_read8:
ldr r3, =s68k_read8_map
PIC_LDR(r3, r2, s68k_read8_map)
bic r0, r0, #0xff000000
mov r2, r0, lsr #16
ldr r3, [r3, r2, lsl #2]
@ -718,7 +718,7 @@ s68k_read8:
bx r3
s68k_read16:
ldr r3, =s68k_read16_map
PIC_LDR(r3, r2, s68k_read16_map)
bic r0, r0, #0xff000000
mov r2, r0, lsr #16
ldr r3, [r3, r2, lsl #2]
@ -729,7 +729,7 @@ s68k_read16:
bx r3
s68k_read32:
ldr r3, =s68k_read16_map
PIC_LDR(r3, r2, s68k_read16_map)
bic r0, r0, #0xff000000
mov r2, r0, lsr #16
ldr r3, [r3, r2, lsl #2]
@ -755,7 +755,7 @@ s68k_read32:
bx lr
s68k_write8:
ldr r3, =s68k_write8_map
PIC_LDR(r3, r2, s68k_write8_map)
bic r0, r0, #0xff000000
mov r2, r0, lsr #16
ldr r3, [r3, r2, lsl #2]
@ -766,7 +766,7 @@ s68k_write8:
bx r3
s68k_write16:
ldr r3, =s68k_write16_map
PIC_LDR(r3, r2, s68k_write16_map)
bic r0, r0, #0xff000000
mov r2, r0, lsr #16
ldr r3, [r3, r2, lsl #2]
@ -777,7 +777,7 @@ s68k_write16:
bx r3
s68k_write32:
ldr r3, =s68k_write16_map
PIC_LDR(r3, r2, s68k_write16_map)
bic r0, r0, #0xff000000
mov r2, r0, lsr #16
ldr r3, [r3, r2, lsl #2]