Cross Reference: S3Asm.S
xref
: /
vbox
/
src
/
VBox
/
Devices
/
EFI
/
Firmware
/
MdeModulePkg
/
Universal
/
Acpi
/
BootScriptExecutorDxe
/
IA32
/
S3Asm.S
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
S3Asm.S revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
## @
file
#
#
Copyright
(c)
2010
,
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
.
#
##
#-----------------------------------------
#
VOID
#
AsmTransferControl
(
#
IN
UINT32
S3WakingVector
,
#
IN
UINT32
AcpiLowMemoryBase
# );
#-----------------------------------------
ASM_GLOBAL
ASM_PFX
(
AsmTransferControl
)
ASM_PFX
(
AsmTransferControl
):
#
S3WakingVector
:
DWORD
#
AcpiLowMemoryBase
:
DWORD
pushl
%
ebp
movl
%
esp
,%
ebp
leal
LABLE
, %
eax
pushl
$
0x28
#
CS
pushl
%
eax
movl
8
(%
ebp
),%
ecx
shrdl
$
20
,%
ecx
,%
ebx
andl
$
0xf
,%
ecx
movw
%
cx
,%
bx
movl
%
ebx
,
jmp_addr
lret
LABLE
:
.
byte
0xb8
,
0x30
,0 #
mov
ax
,
30
h
as
selector
movw
%
ax
,%
ds
movw
%
ax
,%
es
movw
%
ax
,%
fs
movw
%
ax
,%
gs
movw
%
ax
,%
ss
movl
%
cr0
, %
eax
#
Get
control
register
0
.
byte
0x66
.
byte
0x83
,
0xe0
,
0xfe
#
and
eax
, 0
fffffffeh
;
Clear
PE
bit
(
bit
#0)
.
byte
0xf
,
0x22
,
0xc0
#
mov
cr0
,
eax
;
Activate
real
mode
.
byte
0xea
#
jmp
far
@
jmp_addr
jmp_addr
:
.
long
0
ASM_GLOBAL
ASM_PFX
(
AsmTransferControl32
)
ASM_PFX
(
AsmTransferControl32
):
jmp
ASM_PFX
(
AsmTransferControl
)
#
dummy
ASM_GLOBAL
ASM_PFX
(
AsmTransferControl16
)
ASM_PFX
(
AsmTransferControl16
):
ASM_GLOBAL
ASM_PFX
(
AsmFixAddress16
)
ASM_PFX
(
AsmFixAddress16
):
.
long
0
ASM_GLOBAL
ASM_PFX
(
AsmJmpAddr32
)
ASM_PFX
(
AsmJmpAddr32
):
.
long
0