]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/CompilerIntrinsicsLib/Arm/uldiv.asm
ARM Packages: Fixed line endings
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / uldiv.asm
index d792342e1f078efa274758a0a6e20bcc65629f7a..393794c13af76001fcb167864d13ede42095f816 100644 (file)
-//------------------------------------------------------------------------------ 
-//
-// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-//
-// This program and the accompanying materials
-// are licensed and made available under the terms and conditions of the BSD License
-// which accompanies this distribution.  The full text of the license may be found at
-// http://opensource.org/licenses/bsd-license.php
-//
-// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-//
-//------------------------------------------------------------------------------
-
-
-
-    EXPORT  __aeabi_uldivmod
-
-    AREA  Uldivmod, CODE, READONLY
-
-;        
-;UINT64
-;EFIAPI
-;__aeabi_uldivmod (
-;  IN  UINT64   Dividend  
-;  IN  UINT64   Divisor
-;  )
-;
-__aeabi_uldivmod
-  stmdb   sp!, {r4, r5, r6, lr}
-  mov     r4, r1
-  mov     r5, r0
-  mov     r6, #0  ; 0x0
-  orrs    ip, r3, r2, lsr #31
-  bne     __aeabi_uldivmod_label1
-  tst     r2, r2
-  beq     _ll_div0
-  movs    ip, r2, lsr #15
-  addeq   r6, r6, #16     ; 0x10
-  mov     ip, r2, lsl r6
-  movs    lr, ip, lsr #23
-  moveq   ip, ip, lsl #8
-  addeq   r6, r6, #8      ; 0x8
-  movs    lr, ip, lsr #27
-  moveq   ip, ip, lsl #4
-  addeq   r6, r6, #4      ; 0x4
-  movs    lr, ip, lsr #29
-  moveq   ip, ip, lsl #2
-  addeq   r6, r6, #2      ; 0x2
-  movs    lr, ip, lsr #30
-  moveq   ip, ip, lsl #1
-  addeq   r6, r6, #1      ; 0x1
-  b       _ll_udiv_small
-__aeabi_uldivmod_label1
-  tst     r3, #-2147483648        ; 0x80000000
-  bne     __aeabi_uldivmod_label2
-  movs    ip, r3, lsr #15
-  addeq   r6, r6, #16     ; 0x10
-  mov     ip, r3, lsl r6
-  movs    lr, ip, lsr #23
-  moveq   ip, ip, lsl #8
-  addeq   r6, r6, #8      ; 0x8
-  movs    lr, ip, lsr #27
-  moveq   ip, ip, lsl #4
-  addeq   r6, r6, #4      ; 0x4
-  movs    lr, ip, lsr #29
-  moveq   ip, ip, lsl #2
-  addeq   r6, r6, #2      ; 0x2
-  movs    lr, ip, lsr #30
-  addeq   r6, r6, #1      ; 0x1
-  rsb     r3, r6, #32     ; 0x20
-  moveq   ip, ip, lsl #1
-  orr     ip, ip, r2, lsr r3
-  mov     lr, r2, lsl r6
-  b       _ll_udiv_big
-__aeabi_uldivmod_label2
-  mov     ip, r3
-  mov     lr, r2
-  b       _ll_udiv_ginormous
-  
-_ll_udiv_small
-  cmp     r4, ip, lsl #1
-  mov     r3, #0  ; 0x0
-  subcs   r4, r4, ip, lsl #1
-  addcs   r3, r3, #2      ; 0x2
-  cmp     r4, ip
-  subcs   r4, r4, ip
-  adcs    r3, r3, #0      ; 0x0
-  add     r2, r6, #32     ; 0x20
-  cmp     r2, #32 ; 0x20
-  rsb     ip, ip, #0      ; 0x0
-  bcc     _ll_udiv_small_label1
-  orrs    r0, r4, r5, lsr #30
-  moveq   r4, r5
-  moveq   r5, #0  ; 0x0
-  subeq   r2, r2, #32     ; 0x20
-_ll_udiv_small_label1
-  mov     r1, #0  ; 0x0
-  cmp     r2, #16 ; 0x10
-  bcc     _ll_udiv_small_label2
-  movs    r0, r4, lsr #14
-  moveq   r4, r4, lsl #16
-  addeq   r1, r1, #16     ; 0x10
-_ll_udiv_small_label2
-  sub     lr, r2, r1
-  cmp     lr, #8  ; 0x8
-  bcc     _ll_udiv_small_label3
-  movs    r0, r4, lsr #22
-  moveq   r4, r4, lsl #8
-  addeq   r1, r1, #8      ; 0x8
-_ll_udiv_small_label3
-  rsb     r0, r1, #32     ; 0x20
-  sub     r2, r2, r1
-  orr     r4, r4, r5, lsr r0
-  mov     r5, r5, lsl r1
-  cmp     r2, #1  ; 0x1
-  bcc     _ll_udiv_small_label5
-  sub     r2, r2, #1      ; 0x1
-  and     r0, r2, #7      ; 0x7
-  eor     r0, r0, #7      ; 0x7
-  adds    r0, r0, r0, lsl #1
-  add     pc, pc, r0, lsl #2
-  nop                     ; (mov r0,r0)
-_ll_udiv_small_label4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  sub     r2, r2, #8      ; 0x8
-  tst     r2, r2
-  rsbcc   r4, ip, r4
-  bpl     _ll_udiv_small_label4
-_ll_udiv_small_label5
-  mov     r2, r4, lsr r6
-  bic     r4, r4, r2, lsl r6
-  adcs    r0, r5, r5
-  adc     r1, r4, r4
-  add     r1, r1, r3, lsl r6
-  mov     r3, #0  ; 0x0
-  ldmia   sp!, {r4, r5, r6, pc}
-  
-_ll_udiv_big
-  subs    r0, r5, lr
-  mov     r3, #0  ; 0x0
-  sbcs    r1, r4, ip
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r3, r3, #0      ; 0x0
-  subs    r0, r5, lr
-  sbcs    r1, r4, ip
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r3, r3, #0      ; 0x0
-  subs    r0, r5, lr
-  sbcs    r1, r4, ip
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r3, r3, #0      ; 0x0
-  mov     r1, #0  ; 0x0
-  rsbs    lr, lr, #0      ; 0x0
-  rsc     ip, ip, #0      ; 0x0
-  cmp     r6, #16 ; 0x10
-  bcc     _ll_udiv_big_label1
-  movs    r0, r4, lsr #14
-  moveq   r4, r4, lsl #16
-  addeq   r1, r1, #16     ; 0x10
-_ll_udiv_big_label1
-  sub     r2, r6, r1
-  cmp     r2, #8  ; 0x8
-  bcc     _ll_udiv_big_label2
-  movs    r0, r4, lsr #22
-  moveq   r4, r4, lsl #8
-  addeq   r1, r1, #8      ; 0x8
-_ll_udiv_big_label2
-  rsb     r0, r1, #32     ; 0x20
-  sub     r2, r6, r1
-  orr     r4, r4, r5, lsr r0
-  mov     r5, r5, lsl r1
-  cmp     r2, #1  ; 0x1
-  bcc     _ll_udiv_big_label4
-  sub     r2, r2, #1      ; 0x1
-  and     r0, r2, #3      ; 0x3
-  rsb     r0, r0, #3      ; 0x3
-  adds    r0, r0, r0, lsl #1
-  add     pc, pc, r0, lsl #3
-  nop                     ; (mov r0,r0)
-_ll_udiv_big_label3
-  adcs    r5, r5, r5
-  adcs    r4, r4, r4
-  adcs    r0, lr, r5
-  adcs    r1, ip, r4
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r5, r5, r5
-  adcs    r4, r4, r4
-  adcs    r0, lr, r5
-  adcs    r1, ip, r4
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r5, r5, r5
-  adcs    r4, r4, r4
-  adcs    r0, lr, r5
-  adcs    r1, ip, r4
-  movcs   r5, r0
-  movcs   r4, r1
-  sub     r2, r2, #4      ; 0x4
-  adcs    r5, r5, r5
-  adcs    r4, r4, r4
-  adcs    r0, lr, r5
-  adcs    r1, ip, r4
-  tst     r2, r2
-  movcs   r5, r0
-  movcs   r4, r1
-  bpl     _ll_udiv_big_label3
-_ll_udiv_big_label4
-  mov     r1, #0  ; 0x0
-  mov     r2, r5, lsr r6
-  bic     r5, r5, r2, lsl r6
-  adcs    r0, r5, r5
-  adc     r1, r1, #0      ; 0x0
-  movs    lr, r3, lsl r6
-  mov     r3, r4, lsr r6
-  bic     r4, r4, r3, lsl r6
-  adc     r1, r1, #0      ; 0x0
-  adds    r0, r0, lr
-  orr     r2, r2, r4, ror r6
-  adc     r1, r1, #0      ; 0x0
-  ldmia   sp!, {r4, r5, r6, pc}
-  
-_ll_udiv_ginormous
-  subs    r2, r5, lr
-  mov     r1, #0  ; 0x0
-  sbcs    r3, r4, ip
-  adc     r0, r1, r1
-  movcc   r2, r5
-  movcc   r3, r4
-  ldmia   sp!, {r4, r5, r6, pc}
-  
-_ll_div0
-  ldmia   sp!, {r4, r5, r6, lr}
-  mov     r0, #0  ; 0x0
-  mov     r1, #0  ; 0x0
-  b       __aeabi_ldiv0
-  
-__aeabi_ldiv0
-  BX        r14
-
-  END
-
+//------------------------------------------------------------------------------ \r
+//\r
+// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+//\r
+// This program and the accompanying materials\r
+// are licensed and made available under the terms and conditions of the BSD License\r
+// which accompanies this distribution.  The full text of the license may be found at\r
+// http://opensource.org/licenses/bsd-license.php\r
+//\r
+// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+//\r
+//------------------------------------------------------------------------------\r
+\r
+\r
+\r
+    EXPORT  __aeabi_uldivmod\r
+\r
+    AREA  Uldivmod, CODE, READONLY\r
+\r
+;        \r
+;UINT64\r
+;EFIAPI\r
+;__aeabi_uldivmod (\r
+;  IN  UINT64   Dividend  \r
+;  IN  UINT64   Divisor\r
+;  )\r
+;\r
+__aeabi_uldivmod\r
+  stmdb   sp!, {r4, r5, r6, lr}\r
+  mov     r4, r1\r
+  mov     r5, r0\r
+  mov     r6, #0  ; 0x0\r
+  orrs    ip, r3, r2, lsr #31\r
+  bne     __aeabi_uldivmod_label1\r
+  tst     r2, r2\r
+  beq     _ll_div0\r
+  movs    ip, r2, lsr #15\r
+  addeq   r6, r6, #16     ; 0x10\r
+  mov     ip, r2, lsl r6\r
+  movs    lr, ip, lsr #23\r
+  moveq   ip, ip, lsl #8\r
+  addeq   r6, r6, #8      ; 0x8\r
+  movs    lr, ip, lsr #27\r
+  moveq   ip, ip, lsl #4\r
+  addeq   r6, r6, #4      ; 0x4\r
+  movs    lr, ip, lsr #29\r
+  moveq   ip, ip, lsl #2\r
+  addeq   r6, r6, #2      ; 0x2\r
+  movs    lr, ip, lsr #30\r
+  moveq   ip, ip, lsl #1\r
+  addeq   r6, r6, #1      ; 0x1\r
+  b       _ll_udiv_small\r
+__aeabi_uldivmod_label1\r
+  tst     r3, #-2147483648        ; 0x80000000\r
+  bne     __aeabi_uldivmod_label2\r
+  movs    ip, r3, lsr #15\r
+  addeq   r6, r6, #16     ; 0x10\r
+  mov     ip, r3, lsl r6\r
+  movs    lr, ip, lsr #23\r
+  moveq   ip, ip, lsl #8\r
+  addeq   r6, r6, #8      ; 0x8\r
+  movs    lr, ip, lsr #27\r
+  moveq   ip, ip, lsl #4\r
+  addeq   r6, r6, #4      ; 0x4\r
+  movs    lr, ip, lsr #29\r
+  moveq   ip, ip, lsl #2\r
+  addeq   r6, r6, #2      ; 0x2\r
+  movs    lr, ip, lsr #30\r
+  addeq   r6, r6, #1      ; 0x1\r
+  rsb     r3, r6, #32     ; 0x20\r
+  moveq   ip, ip, lsl #1\r
+  orr     ip, ip, r2, lsr r3\r
+  mov     lr, r2, lsl r6\r
+  b       _ll_udiv_big\r
+__aeabi_uldivmod_label2\r
+  mov     ip, r3\r
+  mov     lr, r2\r
+  b       _ll_udiv_ginormous\r
+  \r
+_ll_udiv_small\r
+  cmp     r4, ip, lsl #1\r
+  mov     r3, #0  ; 0x0\r
+  subcs   r4, r4, ip, lsl #1\r
+  addcs   r3, r3, #2      ; 0x2\r
+  cmp     r4, ip\r
+  subcs   r4, r4, ip\r
+  adcs    r3, r3, #0      ; 0x0\r
+  add     r2, r6, #32     ; 0x20\r
+  cmp     r2, #32 ; 0x20\r
+  rsb     ip, ip, #0      ; 0x0\r
+  bcc     _ll_udiv_small_label1\r
+  orrs    r0, r4, r5, lsr #30\r
+  moveq   r4, r5\r
+  moveq   r5, #0  ; 0x0\r
+  subeq   r2, r2, #32     ; 0x20\r
+_ll_udiv_small_label1\r
+  mov     r1, #0  ; 0x0\r
+  cmp     r2, #16 ; 0x10\r
+  bcc     _ll_udiv_small_label2\r
+  movs    r0, r4, lsr #14\r
+  moveq   r4, r4, lsl #16\r
+  addeq   r1, r1, #16     ; 0x10\r
+_ll_udiv_small_label2\r
+  sub     lr, r2, r1\r
+  cmp     lr, #8  ; 0x8\r
+  bcc     _ll_udiv_small_label3\r
+  movs    r0, r4, lsr #22\r
+  moveq   r4, r4, lsl #8\r
+  addeq   r1, r1, #8      ; 0x8\r
+_ll_udiv_small_label3\r
+  rsb     r0, r1, #32     ; 0x20\r
+  sub     r2, r2, r1\r
+  orr     r4, r4, r5, lsr r0\r
+  mov     r5, r5, lsl r1\r
+  cmp     r2, #1  ; 0x1\r
+  bcc     _ll_udiv_small_label5\r
+  sub     r2, r2, #1      ; 0x1\r
+  and     r0, r2, #7      ; 0x7\r
+  eor     r0, r0, #7      ; 0x7\r
+  adds    r0, r0, r0, lsl #1\r
+  add     pc, pc, r0, lsl #2\r
+  nop                     ; (mov r0,r0)\r
+_ll_udiv_small_label4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  sub     r2, r2, #8      ; 0x8\r
+  tst     r2, r2\r
+  rsbcc   r4, ip, r4\r
+  bpl     _ll_udiv_small_label4\r
+_ll_udiv_small_label5\r
+  mov     r2, r4, lsr r6\r
+  bic     r4, r4, r2, lsl r6\r
+  adcs    r0, r5, r5\r
+  adc     r1, r4, r4\r
+  add     r1, r1, r3, lsl r6\r
+  mov     r3, #0  ; 0x0\r
+  ldmia   sp!, {r4, r5, r6, pc}\r
+  \r
+_ll_udiv_big\r
+  subs    r0, r5, lr\r
+  mov     r3, #0  ; 0x0\r
+  sbcs    r1, r4, ip\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r3, r3, #0      ; 0x0\r
+  subs    r0, r5, lr\r
+  sbcs    r1, r4, ip\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r3, r3, #0      ; 0x0\r
+  subs    r0, r5, lr\r
+  sbcs    r1, r4, ip\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r3, r3, #0      ; 0x0\r
+  mov     r1, #0  ; 0x0\r
+  rsbs    lr, lr, #0      ; 0x0\r
+  rsc     ip, ip, #0      ; 0x0\r
+  cmp     r6, #16 ; 0x10\r
+  bcc     _ll_udiv_big_label1\r
+  movs    r0, r4, lsr #14\r
+  moveq   r4, r4, lsl #16\r
+  addeq   r1, r1, #16     ; 0x10\r
+_ll_udiv_big_label1\r
+  sub     r2, r6, r1\r
+  cmp     r2, #8  ; 0x8\r
+  bcc     _ll_udiv_big_label2\r
+  movs    r0, r4, lsr #22\r
+  moveq   r4, r4, lsl #8\r
+  addeq   r1, r1, #8      ; 0x8\r
+_ll_udiv_big_label2\r
+  rsb     r0, r1, #32     ; 0x20\r
+  sub     r2, r6, r1\r
+  orr     r4, r4, r5, lsr r0\r
+  mov     r5, r5, lsl r1\r
+  cmp     r2, #1  ; 0x1\r
+  bcc     _ll_udiv_big_label4\r
+  sub     r2, r2, #1      ; 0x1\r
+  and     r0, r2, #3      ; 0x3\r
+  rsb     r0, r0, #3      ; 0x3\r
+  adds    r0, r0, r0, lsl #1\r
+  add     pc, pc, r0, lsl #3\r
+  nop                     ; (mov r0,r0)\r
+_ll_udiv_big_label3\r
+  adcs    r5, r5, r5\r
+  adcs    r4, r4, r4\r
+  adcs    r0, lr, r5\r
+  adcs    r1, ip, r4\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r5, r5, r5\r
+  adcs    r4, r4, r4\r
+  adcs    r0, lr, r5\r
+  adcs    r1, ip, r4\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r5, r5, r5\r
+  adcs    r4, r4, r4\r
+  adcs    r0, lr, r5\r
+  adcs    r1, ip, r4\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  sub     r2, r2, #4      ; 0x4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, r4, r4\r
+  adcs    r0, lr, r5\r
+  adcs    r1, ip, r4\r
+  tst     r2, r2\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  bpl     _ll_udiv_big_label3\r
+_ll_udiv_big_label4\r
+  mov     r1, #0  ; 0x0\r
+  mov     r2, r5, lsr r6\r
+  bic     r5, r5, r2, lsl r6\r
+  adcs    r0, r5, r5\r
+  adc     r1, r1, #0      ; 0x0\r
+  movs    lr, r3, lsl r6\r
+  mov     r3, r4, lsr r6\r
+  bic     r4, r4, r3, lsl r6\r
+  adc     r1, r1, #0      ; 0x0\r
+  adds    r0, r0, lr\r
+  orr     r2, r2, r4, ror r6\r
+  adc     r1, r1, #0      ; 0x0\r
+  ldmia   sp!, {r4, r5, r6, pc}\r
+  \r
+_ll_udiv_ginormous\r
+  subs    r2, r5, lr\r
+  mov     r1, #0  ; 0x0\r
+  sbcs    r3, r4, ip\r
+  adc     r0, r1, r1\r
+  movcc   r2, r5\r
+  movcc   r3, r4\r
+  ldmia   sp!, {r4, r5, r6, pc}\r
+  \r
+_ll_div0\r
+  ldmia   sp!, {r4, r5, r6, lr}\r
+  mov     r0, #0  ; 0x0\r
+  mov     r1, #0  ; 0x0\r
+  b       __aeabi_ldiv0\r
+  \r
+__aeabi_ldiv0\r
+  BX        r14\r
+\r
+  END\r
+\r