+++ /dev/null
-//\r
-// Copyright (c) 2012-2014, ARM Limited. All rights reserved.\r
-// Copyright (c) 2014, Linaro Limited. All rights reserved.\r
-//\r
-// SPDX-License-Identifier: BSD-2-Clause-Patent\r
-//\r
-//\r
-\r
-\r
- INCLUDE AsmMacroExport.inc\r
-\r
- RVCT_ASM_EXPORT ArmCallHvc\r
- push {r4-r8}\r
- // r0 will be popped just after the HVC call\r
- push {r0}\r
-\r
- // Load the HVC arguments values into the appropriate registers\r
- ldr r7, [r0, #28]\r
- ldr r6, [r0, #24]\r
- ldr r5, [r0, #20]\r
- ldr r4, [r0, #16]\r
- ldr r3, [r0, #12]\r
- ldr r2, [r0, #8]\r
- ldr r1, [r0, #4]\r
- ldr r0, [r0, #0]\r
-\r
- hvc #0\r
-\r
- // Pop the ARM_HVC_ARGS structure address from the stack into r8\r
- pop {r8}\r
-\r
- // Load the HVC returned values into the appropriate registers\r
- // A HVC call can return up to 4 values - we do not need to store back r4-r7.\r
- str r3, [r8, #12]\r
- str r2, [r8, #8]\r
- str r1, [r8, #4]\r
- str r0, [r8, #0]\r
-\r
- mov r0, r8\r
-\r
- // Restore the registers r4-r8\r
- pop {r4-r8}\r
-\r
- bx lr\r
-\r
- END\r