PowerPC backend fixes
parent
b9ee92e484
commit
65dea0aa26
|
@ -1,6 +1,7 @@
|
|||
! Copyright (C) 2008 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors system kernel alien.c-types cpu.architecture cpu.ppc ;
|
||||
USING: accessors system kernel layouts
|
||||
alien.c-types cpu.architecture cpu.ppc ;
|
||||
IN: cpu.ppc.linux
|
||||
|
||||
<<
|
||||
|
@ -8,12 +9,12 @@ t "longlong" c-type (>>stack-align?)
|
|||
t "ulonglong" c-type (>>stack-align?)
|
||||
>>
|
||||
|
||||
M: linux reserved-area-size 2 ;
|
||||
M: linux reserved-area-size 2 cells ;
|
||||
|
||||
M: linux lr-save 1 ;
|
||||
M: linux lr-save 1 cells ;
|
||||
|
||||
M: float-regs param-regs { 1 2 3 4 5 6 7 8 } ;
|
||||
M: float-regs param-regs drop { 1 2 3 4 5 6 7 8 } ;
|
||||
|
||||
M: ppc value-structs? drop f ;
|
||||
M: ppc value-structs? f ;
|
||||
|
||||
M: ppc fp-shadows-int? drop f ;
|
||||
M: ppc fp-shadows-int? f ;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
! Copyright (C) 2008 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors system kernel alien.c-types cpu.architecture cpu.ppc ;
|
||||
USING: accessors system kernel layouts
|
||||
alien.c-types cpu.architecture cpu.ppc ;
|
||||
IN: cpu.ppc.macosx
|
||||
|
||||
<<
|
||||
|
@ -9,12 +10,12 @@ IN: cpu.ppc.macosx
|
|||
4 "double" c-type (>>align)
|
||||
>>
|
||||
|
||||
M: macosx reserved-area-size 6 ;
|
||||
M: macosx reserved-area-size 6 cells ;
|
||||
|
||||
M: macosx lr-save 2 ;
|
||||
M: macosx lr-save 2 cells ;
|
||||
|
||||
M: float-regs param-regs { 1 2 3 4 5 6 7 8 9 10 11 12 13 } ;
|
||||
M: float-regs param-regs drop { 1 2 3 4 5 6 7 8 9 10 11 12 13 } ;
|
||||
|
||||
M: ppc value-structs? drop t ;
|
||||
M: ppc value-structs? t ;
|
||||
|
||||
M: ppc fp-shadows-int? drop t ;
|
||||
M: ppc fp-shadows-int? t ;
|
||||
|
|
|
@ -349,12 +349,17 @@ M: ppc %gc
|
|||
"end" resolve-label ;
|
||||
|
||||
M: ppc %prologue ( n -- )
|
||||
0 scratch-reg LOAD32 rc-absolute-ppc-2/2 rel-this
|
||||
#! We use a volatile register (r11) here for scratch. Because
|
||||
#! callback bodies have a prologue too, we cannot assume
|
||||
#! that c_to_factor saved all non-volatile registers, so
|
||||
#! we have to respect the C calling convention. Also, we
|
||||
#! cannot touch any param-regs either.
|
||||
0 11 LOAD32 rc-absolute-ppc-2/2 rel-this
|
||||
0 MFLR
|
||||
1 1 pick neg ADDI
|
||||
scratch-reg 1 pick xt-save STW
|
||||
dup scratch-reg LI
|
||||
scratch-reg 1 pick next-save STW
|
||||
11 1 pick xt-save STW
|
||||
dup 11 LI
|
||||
11 1 pick next-save STW
|
||||
0 1 rot lr-save + STW ;
|
||||
|
||||
M: ppc %epilogue ( n -- )
|
||||
|
|
Loading…
Reference in New Issue