X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=device%2Flib%2F_mulint.c;h=387585c02b16b67075decfc889f76c969ac268f4;hb=400a10f587fa3d37986233200e77ce1f3e21fd74;hp=dc6824c0f5f8a9b19b36233b5ff9822357e60412;hpb=f4f4125941b902be802bbe45871e8d86e2dc0959;p=fw%2Fsdcc diff --git a/device/lib/_mulint.c b/device/lib/_mulint.c index dc6824c0..387585c0 100644 --- a/device/lib/_mulint.c +++ b/device/lib/_mulint.c @@ -25,10 +25,6 @@ /* Signed and unsigned multiplication are the same - as long as the output has the same precision as the input. - To do: _muluint and _mulsint should be replaced by _mulint. - - bernhard@bernhardheld.de - Assembler-functions are provided for: ds390 mcs51 small @@ -56,10 +52,12 @@ # endif #endif -#ifdef _MULINT_ASM_LARGE +#if defined(_MULINT_ASM_LARGE) -unsigned int -_muluint (unsigned int a, unsigned int b) // in future: _mulint +#pragma save +#pragma less_pedantic +int +_mulint (int a, int b) { a*b; // hush the compiler @@ -77,7 +75,7 @@ _muluint (unsigned int a, unsigned int b) // in future: _mulint #if defined(SDCC_PARMS_IN_BANK1) mov a,b1_0 #else - mov dptr,#__muluint_PARM_2 + mov dptr,#__mulint_PARM_2 movx a,@dptr ; lsb_b #endif mul ab ; lsb_a*lsb_b @@ -109,27 +107,20 @@ _muluint (unsigned int a, unsigned int b) // in future: _mulint ret _endasm; } +#pragma restore -int -_mulsint (int a, int b) // obsolete -{ - return _muluint (a, b); -} - -#elif defined _MULINT_ASM_SMALL || defined _MULINT_ASM_SMALL_AUTO +#elif defined(_MULINT_ASM_SMALL) || defined(_MULINT_ASM_SMALL_AUTO) -void +#pragma save +#pragma less_pedantic +int _mulint_dummy (void) _naked { _asm __mulint: - __muluint: ; obsolete - __mulsint: ; obsolete .globl __mulint - .globl __muluint ; obsolete - .globl __mulsint ; obsolete #if !defined(SDCC_STACK_AUTO) || defined(SDCC_PARMS_IN_BANK1) @@ -139,21 +130,17 @@ _mulint_dummy (void) _naked .area OSEG (OVR,DATA) #endif #if defined(SDCC_PARMS_IN_BANK1) - #define bl (b1_0) - #define bh (b1_1) + #define bl (b1_0) + #define bh (b1_1) #else - #define bl (__mulint_PARM_2) - #define bh (__mulint_PARM_2 + 1) + #define bl (__mulint_PARM_2) + #define bh (__mulint_PARM_2 + 1) __mulint_PARM_2: - __muluint_PARM_2: ; obsolete - __mulsint_PARM_2: ; obsolete .globl __mulint_PARM_2 - .globl __muluint_PARM_2 ; obsolete - .globl __mulsint_PARM_2 ; obsolete .ds 2 -#endif +#endif .area CSEG (CODE) @@ -213,6 +200,7 @@ _mulint_dummy (void) _naked _endasm ; } +#pragma restore #else @@ -221,10 +209,10 @@ union uu { unsigned int t; } ; -unsigned int -_muluint (unsigned int a, unsigned int b) // in future: _mulint +int +_mulint (int a, int b) { -#if defined(SDCC_MODEL_LARGE) || defined(SDCC_ds390) // still needed for large + stack-auto +#if !defined(SDCC_STACK_AUTO) && (defined(SDCC_MODEL_LARGE) || defined(SDCC_ds390)) // still needed for large union uu xdata *x; union uu xdata *y; union uu t; @@ -244,12 +232,6 @@ _muluint (unsigned int a, unsigned int b) // in future: _mulint return t.t; } -int -_mulsint (int a, int b) // obsolete -{ - return _muluint (a, b); -} - #endif #undef _MULINT_ASM