RE: Re: SixPacks mods for GCIC users
"Gregg C Levine" <[email protected]> Mon, 8 Nov 2010 21:18:26 -0500
| Newsgroups | gmane.comp.emulators.hercules390.vm |
|---|---|
| Message-ID | <011c01cb7fb4$65daccb0$31906610$@net> |
Hello! The correct expression is "Something is rotten in Denmark.", and Hamlet did say it, but I can't recall where in the play it is said. By the way Vanya Doctor Smith is the only expert here, I do know enough about the Bard to give someone a good argument. --- Gregg C Levine [email protected] "This signature is not the same one. Move along! Move along!" -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Ivan Warren Sent: Saturday, November 06, 2010 10:50 PM To: [email protected] Subject: Re: [H390-VM] Re: SixPacks mods for GCIC users On 11/7/2010 1:56 AM, Dave McGuire wrote: > On 11/6/10 3:50 PM, paoloG wrote: >>> And what makes you think it is ARM-specific? It >>> might be a Herc bug if it's not abending on the >>> other environments. Although VM may be intercepting >>> that. Which would make a separate VM bug. >>> >>> Or am I missing something? >> >> I had this behaviour only in Hercules ARM version >> >> (I tried VM/370 on Intel x86, SPARC, PowerPC and it worked fine) > > If it works with the same release of Hercules on x86, SPARC, and PPC, > but fails on ARM, then it's either a bug in Hercules or a bug in the > host machine's C compiler or assembler...no ifs, ands, or buts. > > Hercules is very portable and host-architecture-agnostic; I'm > surprised to see this happening at all. And ARM is one of the most > widely-deployed processor architectures in the world today (if not THE > most widely-deployed); compilers for ARM are generally pretty > well-debugged at this point. This is very strange indeed. > > -Dave > The compiler - and the code is host architecture agnostic (for the most part).. However, hercules DOES have a few bits that are a bit outside the C standards : - 1) We are assuming that accessing (fetching or storing) a 32 bit aligned value from memory is MP safe (that is the value is atomically fetched/stored). We pretty much it's always true on Intel arch and on ESA/390 - z/Arch itself.. I'm pretty sure it also hold on PowerPC.. Not sure about MIPS, SPARC or ARM(Not sure ARM or MIPS has Multi processor anyway). - 2) (And that's the problem here) : we're casting values to types that MAY require alignment on some host architectures.. We have a specific build flag for this (whether the host requires aligned access.. 16 bit alignment for 16 bit access, 32 bit alignment for 32 bit access, etc..).. However, there are SOME instances (as noted with LM) where we're missing either a conditional compile or a miscast. I need to check the C standard about it - but it's probably going to tell me I shouldn't be casting a pointer to a unsigned 32 bit integer without knowing it ACTUALLY is an unsigned 32 bit integer for the the host I'm running on (including alignment). I'm a little surprised to hear people are getting inconsistent results . I would certainly have expected a machine check - due to SIGSEGV or SIGBUS - But bad data ? There certainly something wrong in the state of Denmark (as Hamlet.. or Greg Smith - Our own expert in those matters would say). --Ivan