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