     [ 11 ] 2dip %alien-global 11 MTLR BLRL ;
 
 M: ppc %alien-callback ( quot -- )
-    3 swap %load-reference "c_to_factor" f %alien-invoke ;
+    3 swap %load-reference
+    4 %load-vm-addr
+    "c_to_factor" f %alien-invoke ;
 
 M: ppc %prepare-alien-indirect ( -- )
+    3 %load-vm-addr
     "unbox_alien" f %alien-invoke
     15 3 MR ;
 

    3 3 0 LWZ ;

M: ppc %nest-stacks ( -- )
    "nest_stacks" f %alien-invoke ;

M: ppc %unnest-stacks ( -- )
    "unnest_stacks" f %alien-invoke ;

M: ppc %unbox-small-struct ( size -- )

    ! If n = f, then we're boxing a returned struct
    ! Compute destination address and load struct size
    [ [ 3 1 ] dip struct-return@ ADDI ] [ heap-size 4 LI ] bi*
    5 %load-vm-addr
    ! Call the function
    "box_value_struct" f %alien-invoke ;

