summaryrefslogtreecommitdiff
path: root/Platform/BroxtonPlatformPkg/Common/Library/PlatformBdsLib/Ia32/StartKernel.Asm
blob: 87cc8c44678e3932c239eecdf0a1e03facba30e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
;; @file
;  This is the ASM for starting a linux kernel.
;
;  Copyright (c) 1999 - 2016, 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
;
;;

  .686P
  .MMX
  .MODEL SMALL
  .CODE

AsmStartLinuxKernel PROC  near C  PUBLIC
  mov     eax, [esp+4]
  sub     esp, 010h
  lea     ebx, NewSelectorJmp
  mov     [esp], ebx
  mov     ebx, 010h
  mov     [esp+4], ebx
  jmp     fword ptr [esp]

NewSelectorJmp:
  add     esp, 010h

  mov     ebx, 018h
  mov     ds, ebx
  mov     es, ebx
  mov     fs, ebx
  mov     gs, ebx
  mov     ss, ebx

  mov     esi, 08000h
  xor     ebp, ebp
  xor     edi, edi
  xor     ebx, ebx
  jmp     eax
  ret
AsmStartLinuxKernel   ENDP

  END