1
2INCLUDE "config_private.inc"
3
4SECTION code_clib
5SECTION code_l_sdcc
6
7PUBLIC __mullong
8
9EXTERN l_mulu_32_32x32
10
11__mullong:
12
13   ; multiply two 32-bit multiplicands into a 32-bit product
14   ;
15   ; enter : stack = multiplicand (32-bit), multiplicand (32-bit), ret
16   ;
17   ; exit  : dehl = product
18
19   pop af
20   exx
21   pop hl
22   pop de                      ; dehl = multiplicand
23   exx
24   pop hl
25   pop de                      ; dehl = multiplicand
26
27   push de
28   push hl
29   push de
30   push hl
31   push af
32
33IF (__CLIB_OPT_IMATH <= 50) || (__SDCC_IY)
34
35   jp l_mulu_32_32x32
36
37ENDIF
38
39IF (__CLIB_OPT_IMATH > 50) && (__SDCC_IX)
40
41   push ix
42
43   call l_mulu_32_32x32
44
45   pop ix
46   ret
47
48ENDIF
49