]>
Commit | Line | Data |
---|---|---|
3402aac7 | 1 | //------------------------------------------------------------------------------\r |
1e57a462 | 2 | //\r |
3 | // Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r | |
e58427e3 | 4 | // Copyright (c) 2018, Pete Batard. All rights reserved.<BR>\r |
1e57a462 | 5 | //\r |
4059386c | 6 | // SPDX-License-Identifier: BSD-2-Clause-Patent\r |
1e57a462 | 7 | //\r |
8 | //------------------------------------------------------------------------------\r | |
9 | \r | |
10 | \r | |
e58427e3 PB |
11 | IMPORT __aeabi_uldivmod\r |
12 | EXPORT __aeabi_ldivmod\r | |
13 | EXPORT __rt_sdiv64\r | |
3402aac7 | 14 | \r |
e58427e3 PB |
15 | AREA s___aeabi_ldivmod, CODE, READONLY, ARM\r |
16 | \r | |
17 | ARM\r | |
1e57a462 | 18 | \r |
19 | ;\r | |
e58427e3 | 20 | ;INT64\r |
1e57a462 | 21 | ;EFIAPI\r |
e58427e3 PB |
22 | ;__rt_sdiv64 (\r |
23 | ; IN INT64 Divisor\r | |
24 | ; IN INT64 Dividend\r | |
1e57a462 | 25 | ; );\r |
26 | ;\r | |
e58427e3 PB |
27 | __rt_sdiv64\r |
28 | ; Swap r0-r1 and r2-r3\r | |
29 | MOV r12, r0\r | |
30 | MOV r0, r2\r | |
31 | MOV r2, r12\r | |
32 | MOV r12, r1\r | |
33 | MOV r1, r3\r | |
34 | MOV r3, r12\r | |
35 | B __aeabi_ldivmod\r | |
1e57a462 | 36 | \r |
e58427e3 PB |
37 | ;\r |
38 | ;INT64\r | |
39 | ;EFIAPI\r | |
40 | ;__aeabi_ldivmod (\r | |
41 | ; IN INT64 Dividend\r | |
42 | ; IN INT64 Divisor\r | |
43 | ; );\r | |
44 | ;\r | |
45 | __aeabi_ldivmod\r | |
1e57a462 | 46 | PUSH {r4,lr}\r |
47 | ASRS r4,r1,#1\r | |
48 | EOR r4,r4,r3,LSR #1\r | |
49 | BPL L_Test1\r | |
50 | RSBS r0,r0,#0\r | |
51 | RSC r1,r1,#0\r | |
52 | L_Test1\r | |
53 | TST r3,r3\r | |
54 | BPL L_Test2\r | |
55 | RSBS r2,r2,#0\r | |
56 | RSC r3,r3,#0\r | |
57 | L_Test2\r | |
e58427e3 | 58 | BL __aeabi_uldivmod\r |
1e57a462 | 59 | TST r4,#0x40000000\r |
60 | BEQ L_Test3\r | |
61 | RSBS r0,r0,#0\r | |
62 | RSC r1,r1,#0\r | |
63 | L_Test3\r | |
64 | TST r4,#0x80000000\r | |
65 | BEQ L_Exit\r | |
66 | RSBS r2,r2,#0\r | |
67 | RSC r3,r3,#0\r | |
68 | L_Exit\r | |
69 | POP {r4,pc}\r | |
3402aac7 | 70 | \r |
1e57a462 | 71 | END\r |