From a73e6f20d43920a5ee4a7b84d32c2c46ad855bd4 Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Wed, 30 Sep 2009 07:59:36 +0100 Subject: [PATCH] ppc asm to pass vm pointer: overflow fns --- vm/cpu-ppc.S | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/vm/cpu-ppc.S b/vm/cpu-ppc.S index 0a0f335616..d7310eec32 100644 --- a/vm/cpu-ppc.S +++ b/vm/cpu-ppc.S @@ -4,40 +4,43 @@ in the public domain. */ #define DS_REG r13 -DEF(void,primitive_fixnum_add,(void)): +DEF(void,primitive_fixnum_add,(void *vm)): + mr r5,r3 /* save vm ptr for overflow */ lwz r3,0(DS_REG) lwz r4,-4(DS_REG) subi DS_REG,DS_REG,4 li r0,0 mtxer r0 - addo. r5,r3,r4 + addo. r6,r3,r4 bso add_overflow - stw r5,0(DS_REG) + stw r6,0(DS_REG) blr add_overflow: b MANGLE(overflow_fixnum_add) -DEF(void,primitive_fixnum_subtract,(void)): +DEF(void,primitive_fixnum_subtract,(void *vm)): + mr r5,r3 /* save vm ptr for overflow */ lwz r3,-4(DS_REG) lwz r4,0(DS_REG) subi DS_REG,DS_REG,4 li r0,0 mtxer r0 - subfo. r5,r4,r3 + subfo. r6,r4,r3 bso sub_overflow - stw r5,0(DS_REG) + stw r6,0(DS_REG) blr sub_overflow: b MANGLE(overflow_fixnum_subtract) -DEF(void,primitive_fixnum_multiply,(void)): +DEF(void,primitive_fixnum_multiply,(void *vm)): + mr r5,r3 /* save vm ptr for overflow */ lwz r3,0(DS_REG) lwz r4,-4(DS_REG) subi DS_REG,DS_REG,4 srawi r3,r3,3 - mullwo. r5,r3,r4 + mullwo. r6,r3,r4 bso multiply_overflow - stw r5,0(DS_REG) + stw r6,0(DS_REG) blr multiply_overflow: srawi r4,r4,3 -- 2.34.1