diff options
author | Alan Modra <amodra@gmail.com> | 2008-01-28 05:59:24 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2008-01-28 05:59:24 +0000 |
commit | 47f6dab9a3fb353b0faca52fcc07d2f57c4d906c (patch) | |
tree | 9cc0fcaf801807941794b51c5a6726a21692d0b6 /ld/testsuite/ld-spu | |
parent | 8693ff0ffb451be8a54dceda84bfc78246271dd9 (diff) | |
download | gdb-47f6dab9a3fb353b0faca52fcc07d2f57c4d906c.zip gdb-47f6dab9a3fb353b0faca52fcc07d2f57c4d906c.tar.gz gdb-47f6dab9a3fb353b0faca52fcc07d2f57c4d906c.tar.bz2 |
Rewrite SPU overlay handling code. Put overlay calls stubs in the
overlays where possible. Use a faster call stub, or optionally at
compile time, a more compact stub. Double size of _ovly_buf_table
so that low bit of _ovly_table.buf can be used as a "present" bit.
Reserve an extra _ovly_table entry for index zero.
Diffstat (limited to 'ld/testsuite/ld-spu')
-rw-r--r-- | ld/testsuite/ld-spu/ovl.d | 213 | ||||
-rw-r--r-- | ld/testsuite/ld-spu/ovl2.d | 90 |
2 files changed, 176 insertions, 127 deletions
diff --git a/ld/testsuite/ld-spu/ovl.d b/ld/testsuite/ld-spu/ovl.d index c624659..0cd8788 100644 --- a/ld/testsuite/ld-spu/ovl.d +++ b/ld/testsuite/ld-spu/ovl.d @@ -7,65 +7,90 @@ Disassembly of section \.text: 00000100 <_start>: - 100: 1c f8 00 81 ai \$1,\$1,-32 - 104: 48 20 00 00 xor \$0,\$0,\$0 - 108: 24 00 00 80 stqd \$0,0\(\$1\) - 10c: 24 00 40 80 stqd \$0,16\(\$1\) - 110: 33 00 04 00 brsl \$0,130 <00000000\.ovl_call\.f1_a1> # 130 - 110: SPU_REL16 f1_a1 - 114: 33 00 04 80 brsl \$0,138 <00000000\.ovl_call\.f2_a1> # 138 - 114: SPU_REL16 f2_a1 - 118: 33 00 07 00 brsl \$0,150 <00000000\.ovl_call\.f1_a2> # 150 - 118: SPU_REL16 f1_a2 - 11c: 42 00 ac 09 ila \$9,344 # 158 - 11c: SPU_ADDR18 f2_a2 - 120: 35 20 04 80 bisl \$0,\$9 - 124: 1c 08 00 81 ai \$1,\$1,32 # 20 - 128: 32 7f fb 00 br 100 <_start> # 100 - 128: SPU_REL16 _start +.* ai \$1,\$1,-32 +.* xor \$0,\$0,\$0 +.* stqd \$0,0\(\$1\) +.* stqd \$0,16\(\$1\) +.* brsl \$0,.* <00000000\.ovl_call\.f1_a1>.* +.*SPU_REL16 f1_a1 +.* brsl \$0,.* <00000000\.ovl_call\.f2_a1>.* +.*SPU_REL16 f2_a1 +.* brsl \$0,.* <00000000\.ovl_call\.f1_a2>.* +.*SPU_REL16 f1_a2 +#.* ila \$9,328 # 148 +.* ila \$9,352 # 160 +.*SPU_ADDR18 f2_a2 +.* bisl \$0,\$9 +.* ai \$1,\$1,32 # 20 +.* br 100 <_start> # 100 +.*SPU_REL16 _start 0000012c <f0>: - 12c: 35 00 00 00 bi \$0 +.* bi \$0 + +#00000130 <00000000\.ovl_call\.f1_a1>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 04 04 00.* +# +#00000138 <00000000\.ovl_call\.f2_a1>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 04 04 04.* +# +#00000140 <00000000\.ovl_call\.f1_a2>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 08 04 00.* +# +#00000148 <00000000\.ovl_call\.f2_a2>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 08 04 24.* +# +#00000150 <00000000\.ovl_call\.f4_a1>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 04 04 10.* +# +#00000158 <00000000.ovl_call.14:8>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 08 04 34.* 00000130 <00000000\.ovl_call\.f1_a1>: - 130: 42 02 00 4f ila \$79,1024 # 400 - 134: 32 00 02 80 br 148 .* - 134: SPU_REL16 \*ABS\*\+0x148 - -00000138 <00000000\.ovl_call\.f2_a1>: - 138: 42 02 02 4f ila \$79,1028 # 404 - 13c: 32 00 01 80 br 148 .* - 13c: SPU_REL16 \*ABS\*\+0x148 - -00000140 <00000000\.ovl_call\.f4_a1>: - 140: 42 02 08 4f ila \$79,1040 # 410 - 144: 40 20 00 00 nop \$0 - 148: 42 00 00 ce ila \$78,1 - 14c: 32 00 0a 80 br 1a0 <__ovly_load> # 1a0 - 14c: SPU_REL16 __ovly_load - -00000150 <00000000\.ovl_call\.f1_a2>: - 150: 42 02 00 4f ila \$79,1024 # 400 - 154: 32 00 02 80 br 168 .* - 154: SPU_REL16 \*ABS\*\+0x168 - -00000158 <00000000\.ovl_call\.f2_a2>: - 158: 42 02 12 4f ila \$79,1060 # 424 - 15c: 32 00 01 80 br 168 .* - 15c: SPU_REL16 \*ABS\*\+0x168 - -00000160 <00000000\.ovl_call\.14:8>: - 160: 42 02 1a 4f ila \$79,1076 # 434 - 164: 40 20 00 00 nop \$0 - 168: 42 00 01 4e ila \$78,2 - 16c: 32 00 06 80 br 1a0 <__ovly_load> # 1a0 - 16c: SPU_REL16 __ovly_load +.* ila \$78,1 +.* lnop +.* ila \$79,1024 # 400 +.* br .* <__ovly_load>.* + +00000140 <00000000\.ovl_call\.f2_a1>: +.* ila \$78,1 +.* lnop +.* ila \$79,1028 # 404 +.* br .* <__ovly_load>.* + +00000150 <00000000.ovl_call.f1_a2>: +.* ila \$78,2 +.* lnop +.* ila \$79,1024 # 400 +.* br .* <__ovly_load>.* + +00000160 <00000000\.ovl_call\.f2_a2>: +.* ila \$78,2 +.* lnop +.* ila \$79,1060 # 424 +.* br .* <__ovly_load>.* + +00000170 <00000000\.ovl_call\.f4_a1>: +.* ila \$78,1 +.* lnop +.* ila \$79,1040 # 410 +.* br .* <__ovly_load>.* + +00000180 <00000000.ovl_call.14:8>: +.* ila \$78,2 +.* lnop +.* ila \$79,1076 # 434 +.* br .* <__ovly_load>.* + #... [0-9a-f]+ <__ovly_return>: -[0-9a-f ]+: 3f e1 00 4e shlqbyi \$78,\$0,4 -[0-9a-f ]+: 3f e2 00 4f shlqbyi \$79,\$0,8 -[0-9a-f ]+: 25 00 27 ce biz \$78,\$79 - +#... [0-9a-f]+ <__ovly_load>: #... [0-9a-f]+ <_ovly_debug_event>: @@ -73,67 +98,75 @@ Disassembly of section \.text: Disassembly of section \.ov_a1: 00000400 <f1_a1>: - 400: 32 00 01 80 br 40c <f3_a1> # 40c - 400: SPU_REL16 f3_a1 +.* br .* <f3_a1>.* +.*SPU_REL16 f3_a1 00000404 <f2_a1>: - 404: 42 00 a0 03 ila \$3,320 # 140 - 404: SPU_ADDR18 f4_a1 - 408: 35 00 00 00 bi \$0 +#.* ila \$3,336 # 150 +.* ila \$3,368 # 170 +.*SPU_ADDR18 f4_a1 +.* bi \$0 0000040c <f3_a1>: - 40c: 35 00 00 00 bi \$0 +.* bi \$0 00000410 <f4_a1>: - 410: 35 00 00 00 bi \$0 +.* bi \$0 \.\.\. Disassembly of section \.ov_a2: 00000400 <f1_a2>: - 400: 24 00 40 80 stqd \$0,16\(\$1\) - 404: 24 ff 80 81 stqd \$1,-32\(\$1\) - 408: 1c f8 00 81 ai \$1,\$1,-32 - 40c: 33 7f a4 00 brsl \$0,12c <f0> # 12c - 40c: SPU_REL16 f0 - 410: 33 7f a4 00 brsl \$0,130 <00000000\.ovl_call\.f1_a1> # 130 - 410: SPU_REL16 f1_a1 - 414: 33 00 03 80 brsl \$0,430 <f3_a2> # 430 - 414: SPU_REL16 f3_a2 - 418: 34 00 c0 80 lqd \$0,48\(\$1\) # 30 - 41c: 1c 08 00 81 ai \$1,\$1,32 # 20 - 420: 35 00 00 00 bi \$0 +.* stqd \$0,16\(\$1\) +.* stqd \$1,-32\(\$1\) +.* ai \$1,\$1,-32 +.* brsl \$0,12c <f0> # 12c +.*SPU_REL16 f0 +.* brsl \$0,130 <00000000\.ovl_call\.f1_a1> # 130 +.*SPU_REL16 f1_a1 +.* brsl \$0,430 <f3_a2> # 430 +.*SPU_REL16 f3_a2 +.* lqd \$0,48\(\$1\) # 30 +.* ai \$1,\$1,32 # 20 +.* bi \$0 00000424 <f2_a2>: - 424: 41 00 00 03 ilhu \$3,0 - 424: SPU_ADDR16_HI f4_a2 - 428: 60 80 b0 03 iohl \$3,352 # 160 - 428: SPU_ADDR16_LO f4_a2 - 42c: 35 00 00 00 bi \$0 +.* ilhu \$3,0 +.*SPU_ADDR16_HI f4_a2 +#.* iohl \$3,344 # 158 +.* iohl \$3,384 # 180 +.*SPU_ADDR16_LO f4_a2 +.* bi \$0 00000430 <f3_a2>: - 430: 35 00 00 00 bi \$0 +.* bi \$0 00000434 <f4_a2>: - 434: 32 7f ff 80 br 430 <f3_a2> # 430 - 434: SPU_REL16 f3_a2 +.* br .* <f3_a2>.* +.*SPU_REL16 f3_a2 \.\.\. Disassembly of section .data: -00000440 <_ovly_table>: - 440: 00 00 04 00 .* - 444: 00 00 00 20 .* - 448: 00 00 02 f0 .* +00000440 <_ovly_table-0x10>: + \.\.\. 44c: 00 00 00 01 .* +00000450 <_ovly_table>: 450: 00 00 04 00 .* - 454: 00 00 00 40 .* - 458: 00 00 03 10 .* - 45c: 00 00 00 01 .* + 454: 00 00 00 20 .* +# 458: 00 00 03 40 .* + 458: 00 00 03 70 .* + 45c: 00 00 00 02 .* + 460: 00 00 04 00 .* + 464: 00 00 00 40 .* +# 468: 00 00 03 60 .* + 468: 00 00 03 90 .* + 46c: 00 00 00 02 .* + +00000470 <_ovly_buf_table>: + \.\.\. -00000460 <_ovly_buf_table>: - 460: 00 00 00 00 .* Disassembly of section \.toe: -00000470 <_EAR_>: +00000480 <_EAR_>: \.\.\. Disassembly of section \.note\.spu_name: diff --git a/ld/testsuite/ld-spu/ovl2.d b/ld/testsuite/ld-spu/ovl2.d index bf62e03..1cd1d33 100644 --- a/ld/testsuite/ld-spu/ovl2.d +++ b/ld/testsuite/ld-spu/ovl2.d @@ -7,40 +7,50 @@ Disassembly of section \.text: 00000100 <_start>: - 100: 33 00 06 00 brsl \$0,130 <00000000\.ovl_call\.f1_a1> # 130 - 100: SPU_REL16 f1_a1 - 104: 33 00 03 80 brsl \$0,120 <00000000\.ovl_call\.10:4> # 120 - 104: SPU_REL16 setjmp - 108: 32 7f ff 00 br 100 <_start> # 100 - 108: SPU_REL16 _start +.* brsl \$0,.* <00000000\.ovl_call\.f1_a1>.* +.*SPU_REL16 f1_a1 +.* brsl \$0,.* <00000000\.ovl_call\.10:4>.* +.*SPU_REL16 setjmp +.* br 100 <_start> # 100 +.*SPU_REL16 _start 0000010c <setjmp>: - 10c: 35 00 00 00 bi \$0 +.* bi \$0 00000110 <longjmp>: - 110: 35 00 00 00 bi \$0 - ... - -00000120 <00000000\.ovl_call.10:4>: - 120: 42 00 86 4f ila \$79,268 # 10c - 124: 40 20 00 00 nop \$0 - 128: 42 00 00 4e ila \$78,0 - 12c: 32 00 0a 80 br 180 <__ovly_load> # 180 - 12c: SPU_REL16 __ovly_load - -00000130 <00000000\.ovl_call.f1_a1>: - 130: 42 02 00 4f ila \$79,1024 # 400 - 134: 40 20 00 00 nop \$0 - 138: 42 00 00 ce ila \$78,1 - 13c: 32 00 08 80 br 180 <__ovly_load> # 180 - 13c: SPU_REL16 __ovly_load +.* bi \$0 +.* + +#00000118 <00000000\.ovl_call.f1_a1>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 04 04 00.* +# +#00000120 <00000000\.ovl_call.10:4>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 00 01 0c.* +# +#00000128 <_SPUEAR_f1_a2>: +#.* brsl \$75,.* <__ovly_load>.* +#.*00 08 04 00.* + +00000120 <00000000\.ovl_call.f1_a1>: +.* ila \$78,1 +.* lnop +.* ila \$79,1024 # 400 +.* br .* <__ovly_load>.* + +00000130 <00000000\.ovl_call.10:4>: +.* ila \$78,0 +.* lnop +.* ila \$79,268 # 10c +.* br .* <__ovly_load>.* 00000140 <_SPUEAR_f1_a2>: - 140: 42 02 00 4f ila \$79,1024 # 400 - 144: 40 20 00 00 nop \$0 - 148: 42 00 01 4e ila \$78,2 - 14c: 32 00 06 80 br 180 <__ovly_load> # 180 - 14c: SPU_REL16 __ovly_load +.* ila \$78,2 +.* lnop +.* ila \$79,1024 # 400 +.* br .* <__ovly_load>.* + #... Disassembly of section \.ov_a1: @@ -55,21 +65,27 @@ Disassembly of section \.ov_a2: \.\.\. Disassembly of section \.data: -00000410 <_ovly_table>: - 410: 00 00 04 00 .* - 414: 00 00 00 10 .* - 418: 00 00 02 d0 .* +00000410 <_ovly_table-0x10>: + \.\.\. 41c: 00 00 00 01 .* +00000420 <_ovly_table>: 420: 00 00 04 00 .* 424: 00 00 00 10 .* - 428: 00 00 02 e0 .* - 42c: 00 00 00 01 .* +# 428: 00 00 03 10 .* + 428: 00 00 03 30 .* + 42c: 00 00 00 02 .* + 430: 00 00 04 00 .* + 434: 00 00 00 10 .* +# 438: 00 00 03 20 .* + 438: 00 00 03 40 .* + 43c: 00 00 00 02 .* + +00000440 <_ovly_buf_table>: + \.\.\. -00000430 <_ovly_buf_table>: - 430: 00 00 00 00 .* Disassembly of section \.toe: -00000440 <_EAR_>: +00000450 <_EAR_>: \.\.\. Disassembly of section \.note\.spu_name: |