         temp temp index ADD
         temp temp index ADD
         temp temp byte-array-offset LHZ
-        temp temp 8 SLWI
-        dst dst temp OR
+        temp temp 7 SLWI
+        dst dst temp XOR
         "end" resolve-label
     ] with-scope ;
 

    dst class store-header
    dst class store-tagged ;

: %alien-global ( dst name -- )
    [ f rot %load-dlsym ] [ drop dup 0 LWZ ] 2bi ;

: load-cards-offset ( dst -- )
    "cards_offset" %alien-global ;

: load-decks-offset ( dst -- )
    "decks_offset" %alien-global ;

M:: ppc %write-barrier ( src card# table -- )
    card-mark scratch-reg LI

M: ppc %not     NOT ;

: %alien-invoke-tail ( func dll -- )
    [ scratch-reg ] 2dip %alien-global scratch-reg MTCTR BCTR ;

:: exchange-regs ( r1 r2 -- )
    scratch-reg r1 MR
