[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] S/390 host fixed
From: |
Thiemo Seufer |
Subject: |
Re: [Qemu-devel] [PATCH] S/390 host fixed |
Date: |
Thu, 13 Sep 2007 05:21:58 +0100 |
User-agent: |
Mutt/1.5.16 (2007-06-11) |
Ulrich Hecht wrote:
[snip]
> > > +#ifdef __s390__
> > > + retaddr = (void*)((unsigned long)retaddr & 0x7fffffffUL);
> > > +#endif
> >
> > All of those look weird. Is this a null-extension vs. sign-extension
> > issue?
>
> S/390 has a 31 (thirty-one) bit address space; the MSB of the PSW is not
> part of the address and must be masked out. This is simply part of the
> architecture, there's no way around it.
It looks like the retaddr value is always acquired via the GETPC macro,
which does a __builtin_return_address(0). Could you check that
- Gcc's __builtin_return_address isn't just broken
- If the compiler is ok, test if twiddling the bit in the GETPC macro
works for s390. I suspect this catches more instances of the problem
and might even explain the odd breakage you saw.
> > > +#ifdef __s390__
> > > + func = NULL; /* does not work on S/390 for unknown
> > > reasons */ +#else
> > > func = gen_jcc_sub[s->cc_op - CC_OP_SUBB][jcc_op];
> > > +#endif
> >
> > Hum. It wold be good to know what happens here.
>
> Indeed. :)
Thiemo
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH] S/390 host fixed,
Thiemo Seufer <=