Date: Fri, 10 May 2002 17:06:34 -0400 (EDT) From: Andrew Gallatin <gallatin@cs.duke.edu> To: Jeff Roberson <jroberson@chesapeake.net> Cc: <alpha@FreeBSD.ORG>, <obrien@FreeBSD.ORG> Subject: Re: gcc3 & alpha kernels Message-ID: <15580.13914.162169.930227@grasshopper.cs.duke.edu> In-Reply-To: <20020510164149.M49378-100000@mail.chesapeake.net> References: <15580.11242.459728.984239@grasshopper.cs.duke.edu> <20020510164149.M49378-100000@mail.chesapeake.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Jeff Roberson writes:
> On Fri, 10 May 2002, Andrew Gallatin wrote:
>
> >
> > Alan Cox writes:
> > > >
> > > > Did Jeff see a lockup at boot? Or was this on a running system?
> > >
> > > I believe it was at boot time. I can't swear to that, however.
> > >
> >
> > Thanks.. that's the same as me. It would seem that the new compiler
> > is botching the atomic inlines then.
> >
> > Hmm.. According to the disassembly, it looks like the correct
> > sequences are there, though..
> >
> > Drew
> >
>
> It was at boot time. I believe that this was the first time we ever did
> negative atomic ints on alpha. This was with the old compiler as well. I
> haven't looked at the gcc3 output.
>
> When I looked at the assembly it was pretty clear that the inline wasn't
> written to support non sign extended values. If you change the prototype
> the signed int everything works as expected though.
FWIW, this (atomic) is the problem. I can boot a kernel
where everything but vm_object.o is built with gcc 3.1 and vm_object.o
is built by the -stable gcc 2.95 compiler.
I'm not sure where I can go from here. David, is this enough
information for you to use?
I haven't used this kernel that I just built, as I'm not sure that I
should trust it :-(
Drew
PS: I've appended disassembled _vm_object_allocate()'s produced by
both GCC's.
-------- GCC 3.1--------------------------------------
0000000000000068 <_vm_object_allocate>:
68: 00 00 bb 27 ldah gp,0(t12)
6c: 00 00 bd 23 lda gp,0(gp)
70: e0 ff de 23 lda sp,-32(sp)
74: 00 00 5e b7 stq ra,0(sp)
78: 08 00 3e b5 stq s0,8(sp)
7c: 10 00 5e b5 stq s1,16(sp)
80: 0a 04 f1 47 mov a1,s1
84: 09 04 f2 47 mov a2,s0
88: 30 00 f2 b7 stq zero,48(a2)
8c: 30 00 32 20 lda t0,48(a2)
90: 38 00 32 b4 stq t0,56(a2)
94: 10 00 f2 b7 stq zero,16(a2)
98: 10 00 32 20 lda t0,16(a2)
9c: 18 00 32 b4 stq t0,24(a2)
a0: 5c 00 12 3a stb a0,92(a2)
a4: 48 00 29 b6 stq a1,72(s0)
a8: 01 00 3f 20 lda t0,1
ac: 50 00 32 b0 stl t0,80(a2)
b0: 5e 00 f2 37 stw zero,94(a2)
b4: 01 f0 1f 46 and a0,0xff,t0
b8: a1 37 20 40 cmpule t0,0x1,t0
bc: 06 00 20 e4 beq t0,d8 <_vm_object_allocate+0x70>
c0: 10 04 f2 47 mov a2,a0
c4: 00 20 3f 22 lda a1,8192
c8: 00 00 7d a7 ldq t12,0(gp)
cc: 00 40 5b 6b jsr ra,(t12),d0 <_vm_object_allocate+0x68>
d0: 00 00 ba 27 ldah gp,0(ra)
d4: 00 00 bd 23 lda gp,0(gp)
d8: a1 77 42 41 cmpule s1,0x13,t0
dc: 02 00 5f 41 addl s1,zero,t1
e0: 13 00 3f 22 lda a1,19
e4: d1 04 22 44 cmovne t0,t1,a1
e8: 00 00 7d a4 ldq t2,0(gp)
ec: 00 00 23 30 ldwu t0,0(t2)
f0: 60 00 29 34 stw t0,96(s0)
f4: 22 76 20 48 zapnot t0,0x3,t1
f8: 21 76 20 48 zapnot t0,0x3,t0
fc: 01 04 21 42 addq a1,t0,t0
100: 01 f0 23 44 and t0,0x1f,t0
104: 00 00 83 a8 ldl_l t3,0(t2)
108: 24 f6 81 48 zapnot t3,0xf,t3
10c: a4 05 82 40 cmpeq t3,t1,t3
110: 04 00 80 e4 beq t3,124 <_vm_object_allocate+0xbc>
114: 04 04 e1 47 mov t0,t3
118: 00 00 83 b8 stl_c t3,0(t2)
11c: 00 00 80 e4 beq t3,120 <_vm_object_allocate+0xb8>
120: 00 40 00 60 mb
124: 21 f6 81 48 zapnot t3,0xf,t0
128: f0 ff 3f e4 beq t0,ec <_vm_object_allocate+0x84>
12c: 88 00 e9 b7 stq zero,136(s0)
130: 68 00 e9 b7 stq zero,104(s0)
134: 70 00 e9 b7 stq zero,112(s0)
138: 00 00 7d a4 ldq t2,0(gp)
13c: 00 00 43 a0 ldl t1,0(t2)
140: 7f ff 22 20 lda t0,-129(t1)
144: 58 00 29 b0 stl t0,88(s0)
148: 01 00 3f 40 addl t0,zero,t0
14c: 00 00 83 a8 ldl_l t3,0(t2)
150: 24 f6 81 48 zapnot t3,0xf,t3
154: a4 05 82 40 cmpeq t3,t1,t3
158: 04 00 80 e4 beq t3,16c <_vm_object_allocate+0x104>
15c: 04 04 e1 47 mov t0,t3
160: 00 00 83 b8 stl_c t3,0(t2)
164: 00 00 80 e4 beq t3,168 <_vm_object_allocate+0x100>
168: 00 40 00 60 mb
16c: 21 f6 81 48 zapnot t3,0xf,t0
170: f2 ff 3f e4 beq t0,13c <_vm_object_allocate+0xd4>
174: 40 00 29 a0 ldl t0,64(s0)
178: 01 00 21 20 lda t0,1(t0)
17c: 40 00 29 b0 stl t0,64(s0)
180: 00 00 1d a6 ldq a0,0(gp)
184: 11 04 ff 47 clr a1
188: 00 00 5d a6 ldq a2,0(gp)
18c: e4 00 7f 22 lda a3,228
190: 00 00 7d a7 ldq t12,0(gp)
194: 00 40 5b 6b jsr ra,(t12),198 <_vm_object_allocate+0x130>
198: 00 00 ba 27 ldah gp,0(ra)
19c: 00 00 bd 23 lda gp,0(gp)
1a0: 00 00 e9 b7 stq zero,0(s0)
1a4: 00 00 5d a4 ldq t1,0(gp)
1a8: 08 00 22 a4 ldq t0,8(t1)
1ac: 08 00 29 b4 stq t0,8(s0)
1b0: 08 00 22 a4 ldq t0,8(t1)
1b4: 00 00 21 b5 stq s0,0(t0)
1b8: 08 00 22 b5 stq s0,8(t1)
1bc: 00 00 1d a6 ldq a0,0(gp)
1c0: 11 04 ff 47 clr a1
1c4: 00 00 5d a6 ldq a2,0(gp)
1c8: e6 00 7f 22 lda a3,230
1cc: 00 00 7d a7 ldq t12,0(gp)
1d0: 00 40 5b 6b jsr ra,(t12),1d4 <_vm_object_allocate+0x16c>
1d4: 00 00 ba 27 ldah gp,0(ra)
1d8: 00 00 bd 23 lda gp,0(gp)
1dc: 00 00 5e a7 ldq ra,0(sp)
1e0: 08 00 3e a5 ldq s0,8(sp)
1e4: 10 00 5e a5 ldq s1,16(sp)
1e8: 20 00 de 23 lda sp,32(sp)
1ec: 01 80 fa 6b ret
--------------- gcc 2.95 ------------------------------------
00000000000000a0 <_vm_object_allocate>:
a0: 00 00 bb 27 ldah gp,0(t12)
a4: 00 00 bd 23 lda gp,0(gp)
a8: e0 ff de 23 lda sp,-32(sp)
ac: 00 00 5e b7 stq ra,0(sp)
b0: 08 00 3e b5 stq s0,8(sp)
b4: 10 00 5e b5 stq s1,16(sp)
b8: 0a 04 f1 47 mov a1,s1
bc: 09 04 f2 47 mov a2,s0
c0: 30 00 e9 b7 stq zero,48(s0)
c4: 01 14 26 41 addq s0,0x30,t0
c8: 38 00 29 b4 stq t0,56(s0)
cc: 10 00 e9 b7 stq zero,16(s0)
d0: 01 14 22 41 addq s0,0x10,t0
d4: 18 00 29 b4 stq t0,24(s0)
d8: 5c 00 09 3a stb a0,92(s0)
dc: 48 00 49 b5 stq s1,72(s0)
e0: 01 00 3f 20 lda t0,1
e4: 50 00 29 b0 stl t0,80(s0)
e8: 5e 00 e9 37 stw zero,94(s0)
ec: b0 37 00 42 cmpule a0,0x1,a0
f0: 07 00 00 e6 beq a0,110 <_vm_object_allocate+0x70>
f4: 10 04 e9 47 mov s0,a0
f8: 00 20 3f 22 lda a1,8192
fc: 00 00 7d a7 ldq t12,0(gp)
100: 00 40 5b 6b jsr ra,(t12),104 <_vm_object_allocate+0x64>
104: 00 00 ba 27 ldah gp,0(ra)
108: 00 00 bd 23 lda gp,0(gp)
10c: 00 00 e0 2f unop
110: a1 77 42 41 cmpule s1,0x13,t0
114: 13 00 3f 22 lda a1,19
118: 01 00 20 e4 beq t0,120 <_vm_object_allocate+0x80>
11c: 11 00 5f 41 addl s1,zero,a1
120: 00 00 7d a4 ldq t2,0(gp)
124: 00 00 e0 2f unop
128: 1f 04 ff 47 nop
12c: 00 00 e0 2f unop
130: 00 00 23 30 ldwu t0,0(t2)
134: 60 00 29 34 stw t0,96(s0)
138: 21 76 20 48 zapnot t0,0x3,t0
13c: 22 f6 21 48 zapnot t0,0xf,t1
140: 01 04 31 40 addq t0,a1,t0
144: 01 f0 23 44 and t0,0x1f,t0
148: 00 00 83 a8 ldl_l t3,0(t2)
14c: 24 f6 81 48 zapnot t3,0xf,t3
150: a4 05 82 40 cmpeq t3,t1,t3
154: 04 00 80 e4 beq t3,168 <_vm_object_allocate+0xc8>
158: 04 04 e1 47 mov t0,t3
15c: 00 00 83 b8 stl_c t3,0(t2)
160: 00 00 80 e4 beq t3,164 <_vm_object_allocate+0xc4>
164: 00 40 00 60 mb
168: 01 04 e4 47 mov t3,t0
16c: 21 f6 21 48 zapnot t0,0xf,t0
170: ef ff 3f e4 beq t0,130 <_vm_object_allocate+0x90>
174: 88 00 e9 b7 stq zero,136(s0)
178: 68 00 e9 b7 stq zero,104(s0)
17c: 70 00 e9 b7 stq zero,112(s0)
180: 00 00 7d a4 ldq t2,0(gp)
184: 00 00 e0 2f unop
188: 1f 04 ff 47 nop
18c: 00 00 e0 2f unop
190: 00 00 43 a0 ldl t1,0(t2)
194: 21 35 50 40 subq t1,0x81,t0
198: 58 00 29 b0 stl t0,88(s0)
19c: 22 f6 41 48 zapnot t1,0xf,t1
1a0: 21 f6 21 48 zapnot t0,0xf,t0
1a4: 00 00 83 a8 ldl_l t3,0(t2)
1a8: 24 f6 81 48 zapnot t3,0xf,t3
1ac: a4 05 82 40 cmpeq t3,t1,t3
1b0: 04 00 80 e4 beq t3,1c4 <_vm_object_allocate+0x124>
1b4: 04 04 e1 47 mov t0,t3
1b8: 00 00 83 b8 stl_c t3,0(t2)
1bc: 00 00 80 e4 beq t3,1c0 <_vm_object_allocate+0x120>
1c0: 00 40 00 60 mb
1c4: 01 04 e4 47 mov t3,t0
1c8: 21 f6 21 48 zapnot t0,0xf,t0
1cc: f0 ff 3f e4 beq t0,190 <_vm_object_allocate+0xf0>
1d0: 40 00 29 a0 ldl t0,64(s0)
1d4: 01 34 20 40 addq t0,0x1,t0
1d8: 40 00 29 b0 stl t0,64(s0)
1dc: 00 00 1d a6 ldq a0,0(gp)
1e0: 11 04 ff 47 clr a1
1e4: 00 00 5d a6 ldq a2,0(gp)
1e8: e4 00 7f 22 lda a3,228
1ec: 00 00 7d a7 ldq t12,0(gp)
1f0: 00 40 5b 6b jsr ra,(t12),1f4 <_vm_object_allocate+0x154>
1f4: 00 00 ba 27 ldah gp,0(ra)
1f8: 00 00 bd 23 lda gp,0(gp)
1fc: 00 00 e9 b7 stq zero,0(s0)
200: 00 00 5d a4 ldq t1,0(gp)
204: 08 00 22 a4 ldq t0,8(t1)
208: 08 00 29 b4 stq t0,8(s0)
20c: 08 00 22 a4 ldq t0,8(t1)
210: 00 00 21 b5 stq s0,0(t0)
214: 08 00 22 b5 stq s0,8(t1)
218: 00 00 1d a6 ldq a0,0(gp)
21c: 11 04 ff 47 clr a1
220: 00 00 5d a6 ldq a2,0(gp)
224: e6 00 7f 22 lda a3,230
228: 00 00 7d a7 ldq t12,0(gp)
22c: 00 40 5b 6b jsr ra,(t12),230 <_vm_object_allocate+0x190>
230: 00 00 ba 27 ldah gp,0(ra)
234: 00 00 bd 23 lda gp,0(gp)
238: 00 00 5e a7 ldq ra,0(sp)
23c: 08 00 3e a5 ldq s0,8(sp)
240: 10 00 5e a5 ldq s1,16(sp)
244: 20 00 de 23 lda sp,32(sp)
248: 01 80 fa 6b ret
24c: 00 00 e0 2f unop
250: 1f 04 ff 47 nop
254: 00 00 e0 2f unop
258: 1f 04 ff 47 nop
25c: 00 00 e0 2f unop
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15580.13914.162169.930227>
