Re: SixPacks mods for GCIC users

"kerravon86" <kerravon86-/[email protected]> Sat, 06 Nov 2010 15:00:12 -0000
Newsgroups gmane.comp.emulators.hercules390.vm
Message-ID <[email protected]>
--- In [email protected], Ivan Warren <ivan@...> wrote:
>
> 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.

In this case, with 3.07 it's as bold as brass ...

/*-------------------------------------------------------------------*/
/* 98   LM    - Load Multiple                                   [RS] */
/*-------------------------------------------------------------------*/
DEF_INST(load_multiple)
{
int     r1, r3;                         /* Register numbers          */
int     b2;                             /* effective address base    */
VADR    effective_addr2;                /* effective address         */
int     i, m, n;                        /* Integer work areas        */
U32    *p1, *p2;                        /* Mainstor pointers         */
BYTE   *bp1;                            /* Unaligned maintstor ptr   */

    RS(inst, regs, r1, r3, b2, effective_addr2);

    /* Calculate number of bytes to load */
    n = (((r3 - r1) & 0xF) + 1) << 2;

    /* Calculate number of bytes to next boundary */
    m = 0x800 - ((VADR_L)effective_addr2 & 0x7ff);

    /* Address of operand beginning */
    bp1 = (BYTE*)MADDR(effective_addr2, b2, regs, ACCTYPE_READ, regs->p
    p1=(U32*)bp1;


BFN.  Paul.