update GetPerformanceCounterProperties() declare
[people/mcb30/edk2.git] / edk2 / MdePkg / Library / BaseTimerLibLocalApic / Ipf / PalCallStatic.s
1 /// @file\r
2 ///   Contains an implementation of CallPalProcStatic on Itanium-based\r
3 ///   architecture.\r
4 ///\r
5 /// Copyright (c) 2006, Intel Corporation\r
6 /// All rights reserved. This program and the accompanying materials\r
7 /// are licensed and made available under the terms and conditions of the BSD License\r
8 /// which accompanies this distribution.  The full text of the license may be found at\r
9 /// http://opensource.org/licenses/bsd-license.php\r
10 ///\r
11 /// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 /// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 ///\r
14 /// Module Name:  PalCallStatic.s\r
15 ///\r
16 ///\r
17 \r
18 .auto\r
19 .text\r
20 \r
21 .proc   PalCallStatic\r
22 .type   PalCallStatic, @function\r
23 .regstk 5, 0, 0, 0\r
24 PalCallStatic::\r
25         cmp.eq              p15 = in0, r0\r
26         mov                 r31 = in4\r
27         mov                 r8  = ip\r
28 \r
29 (p15)   mov                 in0 = ar.k5\r
30         add                 r8  = (_PalProcReturn - PalCallStatic), r8\r
31         mov                 r30 = in3\r
32 \r
33         mov                 in4 = psr\r
34         mov                 in3 = b0\r
35         mov                 b7  = in0\r
36 \r
37         rsm                 1 << 14                 // Disable interrupts\r
38         mov                 r29 = in2\r
39         mov                 r28 = in1\r
40 \r
41         mov                 b0  = r8\r
42         br.cond.sptk.many   b7\r
43 \r
44 _PalProcReturn:\r
45         mov                 psr.l = in4\r
46         mov                 b0  = in3\r
47         br.ret.sptk.many    b0\r
48 .endp   PalCallStatic\r