4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Copyright (c) 1999 - 2008, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// are licensed and made available under the terms and conditions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// of the BSD License which accompanies this distribution. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "IpfMacro.i"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//-----------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EfiIaEntryPoint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Register physical address of Esal Data Area
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// On Entry :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// in1 = ptr to legacy bios reg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// in2 = ptr to Call Stack
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// in3 = Call Stack Size
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Return Value:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// r8 = SAL_SUCCESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// As per static calling conventions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//---------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//---------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// save fp registers //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//---------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync movl r2 = 0xffffffff;; // if no SS:SP, then define new SS:SP
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tbit.z p6,p7 = r2,17;; // psr.dt (Physical OR Virtual)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync extr.u sp = sp,0,16;; // SP (16-bit sp for legacy code)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cmp.eq p6,p0 = 0,sp;; // if SP=0000 then wrap to 0x10000
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cmp.eq p6,p0 = 0,sp;; // if SP=0000 then wrap to 0x10000
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync movl r18 = 0x8000000000000100;; // CALL FAR function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// flush 32 bytes legacy code //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// load legacy registers //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ld2 r16 = [r2],2;; // in1 + 42 = DS, (r16 = GS,FS,ES,DS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dep r17 = r17,r17,16,16;; // CS = SS, (r17 = TSS,LDT,SS,CS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// give control to INT function //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// store legacy registers //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// restore fp registers //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//==============================//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EXECUTE_INT_FUNCTION //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//==============================//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// switch to virtual address //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rsm 0x2000;; // ic(13)=0 for control register programming
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mov cr.ifs = r0;; // clear interruption function state register
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// back from legacy code //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// switch to physical address //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rsm 0x6000;; // i(14)=0,ic(13)=0 for control reg programming
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mov cr.ifs = r0;; // clear interruption function state register
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// store fp registers //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f4,-16;; stf.spill [sp]=f5,-16;; stf.spill [sp]=f6,-16;; stf.spill [sp]=f7,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f8,-16;; stf.spill [sp]=f9,-16;; stf.spill [sp]=f10,-16;; stf.spill [sp]=f11,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f12,-16;; stf.spill [sp]=f13,-16;; stf.spill [sp]=f14,-16;; stf.spill [sp]=f15,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f16,-16;; stf.spill [sp]=f17,-16;; stf.spill [sp]=f18,-16;; stf.spill [sp]=f19,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f20,-16;; stf.spill [sp]=f21,-16;; stf.spill [sp]=f22,-16;; stf.spill [sp]=f23,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f24,-16;; stf.spill [sp]=f25,-16;; stf.spill [sp]=f26,-16;; stf.spill [sp]=f27,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f28,-16;; stf.spill [sp]=f29,-16;; stf.spill [sp]=f30,-16;; stf.spill [sp]=f31,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f32,-16;; stf.spill [sp]=f33,-16;; stf.spill [sp]=f34,-16;; stf.spill [sp]=f35,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f36,-16;; stf.spill [sp]=f37,-16;; stf.spill [sp]=f38,-16;; stf.spill [sp]=f39,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f40,-16;; stf.spill [sp]=f41,-16;; stf.spill [sp]=f42,-16;; stf.spill [sp]=f43,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f44,-16;; stf.spill [sp]=f45,-16;; stf.spill [sp]=f46,-16;; stf.spill [sp]=f47,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f48,-16;; stf.spill [sp]=f49,-16;; stf.spill [sp]=f50,-16;; stf.spill [sp]=f51,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f52,-16;; stf.spill [sp]=f53,-16;; stf.spill [sp]=f54,-16;; stf.spill [sp]=f55,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f56,-16;; stf.spill [sp]=f57,-16;; stf.spill [sp]=f58,-16;; stf.spill [sp]=f59,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f60,-16;; stf.spill [sp]=f61,-16;; stf.spill [sp]=f62,-16;; stf.spill [sp]=f63,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f64,-16;; stf.spill [sp]=f65,-16;; stf.spill [sp]=f66,-16;; stf.spill [sp]=f67,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f68,-16;; stf.spill [sp]=f69,-16;; stf.spill [sp]=f70,-16;; stf.spill [sp]=f71,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f72,-16;; stf.spill [sp]=f73,-16;; stf.spill [sp]=f74,-16;; stf.spill [sp]=f75,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f76,-16;; stf.spill [sp]=f77,-16;; stf.spill [sp]=f78,-16;; stf.spill [sp]=f79,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f80,-16;; stf.spill [sp]=f81,-16;; stf.spill [sp]=f82,-16;; stf.spill [sp]=f83,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f84,-16;; stf.spill [sp]=f85,-16;; stf.spill [sp]=f86,-16;; stf.spill [sp]=f87,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f88,-16;; stf.spill [sp]=f89,-16;; stf.spill [sp]=f90,-16;; stf.spill [sp]=f91,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f92,-16;; stf.spill [sp]=f93,-16;; stf.spill [sp]=f94,-16;; stf.spill [sp]=f95,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f96,-16;; stf.spill [sp]=f97,-16;; stf.spill [sp]=f98,-16;; stf.spill [sp]=f99,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f100,-16;;stf.spill [sp]=f101,-16;;stf.spill [sp]=f102,-16;;stf.spill [sp]=f103,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f104,-16;;stf.spill [sp]=f105,-16;;stf.spill [sp]=f106,-16;;stf.spill [sp]=f107,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f108,-16;;stf.spill [sp]=f109,-16;;stf.spill [sp]=f110,-16;;stf.spill [sp]=f111,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f112,-16;;stf.spill [sp]=f113,-16;;stf.spill [sp]=f114,-16;;stf.spill [sp]=f115,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f116,-16;;stf.spill [sp]=f117,-16;;stf.spill [sp]=f118,-16;;stf.spill [sp]=f119,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f120,-16;;stf.spill [sp]=f121,-16;;stf.spill [sp]=f122,-16;;stf.spill [sp]=f123,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stf.spill [sp]=f124,-16;;stf.spill [sp]=f125,-16;;stf.spill [sp]=f126,-16;;stf.spill [sp]=f127,-16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// restore fp registers //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f127=[sp],16;;ldf.fill f126=[sp],16;;ldf.fill f125=[sp],16;;ldf.fill f124=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f123=[sp],16;;ldf.fill f122=[sp],16;;ldf.fill f121=[sp],16;;ldf.fill f120=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f119=[sp],16;;ldf.fill f118=[sp],16;;ldf.fill f117=[sp],16;;ldf.fill f116=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f115=[sp],16;;ldf.fill f114=[sp],16;;ldf.fill f113=[sp],16;;ldf.fill f112=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f111=[sp],16;;ldf.fill f110=[sp],16;;ldf.fill f109=[sp],16;;ldf.fill f108=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f107=[sp],16;;ldf.fill f106=[sp],16;;ldf.fill f105=[sp],16;;ldf.fill f104=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f103=[sp],16;;ldf.fill f102=[sp],16;;ldf.fill f101=[sp],16;;ldf.fill f100=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f99=[sp],16;; ldf.fill f98=[sp],16;; ldf.fill f97=[sp],16;; ldf.fill f96=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f95=[sp],16;; ldf.fill f94=[sp],16;; ldf.fill f93=[sp],16;; ldf.fill f92=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f91=[sp],16;; ldf.fill f90=[sp],16;; ldf.fill f89=[sp],16;; ldf.fill f88=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f87=[sp],16;; ldf.fill f86=[sp],16;; ldf.fill f85=[sp],16;; ldf.fill f84=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f83=[sp],16;; ldf.fill f82=[sp],16;; ldf.fill f81=[sp],16;; ldf.fill f80=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f79=[sp],16;; ldf.fill f78=[sp],16;; ldf.fill f77=[sp],16;; ldf.fill f76=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f75=[sp],16;; ldf.fill f74=[sp],16;; ldf.fill f73=[sp],16;; ldf.fill f72=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f71=[sp],16;; ldf.fill f70=[sp],16;; ldf.fill f69=[sp],16;; ldf.fill f68=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f67=[sp],16;; ldf.fill f66=[sp],16;; ldf.fill f65=[sp],16;; ldf.fill f64=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f63=[sp],16;; ldf.fill f62=[sp],16;; ldf.fill f61=[sp],16;; ldf.fill f60=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f59=[sp],16;; ldf.fill f58=[sp],16;; ldf.fill f57=[sp],16;; ldf.fill f56=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f55=[sp],16;; ldf.fill f54=[sp],16;; ldf.fill f53=[sp],16;; ldf.fill f52=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f51=[sp],16;; ldf.fill f50=[sp],16;; ldf.fill f49=[sp],16;; ldf.fill f48=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f47=[sp],16;; ldf.fill f46=[sp],16;; ldf.fill f45=[sp],16;; ldf.fill f44=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f43=[sp],16;; ldf.fill f42=[sp],16;; ldf.fill f41=[sp],16;; ldf.fill f40=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f39=[sp],16;; ldf.fill f38=[sp],16;; ldf.fill f37=[sp],16;; ldf.fill f36=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f35=[sp],16;; ldf.fill f34=[sp],16;; ldf.fill f33=[sp],16;; ldf.fill f32=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f31=[sp],16;; ldf.fill f30=[sp],16;; ldf.fill f29=[sp],16;; ldf.fill f28=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f27=[sp],16;; ldf.fill f26=[sp],16;; ldf.fill f25=[sp],16;; ldf.fill f24=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f23=[sp],16;; ldf.fill f22=[sp],16;; ldf.fill f21=[sp],16;; ldf.fill f20=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f19=[sp],16;; ldf.fill f18=[sp],16;; ldf.fill f17=[sp],16;; ldf.fill f16=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f15=[sp],16;; ldf.fill f14=[sp],16;; ldf.fill f13=[sp],16;; ldf.fill f12=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f11=[sp],16;; ldf.fill f10=[sp],16;; ldf.fill f9=[sp],16;; ldf.fill f8=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ldf.fill f7=[sp],16;; ldf.fill f6=[sp],16;; ldf.fill f5=[sp],16;; ldf.fill f4=[sp],16;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//-----------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EsalSetSalDataArea
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Register physical address of Esal Data Area
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// On Entry :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// in0 = Reverse Thunk Address
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// in1 = IntThunk Address
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Return Value:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// r8 = SAL_SUCCESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// As per static calling conventions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//---------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync add r8 = (ReverseThunkAddress - EsalCalcStart1_3), r8;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync add r8 = (IntThunkAddress - EsalCalcStart1_4), r8;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//-----------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EsagGetReverseThunkAddress
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Register physical address of Esal Data Area
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// On Entry :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// out0 = CodeStart
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// out1 = CodeEnd
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// out1 = ReverseThunkCode
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Return Value:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// r8 = SAL_SUCCESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// As per static calling conventions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//---------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync add r8 = (ReverseThunkAddress - EsalCalcStart1_51), r8;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Reverse Thunk Code //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//------------------------------//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync br.sptk.few Ia32CodeStart;; // IPF CSM integration -Bug (Write This Code)