mirror of https://github.com/acidanthera/audk.git
58 lines
1.7 KiB
ArmAsm
58 lines
1.7 KiB
ArmAsm
#------------------------------------------------------------------------------
|
|
#*
|
|
#* Copyright (c) 2006 - 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:
|
|
#*
|
|
#------------------------------------------------------------------------------
|
|
|
|
|
|
#.MMX
|
|
#.XMM
|
|
|
|
#------------------------------------------------------------------------------
|
|
# VOID
|
|
# SetCodeSelector (
|
|
# UINT16 Selector
|
|
# );
|
|
#------------------------------------------------------------------------------
|
|
ASM_GLOBAL ASM_PFX(SetCodeSelector)
|
|
ASM_PFX(SetCodeSelector):
|
|
movl 4(%esp), %ecx
|
|
subl $0x10, %esp
|
|
leal setCodeSelectorLongJump, %eax
|
|
movl %eax, (%esp)
|
|
movw %cx, 4(%esp)
|
|
.byte 0xFF, 0x2C, 0x24 # jmp *(%esp) note:(FWORD jmp)
|
|
setCodeSelectorLongJump:
|
|
addl $0x10, %esp
|
|
ret
|
|
|
|
#------------------------------------------------------------------------------
|
|
# VOID
|
|
# SetDataSelectors (
|
|
# UINT16 Selector
|
|
# );
|
|
#------------------------------------------------------------------------------
|
|
ASM_GLOBAL ASM_PFX(SetDataSelectors)
|
|
ASM_PFX(SetDataSelectors):
|
|
movl 4(%esp), %ecx
|
|
movw %cx, %ss
|
|
movw %cx, %ds
|
|
movw %cx, %es
|
|
movw %cx, %fs
|
|
movw %cx, %gs
|
|
ret
|
|
|
|
#END
|
|
|