mirror of https://github.com/acidanthera/audk.git
61 lines
1.7 KiB
ArmAsm
61 lines
1.7 KiB
ArmAsm
# TITLE CpuAsm.S:
|
|
|
|
#------------------------------------------------------------------------------
|
|
#*
|
|
#* Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR>
|
|
#* 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.
|
|
#*
|
|
#* CpuAsm.S
|
|
#*
|
|
#* Abstract:
|
|
#*
|
|
#------------------------------------------------------------------------------
|
|
|
|
|
|
#text SEGMENT
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# VOID
|
|
# SetCodeSelector (
|
|
# UINT16 Selector
|
|
# );
|
|
#------------------------------------------------------------------------------
|
|
ASM_GLOBAL ASM_PFX(SetCodeSelector)
|
|
ASM_PFX(SetCodeSelector):
|
|
subq $0x10, %rsp
|
|
leaq L_setCodeSelectorLongJump(%rip), %rax
|
|
movq %rax, (%rsp)
|
|
movw %cx, 4(%rsp)
|
|
.byte 0xFF, 0x2C, 0x24 # jmp (%rsp) note:fword jmp
|
|
L_setCodeSelectorLongJump:
|
|
addq $0x10, %rsp
|
|
ret
|
|
|
|
#------------------------------------------------------------------------------
|
|
# VOID
|
|
# SetDataSelectors (
|
|
# UINT16 Selector
|
|
# );
|
|
#------------------------------------------------------------------------------
|
|
ASM_GLOBAL ASM_PFX(SetDataSelectors)
|
|
ASM_PFX(SetDataSelectors):
|
|
movw %cx, %ss
|
|
movw %cx, %ds
|
|
movw %cx, %es
|
|
movw %cx, %fs
|
|
movw %cx, %gs
|
|
ret
|
|
|
|
#text ENDS
|
|
|
|
#END
|
|
|
|
|