mirror of https://github.com/acidanthera/audk.git
51 lines
1.6 KiB
ArmAsm
51 lines
1.6 KiB
ArmAsm
|
/// @file
|
||
|
/// IPF specific SwitchStack() function
|
||
|
///
|
||
|
/// Copyright (c) 2006, Intel Corporation
|
||
|
/// All rights reserved. This program and the accompanying materials
|
||
|
/// are licensed and made available under the terms and conditions of the BSD License
|
||
|
/// which accompanies this distribution. The full text of the license may be found at
|
||
|
/// http://opensource.org/licenses/bsd-license.php
|
||
|
///
|
||
|
/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||
|
/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||
|
///
|
||
|
/// Module Name: SwitchStack.s
|
||
|
///
|
||
|
///
|
||
|
|
||
|
.auto
|
||
|
.text
|
||
|
|
||
|
.proc AsmSwitchStackAndBackingStore
|
||
|
.type AsmSwitchStackAndBackingStore, @function
|
||
|
.regstk 5, 0, 0, 0
|
||
|
AsmSwitchStackAndBackingStore::
|
||
|
mov r14 = ar.rsc
|
||
|
movl r2 = ~((((1 << 14) - 1) << 16) | 3)
|
||
|
|
||
|
mov r17 = in1
|
||
|
mov r18 = in2
|
||
|
and r2 = r14, r2
|
||
|
|
||
|
mov ar.rsc = r2
|
||
|
mov sp = in3
|
||
|
mov r19 = in4
|
||
|
|
||
|
ld8.nt1 r16 = [in0], 8
|
||
|
ld8.nta gp = [in0]
|
||
|
mov r3 = -1
|
||
|
|
||
|
loadrs
|
||
|
mov ar.bspstore = r19
|
||
|
mov b7 = r16
|
||
|
|
||
|
alloc r2 = ar.pfs, 0, 0, 2, 0
|
||
|
mov out0 = r17
|
||
|
mov out1 = r18
|
||
|
|
||
|
mov ar.rnat = r3
|
||
|
mov ar.rsc = r14
|
||
|
br.call.sptk.many b0 = b7
|
||
|
.endp AsmSwitchStackAndBackingStore
|