# 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