n>> spill@ cell /i ;
: LOAD32 ( r n -- )
- [ -16 shift HEX: ffff bitand LIS ]
- [ [ dup ] dip HEX: ffff bitand ORI ] 2bi ;
+ [ -16 shift 0xffff bitand LIS ]
+ [ [ dup ] dip 0xffff bitand ORI ] 2bi ;
: LOAD64 ( r n -- )
[ dup ] dip {
- [ nip -48 shift HEX: ffff bitand LIS ]
- [ -32 shift HEX: ffff bitand ORI ]
+ [ nip -48 shift 0xffff bitand LIS ]
+ [ -32 shift 0xffff bitand ORI ]
[ drop 32 SLDI ]
- [ -16 shift HEX: ffff bitand ORIS ]
- [ HEX: ffff bitand ORI ]
+ [ -16 shift 0xffff bitand ORIS ]
+ [ 0xffff bitand ORI ]
} 3cleave ;
HOOK: %clear-tag-bits cpu ( dst src -- )
M: ppc.64 %load-cell-imm-rc rc-absolute-ppc-2/2/2/2 ;
M: ppc.32 %load-immediate ( reg val -- )
- dup HEX: -8000 HEX: 7fff between? [ LI ] [ LOAD32 ] if ;
+ dup -0x8000 0x7fff between? [ LI ] [ LOAD32 ] if ;
M: ppc.64 %load-immediate ( reg val -- )
- dup HEX: -8000 HEX: 7fff between? [ LI ] [ LOAD64 ] if ;
+ dup -0x8000 0x7fff between? [ LI ] [ LOAD64 ] if ;
M: ppc %load-reference ( reg obj -- )
[ [ 0 %load-cell-imm ] [ %load-cell-imm-rc rel-literal ] bi* ]
! Is this structure small enough to be returned in registers?
M: ppc return-struct-in-registers? ( c-type -- ? )
- c-type return-in-registers?>> ;
+ lookup-c-type return-in-registers?>> ;
! If t, floats are never passed in param regs
M: ppc float-on-stack? ( -- ? ) f ;
M: ppc immediate-bitwise? ( n -- ? ) 0 65535 between? ;
M: ppc immediate-store? ( n -- ? ) immediate-comparand? ;
-USE: vocabs.loader
+USE: vocabs
{
{ [ os linux? ] [
{
[ ]
} cond
-complex-double c-type t >>return-in-registers? drop
+complex-double lookup-c-type t >>return-in-registers? drop