]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmSmcLib/Arm/ArmSmc.S
ArmPkg: Move ArmSmcLib from ArmPlatformLib to ArmPkg
[mirror_edk2.git] / ArmPkg / Library / ArmSmcLib / Arm / ArmSmc.S
CommitLineData
eac42a51 1//\r
2// Copyright (c) 2012, ARM Limited. All rights reserved.\r
3//\r
4// This program and the accompanying materials\r
5// are licensed and made available under the terms and conditions of the BSD License\r
6// which accompanies this distribution. The full text of the license may be found at\r
7// http://opensource.org/licenses/bsd-license.php\r
8//\r
9// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11//\r
12//\r
13\r
14.text\r
15.align 3\r
16.arch_extension sec\r
17\r
18GCC_ASM_EXPORT(ArmCallSmc)\r
19GCC_ASM_EXPORT(ArmCallSmcArg1)\r
20GCC_ASM_EXPORT(ArmCallSmcArg2)\r
21GCC_ASM_EXPORT(ArmCallSmcArg3)\r
22\r
23ASM_PFX(ArmCallSmc):\r
24 push {r1}\r
25 mov r1, r0\r
26 ldr r0,[r1]\r
27 smc #0\r
28 str r0,[r1]\r
29 pop {r1}\r
166c01fb 30 bx lr\r
eac42a51 31\r
eac42a51 32ASM_PFX(ArmCallSmcArg1):\r
33 push {r2-r3}\r
34 mov r2, r0\r
35 mov r3, r1\r
36 ldr r0,[r2]\r
37 ldr r1,[r3]\r
38 smc #0\r
39 str r0,[r2]\r
40 str r1,[r3]\r
41 pop {r2-r3}\r
166c01fb 42 bx lr\r
eac42a51 43\r
44ASM_PFX(ArmCallSmcArg2):\r
45 push {r3-r5}\r
46 mov r3, r0\r
47 mov r4, r1\r
48 mov r5, r2\r
49 ldr r0,[r3]\r
50 ldr r1,[r4]\r
51 ldr r2,[r5]\r
52 smc #0\r
53 str r0,[r3]\r
54 str r1,[r4]\r
55 str r2,[r5]\r
56 pop {r3-r5}\r
166c01fb 57 bx lr\r
eac42a51 58\r
59ASM_PFX(ArmCallSmcArg3):\r
60 push {r4-r7}\r
61 mov r4, r0\r
62 mov r5, r1\r
63 mov r6, r2\r
64 mov r7, r3\r
65 ldr r0,[r4]\r
66 ldr r1,[r5]\r
67 ldr r2,[r6]\r
68 ldr r3,[r7]\r
69 smc #0\r
70 str r0,[r4]\r
71 str r1,[r5]\r
72 str r2,[r6]\r
73 str r3,[r7]\r
74 pop {r4-r7}\r
166c01fb 75 bx lr\r