--- /dev/null
+/// @file\r
+/// Contains an implementation of CallPalProcStatic on Itanium-based\r
+/// architecture.\r
+///\r
+/// Copyright (c) 2006, Intel Corporation\r
+/// All rights reserved. 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
+/// Module Name: PalCallStatic.s\r
+///\r
+///\r
+\r
+.auto\r
+.text\r
+\r
+.proc PalCallStatic\r
+.type PalCallStatic, @function\r
+.regstk 5, 0, 0, 0\r
+PalCallStatic::\r
+ cmp.eq p6 = r0, in0\r
+ mov r31 = in4\r
+ mov r8 = ip\r
+(p6) mov in0 = ar.k5\r
+ add r8 = (PalProcReturn - PalCallStatic), r8\r
+ mov in4 = b0\r
+ mov r30 = in3\r
+ mov r29 = in2\r
+ mov b7 = in0\r
+ mov in3 = psr\r
+ rsm 1 << 14 // Disable interrupts\r
+ mov r28 = in1\r
+ mov in0 = 256\r
+ mov b0 = r8\r
+ br.cond.sptk b7\r
+PalProcReturn:\r
+ mov psr.l = in3\r
+ cmp.eq p6 = in0, in1 // in1 == PAL_COPY_PAL?\r
+(p6) cmp.eq p6 = r0, r8 // Status == Success?\r
+(p6) add in2 = r9, in2\r
+(p6) mov ar.k5 = in2\r
+ mov b0 = in4\r
+ br.ret.sptk.many b0\r
+.endp PalCallStatic\r