GCC 2.8.1/powerpc-eabi register allocation
r35383 (r35383@email.sps.mot.com)
Thu, 19 Nov 1998 12:55:01 +0300
This is a multi-part message in MIME format.
--------------FE9BE1384C6C05D82A3A58E0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hello All,
I use the following tools for powerpc-eabi target: GCC 2.8.1, BUNUTILS
2.9.1. Due to performance reasons it is necessary to allocate some
global variables into PowerPC registers, but unfortunately it looks like
I can not manage it via "register <varType> <varName> asm("<regName>");"
statement as described in GCC documentation.
If I use such statement ("register int var1 asm("r14");" for example),
then generated code seems to be wrong (all PowerPC GPR registers r14-r31
are saved/restored during function prologue/epilogue), therefore global
variable "var1" becomes local one (if "var1" local variable, then
generated code is the same). Please find test code "main.c" as well as
corresponding listings attached.
The following command line was used (var1, var2, var3 are global
variables):
$ gcc -c -D GLOBAL -eabi -Wa,-alh,-L,>main_global.l main.c
The following command line was used (var1, var2, var3 are local
variables):
$ gcc -c -eabi -Wa,-alh,-L,>main_local.l main.c
"main_global.l" is the same as "main_local.l".
Is it necessary to use some additional compiler option? May you
recommend me the source of GCC/powerpc-eabi technical information or
contact person?
Any help will be greatly appreciated.
Best regards,
--
Yaroslav Domaratsky (RTE team) mailto:R35383@email.mot.com
Motorola ZAO, SPSD Phone: 7-812-329-1927
1 Artilleriyskaya Str., Fax: 7-812-329-1912
St. Petersburg, 191104, Russia Maildrop: ZRU03
--------------FE9BE1384C6C05D82A3A58E0
Content-Type: application/x-unknown-content-type-CodeWarrior_c; name="main.c"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="main.c"
I2lmCWRlZmluZWQoR0xPQkFMKQ0KcmVnaXN0ZXIgaW50CXZhcjEgYXNtKCAicjE0IiApOw0K
cmVnaXN0ZXIgaW50CXZhcjIgYXNtKCAicjE1IiApOw0KcmVnaXN0ZXIgaW50CXZhcjMgYXNt
KCAicjE2IiApOw0KI2VuZGlmCS8qCWRlZmluZWQoR0xPQkFMKQkqLw0KDQoNCmludAlzZXQo
IGludCBpLCBpbnQgaikNCnsNCiNpZgkhZGVmaW5lZChHTE9CQUwpDQpyZWdpc3RlciBpbnQJ
dmFyMSBhc20oICJyMTQiICk7DQpyZWdpc3RlciBpbnQJdmFyMiBhc20oICJyMTUiICk7DQpy
ZWdpc3RlciBpbnQJdmFyMyBhc20oICJyMTYiICk7DQojZW5kaWYJLyoJIWRlZmluZWQoR0xP
QkFMKQkqLw0KCXZhcjEgPSBpOw0KCXZhcjIgPSBqOw0KCXJldHVybiggMSApOw0KCQ0KfQ0K
DQppbnQJbWFpbiggdm9pZCApDQp7DQojaWYJIWRlZmluZWQoR0xPQkFMKQ0KcmVnaXN0ZXIg
aW50CXZhcjEgYXNtKCAicjE0IiApOw0KcmVnaXN0ZXIgaW50CXZhcjIgYXNtKCAicjE1IiAp
Ow0KcmVnaXN0ZXIgaW50CXZhcjMgYXNtKCAicjE2IiApOw0KI2VuZGlmCS8qCSFkZWZpbmVk
KEdMT0JBTCkJKi8NCgl2YXIxID0gMTsNCgl2YXIyID0gMjsNCgl2YXIzID0gc2V0KCAzLCA0
ICk7DQoJcmV0dXJuKCAwICk7DQoNCn0=
--------------FE9BE1384C6C05D82A3A58E0
Content-Type: text/plain; charset=us-ascii; name="main_global.l"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="main_global.l"
GAS LISTING C:/TEMP\cc001005.s page 1
1 .file "main.c"
2 gcc2_compiled.:
3 .section ".text"
4 .align 2
5 .globl set
6 .type set,@function
7 set:
8 0000 9421FFA8 stwu 1,-88(1)
9 0004 91C10010 stw 14,16(1)
10 0008 91E10014 stw 15,20(1)
11 000c 92010018 stw 16,24(1)
12 0010 9221001C stw 17,28(1)
13 0014 92410020 stw 18,32(1)
14 0018 92610024 stw 19,36(1)
15 001c 92810028 stw 20,40(1)
16 0020 92A1002C stw 21,44(1)
17 0024 92C10030 stw 22,48(1)
18 0028 92E10034 stw 23,52(1)
19 002c 93010038 stw 24,56(1)
20 0030 9321003C stw 25,60(1)
21 0034 93410040 stw 26,64(1)
22 0038 93610044 stw 27,68(1)
23 003c 93810048 stw 28,72(1)
24 0040 93A1004C stw 29,76(1)
25 0044 93C10050 stw 30,80(1)
26 0048 93E10054 stw 31,84(1)
27 004c 7C3F0B78 mr 31,1
28 0050 907F0008 stw 3,8(31)
29 0054 909F000C stw 4,12(31)
30 0058 81DF0008 lwz 14,8(31)
31 005c 81FF000C lwz 15,12(31)
32 0060 38600001 li 3,1
33 0064 48000004 b .L1
34 .L1:
35 0068 81610000 lwz 11,0(1)
36 006c 81CBFFB8 lwz 14,-72(11)
37 0070 81EBFFBC lwz 15,-68(11)
38 0074 820BFFC0 lwz 16,-64(11)
39 0078 822BFFC4 lwz 17,-60(11)
40 007c 824BFFC8 lwz 18,-56(11)
41 0080 826BFFCC lwz 19,-52(11)
42 0084 828BFFD0 lwz 20,-48(11)
43 0088 82ABFFD4 lwz 21,-44(11)
44 008c 82CBFFD8 lwz 22,-40(11)
45 0090 82EBFFDC lwz 23,-36(11)
46 0094 830BFFE0 lwz 24,-32(11)
47 0098 832BFFE4 lwz 25,-28(11)
48 009c 834BFFE8 lwz 26,-24(11)
49 00a0 836BFFEC lwz 27,-20(11)
50 00a4 838BFFF0 lwz 28,-16(11)
51 00a8 83ABFFF4 lwz 29,-12(11)
52 00ac 83CBFFF8 lwz 30,-8(11)
53 00b0 83EBFFFC lwz 31,-4(11)
54 00b4 7D615B78 mr 1,11
55 00b8 4E800020 blr
56 .Lfe1:
57 .size set,.Lfe1-set
GAS LISTING C:/TEMP\cc001005.s page 2
58 .align 2
59 .globl main
60 .type main,@function
61 main:
62 00bc 9421FFB0 stwu 1,-80(1)
63 00c0 7C0802A6 mflr 0
64 00c4 91C10008 stw 14,8(1)
65 00c8 91E1000C stw 15,12(1)
66 00cc 92010010 stw 16,16(1)
67 00d0 92210014 stw 17,20(1)
68 00d4 92410018 stw 18,24(1)
69 00d8 9261001C stw 19,28(1)
70 00dc 92810020 stw 20,32(1)
71 00e0 92A10024 stw 21,36(1)
72 00e4 92C10028 stw 22,40(1)
73 00e8 92E1002C stw 23,44(1)
74 00ec 93010030 stw 24,48(1)
75 00f0 93210034 stw 25,52(1)
76 00f4 93410038 stw 26,56(1)
77 00f8 9361003C stw 27,60(1)
78 00fc 93810040 stw 28,64(1)
79 0100 93A10044 stw 29,68(1)
80 0104 93C10048 stw 30,72(1)
81 0108 93E1004C stw 31,76(1)
82 010c 90010054 stw 0,84(1)
83 0110 7C3F0B78 mr 31,1
84 0114 48000001 bl __eabi
85 0118 39C00001 li 14,1
86 011c 39E00002 li 15,2
87 0120 38600003 li 3,3
88 0124 38800004 li 4,4
89 0128 48000001 bl set
90 012c 7C701B78 mr 16,3
91 0130 38600000 li 3,0
92 0134 48000004 b .L2
93 .L2:
94 0138 81610000 lwz 11,0(1)
95 013c 800B0004 lwz 0,4(11)
96 0140 7C0803A6 mtlr 0
97 0144 81CBFFB8 lwz 14,-72(11)
98 0148 81EBFFBC lwz 15,-68(11)
99 014c 820BFFC0 lwz 16,-64(11)
100 0150 822BFFC4 lwz 17,-60(11)
101 0154 824BFFC8 lwz 18,-56(11)
102 0158 826BFFCC lwz 19,-52(11)
103 015c 828BFFD0 lwz 20,-48(11)
104 0160 82ABFFD4 lwz 21,-44(11)
105 0164 82CBFFD8 lwz 22,-40(11)
106 0168 82EBFFDC lwz 23,-36(11)
107 016c 830BFFE0 lwz 24,-32(11)
108 0170 832BFFE4 lwz 25,-28(11)
109 0174 834BFFE8 lwz 26,-24(11)
110 0178 836BFFEC lwz 27,-20(11)
111 017c 838BFFF0 lwz 28,-16(11)
112 0180 83ABFFF4 lwz 29,-12(11)
113 0184 83CBFFF8 lwz 30,-8(11)
114 0188 83EBFFFC lwz 31,-4(11)
GAS LISTING C:/TEMP\cc001005.s page 3
115 018c 7D615B78 mr 1,11
116 0190 4E800020 blr
117 .Lfe2:
118 .size main,.Lfe2-main
119 .ident "GCC: (GNU) 2.8.1"
--------------FE9BE1384C6C05D82A3A58E0
Content-Type: text/plain; charset=us-ascii; name="main_local.l"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="main_local.l"
GAS LISTING C:/TEMP\cc001014.s page 1
1 .file "main.c"
2 gcc2_compiled.:
3 .section ".text"
4 .align 2
5 .globl set
6 .type set,@function
7 set:
8 0000 9421FFA8 stwu 1,-88(1)
9 0004 91C10010 stw 14,16(1)
10 0008 91E10014 stw 15,20(1)
11 000c 92010018 stw 16,24(1)
12 0010 9221001C stw 17,28(1)
13 0014 92410020 stw 18,32(1)
14 0018 92610024 stw 19,36(1)
15 001c 92810028 stw 20,40(1)
16 0020 92A1002C stw 21,44(1)
17 0024 92C10030 stw 22,48(1)
18 0028 92E10034 stw 23,52(1)
19 002c 93010038 stw 24,56(1)
20 0030 9321003C stw 25,60(1)
21 0034 93410040 stw 26,64(1)
22 0038 93610044 stw 27,68(1)
23 003c 93810048 stw 28,72(1)
24 0040 93A1004C stw 29,76(1)
25 0044 93C10050 stw 30,80(1)
26 0048 93E10054 stw 31,84(1)
27 004c 7C3F0B78 mr 31,1
28 0050 907F0008 stw 3,8(31)
29 0054 909F000C stw 4,12(31)
30 0058 81DF0008 lwz 14,8(31)
31 005c 81FF000C lwz 15,12(31)
32 0060 38600001 li 3,1
33 0064 48000004 b .L1
34 .L1:
35 0068 81610000 lwz 11,0(1)
36 006c 81CBFFB8 lwz 14,-72(11)
37 0070 81EBFFBC lwz 15,-68(11)
38 0074 820BFFC0 lwz 16,-64(11)
39 0078 822BFFC4 lwz 17,-60(11)
40 007c 824BFFC8 lwz 18,-56(11)
41 0080 826BFFCC lwz 19,-52(11)
42 0084 828BFFD0 lwz 20,-48(11)
43 0088 82ABFFD4 lwz 21,-44(11)
44 008c 82CBFFD8 lwz 22,-40(11)
45 0090 82EBFFDC lwz 23,-36(11)
46 0094 830BFFE0 lwz 24,-32(11)
47 0098 832BFFE4 lwz 25,-28(11)
48 009c 834BFFE8 lwz 26,-24(11)
49 00a0 836BFFEC lwz 27,-20(11)
50 00a4 838BFFF0 lwz 28,-16(11)
51 00a8 83ABFFF4 lwz 29,-12(11)
52 00ac 83CBFFF8 lwz 30,-8(11)
53 00b0 83EBFFFC lwz 31,-4(11)
54 00b4 7D615B78 mr 1,11
55 00b8 4E800020 blr
56 .Lfe1:
57 .size set,.Lfe1-set
GAS LISTING C:/TEMP\cc001014.s page 2
58 .align 2
59 .globl main
60 .type main,@function
61 main:
62 00bc 9421FFB0 stwu 1,-80(1)
63 00c0 7C0802A6 mflr 0
64 00c4 91C10008 stw 14,8(1)
65 00c8 91E1000C stw 15,12(1)
66 00cc 92010010 stw 16,16(1)
67 00d0 92210014 stw 17,20(1)
68 00d4 92410018 stw 18,24(1)
69 00d8 9261001C stw 19,28(1)
70 00dc 92810020 stw 20,32(1)
71 00e0 92A10024 stw 21,36(1)
72 00e4 92C10028 stw 22,40(1)
73 00e8 92E1002C stw 23,44(1)
74 00ec 93010030 stw 24,48(1)
75 00f0 93210034 stw 25,52(1)
76 00f4 93410038 stw 26,56(1)
77 00f8 9361003C stw 27,60(1)
78 00fc 93810040 stw 28,64(1)
79 0100 93A10044 stw 29,68(1)
80 0104 93C10048 stw 30,72(1)
81 0108 93E1004C stw 31,76(1)
82 010c 90010054 stw 0,84(1)
83 0110 7C3F0B78 mr 31,1
84 0114 48000001 bl __eabi
85 0118 39C00001 li 14,1
86 011c 39E00002 li 15,2
87 0120 38600003 li 3,3
88 0124 38800004 li 4,4
89 0128 48000001 bl set
90 012c 7C701B78 mr 16,3
91 0130 38600000 li 3,0
92 0134 48000004 b .L2
93 .L2:
94 0138 81610000 lwz 11,0(1)
95 013c 800B0004 lwz 0,4(11)
96 0140 7C0803A6 mtlr 0
97 0144 81CBFFB8 lwz 14,-72(11)
98 0148 81EBFFBC lwz 15,-68(11)
99 014c 820BFFC0 lwz 16,-64(11)
100 0150 822BFFC4 lwz 17,-60(11)
101 0154 824BFFC8 lwz 18,-56(11)
102 0158 826BFFCC lwz 19,-52(11)
103 015c 828BFFD0 lwz 20,-48(11)
104 0160 82ABFFD4 lwz 21,-44(11)
105 0164 82CBFFD8 lwz 22,-40(11)
106 0168 82EBFFDC lwz 23,-36(11)
107 016c 830BFFE0 lwz 24,-32(11)
108 0170 832BFFE4 lwz 25,-28(11)
109 0174 834BFFE8 lwz 26,-24(11)
110 0178 836BFFEC lwz 27,-20(11)
111 017c 838BFFF0 lwz 28,-16(11)
112 0180 83ABFFF4 lwz 29,-12(11)
113 0184 83CBFFF8 lwz 30,-8(11)
114 0188 83EBFFFC lwz 31,-4(11)
GAS LISTING C:/TEMP\cc001014.s page 3
115 018c 7D615B78 mr 1,11
116 0190 4E800020 blr
117 .Lfe2:
118 .size main,.Lfe2-main
119 .ident "GCC: (GNU) 2.8.1"
--------------FE9BE1384C6C05D82A3A58E0--
_______________________________________________
New CrossGCC FAQ: http://www.objsw.com/CrossGCC
_______________________________________________
To remove yourself from the crossgcc list, send
mail to crossgcc-request@cygnus.com with the
text 'unsubscribe' (without the quotes) in the
body of the message.