1/*
2 * Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
3 *
4 * This program and the accompanying materials
5 * are licensed and made available under the terms and conditions of the BSD License
6 * which accompanies this distribution.  The full text of the license may be found at
7 * http://opensource.org/licenses/bsd-license.php
8 *
9 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 */
12
13#include <arm/asm_help.h>
14
15.extern ___udivmoddi4
16
17EnterARM(__moddi3)
18  stmfd  sp!, {r4, r5, r7, lr}
19  mov  r4, r1, asr #31
20  add  r7, sp, #8
21  stmfd  sp!, {r10, r11}
22  mov  r10, r3, asr #31
23  sub  sp, sp, #16
24  mov  r5, r4
25  mov  r11, r10
26  eor  r0, r0, r4
27  eor  r1, r1, r4
28  eor  r2, r2, r10
29  eor  r3, r3, r10
30  add  ip, sp, #8
31  subs  r0, r0, r4
32  sbc  r1, r1, r5
33  subs  r2, r2, r10
34  sbc  r3, r3, r11
35  str  ip, [sp, #0]
36  bl  ___udivmoddi4
37  ldrd  r0, r1, [sp, #8]
38  eor  r0, r0, r4
39  eor  r1, r1, r4
40  subs  r0, r0, r4
41  sbc  r1, r1, r5
42  sub  sp, r7, #16
43  ldmfd  sp!, {r10, r11}
44  ldmfd  sp!, {r4, r5, r7, pc}
45