1# TITLE CpuAsm.S: 2 3#------------------------------------------------------------------------------ 4#* 5#* Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR> 6#* This program and the accompanying materials 7#* are licensed and made available under the terms and conditions of the BSD License 8#* which accompanies this distribution. The full text of the license may be found at 9#* http://opensource.org/licenses/bsd-license.php 10#* 11#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13#* 14#* CpuAsm.S 15#* 16#* Abstract: 17#* 18#------------------------------------------------------------------------------ 19 20 21#text SEGMENT 22 23 24#------------------------------------------------------------------------------ 25# VOID 26# SetCodeSelector ( 27# UINT16 Selector 28# ); 29#------------------------------------------------------------------------------ 30ASM_GLOBAL ASM_PFX(SetCodeSelector) 31ASM_PFX(SetCodeSelector): 32 subq $0x10, %rsp 33 leaq L_setCodeSelectorLongJump(%rip), %rax 34 movq %rax, (%rsp) 35 movw %cx, 4(%rsp) 36 .byte 0xFF, 0x2C, 0x24 # jmp (%rsp) note:fword jmp 37L_setCodeSelectorLongJump: 38 addq $0x10, %rsp 39 ret 40 41#------------------------------------------------------------------------------ 42# VOID 43# SetDataSelectors ( 44# UINT16 Selector 45# ); 46#------------------------------------------------------------------------------ 47ASM_GLOBAL ASM_PFX(SetDataSelectors) 48ASM_PFX(SetDataSelectors): 49 movw %cx, %ss 50 movw %cx, %ds 51 movw %cx, %es 52 movw %cx, %fs 53 movw %cx, %gs 54 ret 55 56#text ENDS 57 58#END 59 60 61