Merge resource performance imps.
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