Re: SixPacks mods for GCIC users

"paoloG" <[email protected]> Sun, 07 Nov 2010 06:41:20 -0000
Newsgroups gmane.comp.emulators.hercules390.vm
Message-ID <[email protected]>



--- In [email protected], Ivan Warren <ivan@...> wrote:
>
> On 11/6/2010 2:37 PM, kerravon86 wrote:
> >>
> >> In this case the LM 0,1,0(3) gives erratic results.
> >
> > Erratic? It should have given a specification
> > exception, shouldn't it? 3/4 of the time.
> >
> 
> No way !
> 
> There is no imposed alignment on the LM instruction.
> 
> If an unaligned LM gives incorrect results, produces a machine check or 
> kills hercules on a host that imposes 32 bit alignments for fetches, 
> then it's a hercules issue.
> 
> On my own ARM experimentation, I encountered a few of those, but they 
> might crept back in due to the fact ARM is seldom used as a hercules host.
> 
> The reason for this to happen is because we might - at some point - cast 
> an arbitrary storage location to a unsigned 32 bit value - and then the 
> optimizer will infer that it *IS* aligned. The issue is that it's 
> sometime a bit tricky to track because the cast can be quite far from 
> where the issue occurs.
> 
> Unfortunately, for the time being, I don't have any ARM setup (although 
> I still have the hardware stowed somewhere in a box.. A WRTG54G router) 
> - but I'd have to re-install linux on it (I think I should be able to 
> use OpenWRT for that).
> 
> --Ivan
>

Ivan,

I obtained a complete scheme of the failing LM instruction
 using a little test program.

I have the following  fields:

ALIGN  DS 0F
DISPLACE DS CL0   (or 1,2,3)
FIELD1 DC C'ABCDEFGH'
FIELD2 DC C'12345678'

and I do:

TEST  LM 6,7,FIELD2

I get in R6 and R7 (varying the DISPLACE LENGTH)

DISPLACE = 0 : 1234 5678 (correct)
DISPLACE = 1 : 123H 5674
DISPLACE = 2 : 12GH 5634
DISPLACE = 3 : 1FGH 5234

This scheme gave me the wrong idea of 'erratic' behaviour;-) 

BFN

Paul