Ticket #2029: be.patch

File be.patch, 1.6 KB (added by plobsing, 4 years ago)

Bigendian Patch

  • src/pmc/structview.pmc

    diff --git a/src/pmc/structview.pmc b/src/pmc/structview.pmc
    index dbfe792..4f2af2c 100644
    a b  
    511511                    break; 
    512512                } 
    513513 
    514 #if PARROT_BIGENDIAN 
    515                 Parrot_ex_throw_from_c_args(INTERP, NULL, 0, 
    516                         "Unaligned access not yet implemented for big-endian systems"); 
    517 #else 
    518514                /* fetch hi bits of first byte */ 
    519515                acc = *cptr++ >> elts[i].bit_offset; 
    520516                n   = 8       -  elts[i].bit_offset; 
     
    527523 
    528524                /* mask off hi bits of last byte */ 
    529525                acc &= (~(UINTVAL)0) >> (sizeof (UINTVAL) * 8 - bits); 
    530 #endif 
    531526 
    532527                return acc; 
    533528            } 
     
    591586                    break; 
    592587                } 
    593588 
    594 #if PARROT_BIGENDIAN 
    595                 Parrot_ex_throw_from_c_args(INTERP, NULL, 0, 
    596                         "Unaligned write not yet implemented for big-endian systems"); 
    597 #else 
    598589                /* cache last byte (for restoring hi bits) */ 
    599590                tempc    = cptr[(bits + elts[i].bit_offset)/8]; 
    600591 
     
    614605                n = 8 - (n - bits); /* how many bits of last byte we should have written */ 
    615606                *cptr &=           (1 << n) - 1; 
    616607                *cptr |= tempc & ~((1 << n) - 1); 
    617 #endif 
    618608            } 
    619609            break; 
    620610          default: