]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / udivmoddi4.S
index 03959d6c49c65e298b0b84580ca48b929451fac3..a74db6fad1935808e3b0b7e921e79fa526345e9f 100644 (file)
-#------------------------------------------------------------------------------ 
-#
-# Copyright (c) 2008-2009 Apple Inc. All rights reserved.
-#
-# All rights reserved. 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.
-#
-#------------------------------------------------------------------------------
-
-       .text
-       .align 2
-       .globl ASM_PFX(__udivmoddi4)
-       
-ASM_PFX(__udivmoddi4):
-       stmfd   sp!, {r4, r5, r6, r7, lr}
-       add     r7, sp, #12
-       stmfd   sp!, {r10, r11}
-       sub     sp, sp, #20
-       stmia   sp, {r2-r3}
-       ldr     r6, [sp, #48]
-       orrs    r2, r2, r3
-       mov     r10, r0
-       mov     r11, r1
-       beq     L2
-       subs    ip, r1, #0
-       bne     L4
-       cmp     r3, #0
-       bne     L6
-       cmp     r6, #0
-       beq     L8
-       mov     r1, r2
-       bl      ASM_PFX(__umodsi3)
-       mov     r1, #0
-       stmia   r6, {r0-r1}
-L8:
-       ldr     r1, [sp, #0]
-       mov     r0, r10
-       b       L45
-L6:
-       cmp     r6, #0
-       movne   r1, #0
-       stmneia r6, {r0-r1}
-       b       L2
-L4:
-       ldr     r1, [sp, #0]
-       cmp     r1, #0
-       bne     L12
-       ldr     r2, [sp, #4]
-       cmp     r2, #0
-       bne     L14
-       cmp     r6, #0
-       beq     L16
-       mov     r1, r2
-       mov     r0, r11
-       bl      ASM_PFX(__umodsi3)
-       mov     r1, #0
-       stmia   r6, {r0-r1}
-L16:
-       ldr     r1, [sp, #4]
-       mov     r0, r11
-L45:
-       bl      ASM_PFX(__udivsi3)
-L46:
-       mov     r10, r0
-       mov     r11, #0
-       b       L10
-L14:
-       subs    r1, r0, #0
-       bne     L18
-       cmp     r6, #0
-       beq     L16
-       ldr     r1, [sp, #4]
-       mov     r0, r11
-       bl      ASM_PFX(__umodsi3)
-       mov     r4, r10
-       mov     r5, r0
-       stmia   r6, {r4-r5}
-       b       L16
-L18:
-       sub     r3, r2, #1
-       tst     r2, r3
-       bne     L22
-       cmp     r6, #0
-       movne   r4, r0
-       andne   r5, ip, r3
-       stmneia r6, {r4-r5}
-L24:
-       rsb     r3, r2, #0
-       and     r3, r2, r3
-       clz     r3, r3
-       rsb     r3, r3, #31
-       mov     r0, ip, lsr r3
-       b       L46
-L22:
-       clz     r2, r2
-       clz     r3, ip
-       rsb     r3, r3, r2
-       cmp     r3, #30
-       bhi     L48
-       rsb     r2, r3, #31
-       add     lr, r3, #1
-       mov     r3, r1, asl r2
-       str     r3, [sp, #12]
-       mov     r3, r1, lsr lr
-       ldr     r0, [sp, #0]
-       mov     r5, ip, lsr lr
-       orr     r4, r3, ip, asl r2
-       str     r0, [sp, #8]
-       b       L29
-L12:
-       ldr     r3, [sp, #4]
-       cmp     r3, #0
-       bne     L30
-       sub     r3, r1, #1
-       tst     r1, r3
-       bne     L32
-       cmp     r6, #0
-       andne   r3, r3, r0
-       movne   r2, r3
-       movne   r3, #0
-       stmneia r6, {r2-r3}
-L34:
-       cmp     r1, #1
-       beq     L10
-       rsb     r3, r1, #0
-       and     r3, r1, r3
-       clz     r3, r3
-       rsb     r0, r3, #31
-       mov     r1, ip, lsr r0
-       rsb     r3, r0, #32
-       mov     r0, r10, lsr r0
-       orr     ip, r0, ip, asl r3
-       str     r1, [sp, #12]
-       str     ip, [sp, #8]
-       ldrd    r10, [sp, #8]
-       b       L10
-L32:
-       clz     r2, r1
-       clz     r3, ip
-       rsb     r3, r3, r2
-       rsb     r4, r3, #31
-       mov     r2, r0, asl r4
-       mvn     r1, r3
-       and     r2, r2, r1, asr #31
-       add     lr, r3, #33
-       str     r2, [sp, #8]
-       add     r2, r3, #1
-       mov     r3, r3, asr #31
-       and     r0, r3, r0, asl r1
-       mov     r3, r10, lsr r2
-       orr     r3, r3, ip, asl r4
-       and     r3, r3, r1, asr #31
-       orr     r0, r0, r3
-       mov     r3, ip, lsr lr
-       str     r0, [sp, #12]
-       mov     r0, r10, lsr lr
-       and     r5, r3, r2, asr #31
-       rsb     r3, lr, #31
-       mov     r3, r3, asr #31
-       orr     r0, r0, ip, asl r1
-       and     r3, r3, ip, lsr r2
-       and     r0, r0, r2, asr #31
-       orr     r4, r3, r0
-       b       L29
-L30:
-       clz     r2, r3
-       clz     r3, ip
-       rsb     r3, r3, r2
-       cmp     r3, #31
-       bls     L37
-L48:
-       cmp     r6, #0
-       stmneia r6, {r10-r11}
-       b       L2
-L37:
-       rsb     r1, r3, #31
-       mov     r0, r0, asl r1
-       add     lr, r3, #1
-       mov     r2, #0
-       str     r0, [sp, #12]
-       mov     r0, r10, lsr lr
-       str     r2, [sp, #8]
-       sub     r2, r3, #31
-       and     r0, r0, r2, asr #31
-       mov     r3, ip, lsr lr
-       orr     r4, r0, ip, asl r1
-       and     r5, r3, r2, asr #31
-L29:
-       mov     ip, #0
-       mov     r10, ip
-       b       L40
-L41:
-       ldr     r1, [sp, #12]
-       ldr     r2, [sp, #8]
-       mov     r3, r4, lsr #31
-       orr     r5, r3, r5, asl #1
-       mov     r3, r1, lsr #31
-       orr     r4, r3, r4, asl #1
-       mov     r3, r2, lsr #31
-       orr     r0, r3, r1, asl #1
-       orr     r1, ip, r2, asl #1
-       ldmia   sp, {r2-r3}
-       str     r0, [sp, #12]
-       subs    r2, r2, r4
-       sbc     r3, r3, r5
-       str     r1, [sp, #8]
-       subs    r0, r2, #1
-       sbc     r1, r3, #0
-       mov     r2, r1, asr #31
-       ldmia   sp, {r0-r1}
-       mov     r3, r2
-       and     ip, r2, #1
-       and     r3, r3, r1
-       and     r2, r2, r0
-       subs    r4, r4, r2
-       sbc     r5, r5, r3
-       add     r10, r10, #1
-L40:
-       cmp     r10, lr
-       bne     L41
-       ldrd    r0, [sp, #8]
-       adds    r0, r0, r0
-       adc     r1, r1, r1
-       cmp     r6, #0
-       orr     r10, r0, ip
-       mov     r11, r1
-       stmneia r6, {r4-r5}
-       b       L10
-L2:
-       mov     r10, #0
-       mov     r11, #0
-L10:
-       mov     r0, r10
-       mov     r1, r11
-       sub     sp, r7, #20
-       ldmfd   sp!, {r10, r11}
-       ldmfd   sp!, {r4, r5, r6, r7, pc}
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+#\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+#include <AsmMacroIoLib.h>\r
+\r
+  .syntax unified\r
+\r
+ASM_FUNC(__udivmoddi4)\r
+  stmfd  sp!, {r4, r5, r6, r7, lr}\r
+  add  r7, sp, #12\r
+  stmfd  sp!, {r10, r11}\r
+  sub  sp, sp, #20\r
+  stmia  sp, {r2-r3}\r
+  ldr  r6, [sp, #48]\r
+  orrs  r2, r2, r3\r
+  mov  r10, r0\r
+  mov  r11, r1\r
+  beq  L2\r
+  subs  ip, r1, #0\r
+  bne  L4\r
+  cmp  r3, #0\r
+  bne  L6\r
+  cmp  r6, #0\r
+  beq  L8\r
+  mov  r1, r2\r
+  bl  ASM_PFX(__umodsi3)\r
+  mov  r1, #0\r
+  stmia  r6, {r0-r1}\r
+L8:\r
+  ldr  r1, [sp, #0]\r
+  mov  r0, r10\r
+  b  L45\r
+L6:\r
+  cmp  r6, #0\r
+  movne  r1, #0\r
+  stmiane  r6, {r0-r1}\r
+  b  L2\r
+L4:\r
+  ldr  r1, [sp, #0]\r
+  cmp  r1, #0\r
+  bne  L12\r
+  ldr  r2, [sp, #4]\r
+  cmp  r2, #0\r
+  bne  L14\r
+  cmp  r6, #0\r
+  beq  L16\r
+  mov  r1, r2\r
+  mov  r0, r11\r
+  bl  ASM_PFX(__umodsi3)\r
+  mov  r1, #0\r
+  stmia  r6, {r0-r1}\r
+L16:\r
+  ldr  r1, [sp, #4]\r
+  mov  r0, r11\r
+L45:\r
+  bl  ASM_PFX(__udivsi3)\r
+L46:\r
+  mov  r10, r0\r
+  mov  r11, #0\r
+  b  L10\r
+L14:\r
+  subs  r1, r0, #0\r
+  bne  L18\r
+  cmp  r6, #0\r
+  beq  L16\r
+  ldr  r1, [sp, #4]\r
+  mov  r0, r11\r
+  bl  ASM_PFX(__umodsi3)\r
+  mov  r4, r10\r
+  mov  r5, r0\r
+  stmia  r6, {r4-r5}\r
+  b  L16\r
+L18:\r
+  sub  r3, r2, #1\r
+  tst  r2, r3\r
+  bne  L22\r
+  cmp  r6, #0\r
+  movne  r4, r0\r
+  andne  r5, ip, r3\r
+  stmiane  r6, {r4-r5}\r
+L24:\r
+  rsb  r3, r2, #0\r
+  and  r3, r2, r3\r
+  clz  r3, r3\r
+  rsb  r3, r3, #31\r
+  mov  r0, ip, lsr r3\r
+  b  L46\r
+L22:\r
+  clz  r2, r2\r
+  clz  r3, ip\r
+  rsb  r3, r3, r2\r
+  cmp  r3, #30\r
+  bhi  L48\r
+  rsb  r2, r3, #31\r
+  add  lr, r3, #1\r
+  mov  r3, r1, asl r2\r
+  str  r3, [sp, #12]\r
+  mov  r3, r1, lsr lr\r
+  ldr  r0, [sp, #0]\r
+  mov  r5, ip, lsr lr\r
+  orr  r4, r3, ip, asl r2\r
+  str  r0, [sp, #8]\r
+  b  L29\r
+L12:\r
+  ldr  r3, [sp, #4]\r
+  cmp  r3, #0\r
+  bne  L30\r
+  sub  r3, r1, #1\r
+  tst  r1, r3\r
+  bne  L32\r
+  cmp  r6, #0\r
+  andne  r3, r3, r0\r
+  movne  r2, r3\r
+  movne  r3, #0\r
+  stmiane  r6, {r2-r3}\r
+L34:\r
+  cmp  r1, #1\r
+  beq  L10\r
+  rsb  r3, r1, #0\r
+  and  r3, r1, r3\r
+  clz  r3, r3\r
+  rsb  r0, r3, #31\r
+  mov  r1, ip, lsr r0\r
+  rsb  r3, r0, #32\r
+  mov  r0, r10, lsr r0\r
+  orr  ip, r0, ip, asl r3\r
+  str  r1, [sp, #12]\r
+  str  ip, [sp, #8]\r
+  ldrd  r10, [sp, #8]\r
+  b  L10\r
+L32:\r
+  clz  r2, r1\r
+  clz  r3, ip\r
+  rsb  r3, r3, r2\r
+  rsb  r4, r3, #31\r
+  mov  r2, r0, asl r4\r
+  mvn  r1, r3\r
+  and  r2, r2, r1, asr #31\r
+  add  lr, r3, #33\r
+  str  r2, [sp, #8]\r
+  add  r2, r3, #1\r
+  mov  r3, r3, asr #31\r
+  and  r0, r3, r0, asl r1\r
+  mov  r3, r10, lsr r2\r
+  orr  r3, r3, ip, asl r4\r
+  and  r3, r3, r1, asr #31\r
+  orr  r0, r0, r3\r
+  mov  r3, ip, lsr lr\r
+  str  r0, [sp, #12]\r
+  mov  r0, r10, lsr lr\r
+  and  r5, r3, r2, asr #31\r
+  rsb  r3, lr, #31\r
+  mov  r3, r3, asr #31\r
+  orr  r0, r0, ip, asl r1\r
+  and  r3, r3, ip, lsr r2\r
+  and  r0, r0, r2, asr #31\r
+  orr  r4, r3, r0\r
+  b  L29\r
+L30:\r
+  clz  r2, r3\r
+  clz  r3, ip\r
+  rsb  r3, r3, r2\r
+  cmp  r3, #31\r
+  bls  L37\r
+L48:\r
+  cmp  r6, #0\r
+  stmiane  r6, {r10-r11}\r
+  b  L2\r
+L37:\r
+  rsb  r1, r3, #31\r
+  mov  r0, r0, asl r1\r
+  add  lr, r3, #1\r
+  mov  r2, #0\r
+  str  r0, [sp, #12]\r
+  mov  r0, r10, lsr lr\r
+  str  r2, [sp, #8]\r
+  sub  r2, r3, #31\r
+  and  r0, r0, r2, asr #31\r
+  mov  r3, ip, lsr lr\r
+  orr  r4, r0, ip, asl r1\r
+  and  r5, r3, r2, asr #31\r
+L29:\r
+  mov  ip, #0\r
+  mov  r10, ip\r
+  b  L40\r
+L41:\r
+  ldr  r1, [sp, #12]\r
+  ldr  r2, [sp, #8]\r
+  mov  r3, r4, lsr #31\r
+  orr  r5, r3, r5, asl #1\r
+  mov  r3, r1, lsr #31\r
+  orr  r4, r3, r4, asl #1\r
+  mov  r3, r2, lsr #31\r
+  orr  r0, r3, r1, asl #1\r
+  orr  r1, ip, r2, asl #1\r
+  ldmia  sp, {r2-r3}\r
+  str  r0, [sp, #12]\r
+  subs  r2, r2, r4\r
+  sbc  r3, r3, r5\r
+  str  r1, [sp, #8]\r
+  subs  r0, r2, #1\r
+  sbc  r1, r3, #0\r
+  mov  r2, r1, asr #31\r
+  ldmia  sp, {r0-r1}\r
+  mov  r3, r2\r
+  and  ip, r2, #1\r
+  and  r3, r3, r1\r
+  and  r2, r2, r0\r
+  subs  r4, r4, r2\r
+  sbc  r5, r5, r3\r
+  add  r10, r10, #1\r
+L40:\r
+  cmp  r10, lr\r
+  bne  L41\r
+  ldrd  r0, [sp, #8]\r
+  adds  r0, r0, r0\r
+  adc  r1, r1, r1\r
+  cmp  r6, #0\r
+  orr  r10, r0, ip\r
+  mov  r11, r1\r
+  stmiane  r6, {r4-r5}\r
+  b  L10\r
+L2:\r
+  mov  r10, #0\r
+  mov  r11, #0\r
+L10:\r
+  mov  r0, r10\r
+  mov  r1, r11\r
+  sub  sp, r7, #20\r
+  ldmfd  sp!, {r10, r11}\r
+  ldmfd  sp!, {r4, r5, r6, r7, pc}\r