1/*
2 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include "pico/asm_helper.S"
8
9pico_default_asm_setup
10
11.macro int64_section name
12#if PICO_INT64_OPS_IN_RAM
13.section RAM_SECTION_NAME(\name), "ax"
14#else
15.section SECTION_NAME(\name), "ax"
16#endif
17.endm
18
19int64_section __aeabi_lmul
20
21wrapper_func __aeabi_lmul
22    muls   r1, r2
23    muls   r3, r0
24    adds   r1, r3
25    mov    r12, r1
26    lsrs   r1, r2, #16
27    uxth   r3, r0
28    muls   r3, r1
29    push   {r4}
30    lsrs   r4, r0, #16
31    muls   r1, r4
32    uxth   r2, r2
33    uxth   r0, r0
34    muls   r0, r2
35    muls   r2, r4
36    lsls   r4, r3, #16
37    lsrs   r3, #16
38    adds   r0, r4
39    pop    {r4}
40    adcs   r1, r3
41    lsls   r3, r2, #16
42    lsrs   r2, #16
43    adds   r0, r3
44    adcs   r1, r2
45    add    r1, r12
46    bx lr
47