Don't mess around with EPOCROOT until actually entering raptor so we know what the original was
Put the original epocroot back on the front of the whatcomp output. This allows what output to be
either relative or absolute depending on what your epocroot is.
1 @ DLL Stub routines
2 @
3 @ Compile with "gcc -c -Wa,-adhln stubs.s"
4 @
5 .text
6 .code 32
7 .globl arm4_stub
8 arm4_stub:
9 0000 00C09FE5 ldr ip, [pc]
10 0004 00F09CE5 ldr pc, [ip]
11 0008 44332211 .word 0x11223344 @ address in IAT/edata
12
13 .code 32
14 .globl armi_stub
15 armi_stub:
16 000c 04C09FE5 ldr ip, [pc, #4]
17 0010 00F09CE5 ldr pc, [ip]
18 0014 1CFF2FE1 bx ip
19 0018 44332211 .word 0x11223344 @ address in IAT/edata
20
21 .code 16
22 .globl thumb_stub
23 thumb_stub:
24 001c 40B4 push {r6}
25 001e 024E ldr r6, [pc, #8]
26 0020 3668 ldr r6, [r6]
27 0022 B446 mov ip, r6
28 0024 40BC pop {r6}
29 0026 6047 bx ip
30 0028 44332211 .word 0x11223344 @ address in IAT/edata
31
32 .code 16
33 .globl thumb_r3unused_stub
34 thumb_r3unused_stub:
35 002c 014B ldr r3, [pc, #4]
36 002e 1B68 ldr r3, [r3]
37 0030 1847 bx r3
38 0032 C046 nop
39 0034 44332211 .word 0x11223344 @ address in IAT/edata
40
41
42 @ In-place rewrites if destination address
43 @ is fixed
44 @
45 .code 32
46 .globl fast_armi_stub
47 fast_armi_stub:
48 0038 04C09FE5 ldr ip, [pc, #4]
49 003c 1CFF2FE1 bx ip
50 0040 00000000 .word 0 @ nop
51 0044 53525150 .word 0x50515253 @ destination address
52
53 .code 16
54 .globl fast_thumb_stub
55 fast_thumb_stub:
56 0048 40B4 push {r6}
57 004a 024E ldr r6, [pc, #8]
58 004c B446 mov ip, r6
59 004e 40BC pop {r6}
60 0050 6047 bx ip
61 0052 C046 nop
62 0054 53525150 .word 0x50515253 @ destination address
63
64 .code 16
65 .globl fast_thumb_r3unused_stub
66 fast_thumb_r3unused_stub:
67 0058 014B ldr r3, [pc, #4]
68 005a 1847 bx r3
69 005c C046 nop
70 005e C046 nop
71 0060 53525150 .word 0x50515253 @ destination address
72
73
74