Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
R
reform-boundary-uboot
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jack Humbert
reform-boundary-uboot
Commits
b843f311
Commit
b843f311
authored
13 years ago
by
Graeme Russ
Browse files
Options
Downloads
Patches
Plain Diff
CHECKPATCH: arch/x86/lib/*
parent
58c7a675
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
arch/x86/lib/bios.S
+86
-48
86 additions, 48 deletions
arch/x86/lib/bios.S
arch/x86/lib/realmode_switch.S
+36
-25
36 additions, 25 deletions
arch/x86/lib/realmode_switch.S
with
122 additions
and
73 deletions
arch/x86/lib/bios.S
+
86
−
48
View file @
b843f311
...
@@ -246,11 +246,9 @@ rm_int1f:
...
@@ -246,11 +246,9 @@ rm_int1f:
rm_def_int
:
rm_def_int
:
iret
iret
/
*
/
*
*
All
interrupt
jumptable
entries
jump
to
here
*
All
interrupt
jumptable
entries
jump
to
here
after
pushing
the
*
after
pushing
the
interrupt
vector
number
onto
the
*
interrupt
vector
number
onto
the
stack
.
*
stack
.
*/
*/
any_interrupt16
:
any_interrupt16
:
MAKE_BIOS_STACK
MAKE_BIOS_STACK
...
@@ -272,7 +270,8 @@ gs movw OFFS_VECTOR(%bp), %ax
...
@@ -272,7 +270,8 @@ gs movw OFFS_VECTOR(%bp), %ax
je
Lint_1ah
je
Lint_1ah
movw
$
0xffff
,
%
ax
movw
$
0xffff
,
%
ax
jmp
Lout
jmp
Lout
Lint_10h
:
/
*
VGA
BIOS
services
*/
Lint_10h
:
/
*
VGA
BIOS
services
*/
call
bios_10h
call
bios_10h
jmp
Lout
jmp
Lout
Lint_11h
:
Lint_11h
:
...
@@ -281,35 +280,42 @@ Lint_11h:
...
@@ -281,35 +280,42 @@ Lint_11h:
Lint_12h
:
Lint_12h
:
call
bios_12h
call
bios_12h
jmp
Lout
jmp
Lout
Lint_13h
:
/
*
BIOS
disk
services
*/
Lint_13h
:
/
*
BIOS
disk
services
*/
call
bios_13h
call
bios_13h
jmp
Lout
jmp
Lout
Lint_15h
:
/
*
Misc
.
BIOS
services
*/
Lint_15h
:
/
*
Misc
.
BIOS
services
*/
call
bios_15h
call
bios_15h
jmp
Lout
jmp
Lout
Lint_16h
:
/
*
keyboard
services
*/
Lint_16h
:
/
*
keyboard
services
*/
call
bios_16h
call
bios_16h
jmp
Lout
jmp
Lout
Lint_1ah
:
/
*
PCI
bios
*/
Lint_1ah
:
/
*
PCI
bios
*/
call
bios_1ah
call
bios_1ah
jmp
Lout
jmp
Lout
Lout
:
Lout
:
cmpw
$
0
,
%
ax
cmpw
$
0
,
%
ax
je
Lhandeled
je
Lhandeled
/
*
Insert
code
for
unhandeled
INTs
here
.
/
*
*
Insert
code
for
unhandeled
INTs
here
.
*
*
*
ROLO
prints
a
message
to
the
console
*
ROLO
prints
a
message
to
the
console
we
could
do
that
but
then
*
(
we
could
do
that
but
then
we
're in 16bit mode
*
we
're in 16bit mode so we'
ll
have
to
get
back
into
32
bit
mode
*
so
we
'll have to get back into 32bit mode
*
to
use
the
console
I
/
O
routines
(
if
we
do
this
we
should
make
*
to
use
the
console
I
/
O
routines
(
if
we
do
this
*
int
0x10
and
int
0x16
work
as
well
)
*
we
shuls
make
int
0x10
and
int
0x16
work
as
well
))
*/
*/
Lhandeled
:
Lhandeled
:
RESTORE_CALLERS_STACK
RESTORE_CALLERS_STACK
addw
$
2
,%
sp
/*
dump
vector
number
*/
iret
/*
return
from
interrupt
*/
/
*
dump
vector
number
*/
addw
$
2
,%
sp
/
*
return
from
interrupt
*/
iret
/*
/*
***********************************************************
*
***********************************************************
*
...
@@ -327,22 +333,24 @@ gs movw OFFS_AX(%bp), %ax
...
@@ -327,22 +333,24 @@ gs movw OFFS_AX(%bp), %ax
je
Lvid_cfg
je
Lvid_cfg
movw
$
0xffff
,
%
ax
movw
$
0xffff
,
%
ax
ret
ret
Lcur_pos
:
/
*
Read
Cursor
Position
and
Size
*/
Lcur_pos
:
/
*
Read
Cursor
Position
and
Size
*/
gs
movw
$
0
,
OFFS_CX
(%
bp
)
gs
movw
$
0
,
OFFS_CX
(%
bp
)
gs
movw
$
0
,
OFFS_DX
(%
bp
)
gs
movw
$
0
,
OFFS_DX
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
Lvid_state
:
/
*
Get
Video
State
*/
Lvid_state
:
gs
movw
$
(
80
<<
8
|
0x03
),
OFFS_AX
(%
bp
)
/*
80
columns
,
80
x25
,
16
colors
*/
/
*
Get
Video
State
-
80
columns
,
80
x25
,
16
colors
*/
gs
movw
$
(
80
<<
8
|
0x03
),
OFFS_AX
(%
bp
)
gs
movw
$
0
,
OFFS_BX
(%
bp
)
gs
movw
$
0
,
OFFS_BX
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
Lvid_cfg
:
/
*
Video
Subsystem
Configuration
(
EGA
/
VGA
)
*/
Lvid_cfg
:
gs
movw
$
0x10
,
OFFS_BX
(%
bp
)
/*
indicate
CGA
/
MDA
/
HGA
*/
/
*
Video
Subsystem
Configuration
(
EGA
/
VGA
)
-
indicate
CGA
/
MDA
/
HGA
*/
gs
movw
$
0x10
,
OFFS_BX
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
/*
/*
***********************************************************
*
***********************************************************
*
*
BIOS
interrupt
11
h
--
Equipment
determination
*
BIOS
interrupt
11
h
--
Equipment
determination
...
@@ -355,7 +363,6 @@ gs movw %ax, OFFS_AX(%bp)
...
@@ -355,7 +363,6 @@ gs movw %ax, OFFS_AX(%bp)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
/*
/*
***********************************************************
*
***********************************************************
*
*
BIOS
interrupt
12
h
--
Get
Memory
Size
*
BIOS
interrupt
12
h
--
Get
Memory
Size
...
@@ -370,16 +377,18 @@ cs movw ram_in_64kb_chunks, %ax
...
@@ -370,16 +377,18 @@ cs movw ram_in_64kb_chunks, %ax
b12_more_than_640k
:
b12_more_than_640k
:
movw
$
0x280
,
%
ax
movw
$
0x280
,
%
ax
b12_return
:
b12_return
:
gs
movw
%
ax
,
OFFS_AX
(%
bp
)
/*
return
number
of
kilobytes
in
ax
*/
/
*
return
number
of
kilobytes
in
ax
*/
gs
movw
%
ax
,
OFFS_AX
(%
bp
)
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
andw
$
0xfffe
,
%
ax
/*
clear
carry
--
function
succeeded
*/
/
*
clear
carry
--
function
succeeded
*/
andw
$
0xfffe
,
%
ax
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
/*
/*
***********************************************************
*
***********************************************************
*
*
BIOS
interrupt
13
h
--
Disk
services
*
BIOS
interrupt
13
h
--
Disk
services
...
@@ -394,12 +403,13 @@ gs movw OFFS_AX(%bp), %ax
...
@@ -394,12 +403,13 @@ gs movw OFFS_AX(%bp), %ax
ret
ret
Lfunc_15h
:
Lfunc_15h
:
gs
movw
OFFS_AX
(%
bp
),
%
ax
gs
movw
OFFS_AX
(%
bp
),
%
ax
andw
$
0xff
,
%
ax
/*
return
AH
=
0
->
drive
not
present
*/
/
*
return
AH
=
0
->
drive
not
present
*/
andw
$
0x00ff
,
%
ax
gs
movw
%
ax
,
OFFS_AX
(%
bp
)
gs
movw
%
ax
,
OFFS_AX
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
/*
/*
**********************************************************
*
**********************************************************
*
*
BIOS
interrupt
15
h
--
Miscellaneous
services
*
BIOS
interrupt
15
h
--
Miscellaneous
services
...
@@ -417,9 +427,12 @@ gs movw OFFS_AX(%bp), %ax
...
@@ -417,9 +427,12 @@ gs movw OFFS_AX(%bp), %ax
movw
$
0xffff
,
%
ax
movw
$
0xffff
,
%
ax
ret
ret
Lfunc_c0h
:
/
*
Return
System
Configuration
Parameters
(
PS2
only
)
*/
Lfunc_c0h
:
/
*
Return
System
Configuration
Parameters
(
PS2
only
)
*/
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
orw
$
1
,
%
ax
/*
return
carry
--
function
not
supported
*/
/
*
return
carry
--
function
not
supported
*/
orw
$
1
,
%
ax
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
...
@@ -430,38 +443,56 @@ gs movw OFFS_AX(%bp), %ax
...
@@ -430,38 +443,56 @@ gs movw OFFS_AX(%bp), %ax
cmpw
$
1
,
%
ax
cmpw
$
1
,
%
ax
je
Lfunc_e801h
je
Lfunc_e801h
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
orw
$
1
,
%
ax
/*
return
carry
--
function
not
supported
*/
/
*
return
carry
--
function
not
supported
*/
orw
$
1
,
%
ax
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
Lfunc_e801h
:
/
*
Get
memory
size
for
>
64
M
Configurations
*/
Lfunc_e801h
:
/
*
Get
memory
size
for
>
64
M
Configurations
*/
cs
movw
ram_in_64kb_chunks
,
%
ax
cs
movw
ram_in_64kb_chunks
,
%
ax
cmpw
$
0x100
,
%
ax
cmpw
$
0x100
,
%
ax
ja
e801_more_than_16mb
ja
e801_more_than_16mb
shlw
$
6
,
%
ax
/*
multiply
by
64
*/
subw
$
0x400
,
%
ax
/*
1
st
meg
does
not
count
*/
gs
movw
%
ax
,
OFFS_AX
(%
bp
)
/*
return
memory
size
between
1
M
and
16
M
in
1
kb
chunks
in
AX
and
CX
*/
/
*
multiply
by
64
*/
shlw
$
6
,
%
ax
/
*
1
st
meg
does
not
count
*/
subw
$
0x400
,
%
ax
/
*
return
memory
size
between
1
M
and
16
M
in
1
kb
chunks
in
AX
and
CX
*/
gs
movw
%
ax
,
OFFS_AX
(%
bp
)
gs
movw
%
ax
,
OFFS_CX
(%
bp
)
gs
movw
%
ax
,
OFFS_CX
(%
bp
)
gs
movw
$
0
,
OFFS_BX
(%
bp
)
/*
set
BX
and
DX
to
0
*/
/
*
set
BX
and
DX
to
0
*/
gs
movw
$
0
,
OFFS_BX
(%
bp
)
gs
movw
$
0
,
OFFS_DX
(%
bp
)
gs
movw
$
0
,
OFFS_DX
(%
bp
)
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
andw
$
0xfffe
,
%
ax
/*
clear
carry
--
function
succeeded
*/
/
*
clear
carry
--
function
succeeded
*/
andw
$
0xfffe
,
%
ax
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
e801_more_than_16mb
:
e801_more_than_16mb
:
subw
$
0x100
,
%
ax
/*
subtract
16
MB
*/
/
*
subtract
16
MB
*/
subw
$
0x100
,
%
ax
gs
movw
$
0x3c00
,
OFFS_AX
(%
bp
)
/*
return
0x3c00
(
16
MB
-
1
MB
)
in
AX
and
CX
*/
/
*
return
0x3c00
(
16
MB
-
1
MB
)
in
AX
and
CX
*/
gs
movw
$
0x3c00
,
OFFS_AX
(%
bp
)
gs
movw
$
0x3c00
,
OFFS_CX
(%
bp
)
gs
movw
$
0x3c00
,
OFFS_CX
(%
bp
)
gs
movw
%
ax
,
OFFS_BX
(%
bp
)
/*
set
BX
and
DX
to
number
of
64
kb
chunks
above
16
MB
*/
/
*
set
BX
and
DX
to
number
of
64
kb
chunks
above
16
MB
*/
gs
movw
%
ax
,
OFFS_BX
(%
bp
)
gs
movw
%
ax
,
OFFS_DX
(%
bp
)
gs
movw
%
ax
,
OFFS_DX
(%
bp
)
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
andw
$
0xfffe
,
%
ax
/*
clear
carry
--
function
succeeded
*/
/
*
clear
carry
--
function
succeeded
*/
andw
$
0xfffe
,
%
ax
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
...
@@ -473,18 +504,22 @@ cs movw ram_in_64kb_chunks, %ax
...
@@ -473,18 +504,22 @@ cs movw ram_in_64kb_chunks, %ax
movw
$
0x100
,
%
ax
movw
$
0x100
,
%
ax
b88_not_more_than16
:
b88_not_more_than16
:
shlw
$
6
,
%
ax
shlw
$
6
,
%
ax
subw
$
0x400
,
%
ax
/*
1
st
meg
does
not
count
*/
gs
movw
%
ax
,
OFFS_AX
(%
bp
)
/*
return
number
of
kilobytes
between
16
MB
and
16
MB
in
ax
*/
/
*
1
st
meg
does
not
count
*/
subw
$
0x400
,
%
ax
/
*
return
number
of
kilobytes
between
16
MB
and
16
MB
in
ax
*/
gs
movw
%
ax
,
OFFS_AX
(%
bp
)
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
gs
movw
OFFS_FLAGS
(%
bp
),
%
ax
andw
$
0xfffe
,
%
ax
/*
clear
carry
--
function
succeeded
*/
/
*
clear
carry
--
function
succeeded
*/
andw
$
0xfffe
,
%
ax
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
gs
movw
%
ax
,
OFFS_FLAGS
(%
bp
)
xorw
%
ax
,
%
ax
xorw
%
ax
,
%
ax
ret
ret
/*
/*
***********************************************************
*
***********************************************************
*
*
BIOS
interrupt
16
h
--
keyboard
services
*
BIOS
interrupt
16
h
--
keyboard
services
...
@@ -498,7 +533,8 @@ gs movw OFFS_AX(%bp), %ax
...
@@ -498,7 +533,8 @@ gs movw OFFS_AX(%bp), %ax
movw
$
0xffff
,
%
ax
movw
$
0xffff
,
%
ax
ret
ret
Lfunc_03h
:
Lfunc_03h
:
xorw
%
ax
,
%
ax
/*
do
nothing
--
function
not
supported
*/
/
*
do
nothing
--
function
not
supported
*/
xorw
%
ax
,
%
ax
ret
ret
/*
/*
...
@@ -514,7 +550,9 @@ gs movw OFFS_AX(%bp), %ax
...
@@ -514,7 +550,9 @@ gs movw OFFS_AX(%bp), %ax
ret
ret
Lfunc_b1h
:
Lfunc_b1h
:
call
realmode_pci_bios
call
realmode_pci_bios
xorw
%
ax
,
%
ax
/*
do
nothing
--
function
not
supported
*/
/
*
do
nothing
--
function
not
supported
*/
xorw
%
ax
,
%
ax
ret
ret
...
...
This diff is collapsed.
Click to expand it.
arch/x86/lib/realmode_switch.S
+
36
−
25
View file @
b843f311
...
@@ -49,6 +49,7 @@
...
@@ -49,6 +49,7 @@
.
section
.
realmode
,
"ax"
.
section
.
realmode
,
"ax"
.
code16
.
code16
/
*
16
bit
protected
mode
code
here
*/
/
*
16
bit
protected
mode
code
here
*/
.
globl
realmode_enter
.
globl
realmode_enter
realmode_enter
:
realmode_enter
:
...
@@ -69,12 +70,16 @@ o32 pushf
...
@@ -69,12 +70,16 @@ o32 pushf
movw
%
ax
,
%
gs
movw
%
ax
,
%
gs
lidt
realmode_idt_ptr
lidt
realmode_idt_ptr
movl
%
cr0
,
%
eax
/*
Go
back
into
real
mode
by
*/
/
*
Go
back
into
real
mode
by
clearing
PE
to
0
*/
andl
$
0x7ffffffe
,
%
eax
/*
clearing
PE
to
0
*/
movl
%
cr0
,
%
eax
andl
$
0x7ffffffe
,
%
eax
movl
%
eax
,
%
cr0
movl
%
eax
,
%
cr0
ljmp
$
0x0
,
$do_realmode
/*
switch
to
real
mode
*/
do_realmode
:
/
*
realmode
code
from
here
*/
/
*
switch
to
real
mode
*/
ljmp
$
0x0
,
$do_realmode
do_realmode
:
/
*
realmode
code
from
here
*/
movw
%
cs
,%
ax
movw
%
cs
,%
ax
movw
%
ax
,%
ds
movw
%
ax
,%
ds
movw
%
ax
,%
es
movw
%
ax
,%
es
...
@@ -82,7 +87,6 @@ do_realmode: /* realmode code from here */
...
@@ -82,7 +87,6 @@ do_realmode: /* realmode code from here */
movw
%
ax
,%
gs
movw
%
ax
,%
gs
/
*
create
a
temporary
stack
*/
/
*
create
a
temporary
stack
*/
movw
$
0xc0
,
%
ax
movw
$
0xc0
,
%
ax
movw
%
ax
,
%
ss
movw
%
ax
,
%
ss
movw
$
0x200
,
%
ax
movw
$
0x200
,
%
ax
...
@@ -114,14 +118,16 @@ o32 popf
...
@@ -114,14 +118,16 @@ o32 popf
popw
%
ss
popw
%
ss
movl
%
eax
,
%
esp
movl
%
eax
,
%
esp
cs
movl
temp_eax
,
%
eax
cs
movl
temp_eax
,
%
eax
wbinvd
/*
self
-
modifying
code
,
*
better
flush
the
cache
*/
/
*
self
-
modifying
code
,
better
flush
the
cache
*/
wbinvd
.
byte
0x9a
/*
lcall
*/
.
byte
0x9a
/*
lcall
*/
temp_ip
:
temp_ip
:
.
word
0
/*
new
ip
*/
.
word
0
/*
new
ip
*/
temp_cs
:
temp_cs
:
.
word
0
/*
new
cs
*/
.
word
0
/*
new
cs
*/
realmode_ret
:
realmode_ret
:
/
*
save
eax
,
esp
and
ss
*/
/
*
save
eax
,
esp
and
ss
*/
cs
movl
%
eax
,
saved_eax
cs
movl
%
eax
,
saved_eax
...
@@ -130,10 +136,11 @@ cs movl %eax, saved_esp
...
@@ -130,10 +136,11 @@ cs movl %eax, saved_esp
movw
%
ss
,
%
ax
movw
%
ss
,
%
ax
cs
movw
%
ax
,
saved_ss
cs
movw
%
ax
,
saved_ss
/
*
restore
the
stack
,
note
that
we
set
sp
to
0x244
;
/
*
*
restore
the
stack
,
note
that
we
set
sp
to
0x244
;
*
pt_regs
is
0x44
bytes
long
and
we
push
the
structure
*
pt_regs
is
0x44
bytes
long
and
we
push
the
structure
*
backwards
on
to
the
stack
,
bottom
first
*/
*
backwards
on
to
the
stack
,
bottom
first
*/
movw
$
0xc0
,
%
ax
movw
$
0xc0
,
%
ax
movw
%
ax
,
%
ss
movw
%
ax
,
%
ss
movw
$
0x244
,
%
ax
movw
$
0x244
,
%
ax
...
@@ -169,12 +176,15 @@ cs movw temp_ip, %ax
...
@@ -169,12 +176,15 @@ cs movw temp_ip, %ax
pushl
%
ebx
pushl
%
ebx
o32
cs
lidt
saved_idt
o32
cs
lidt
saved_idt
o32
cs
lgdt
saved_gdt
/*
Set
GDTR
*/
o32
cs
lgdt
saved_gdt
movl
%
cr0
,
%
eax
/*
Go
back
into
protected
mode
*/
/
*
Go
back
into
protected
mode
reset
PE
to
1
*/
orl
$
1
,%
eax
/*
reset
PE
to
1
*/
movl
%
cr0
,
%
eax
orl
$
1
,%
eax
movl
%
eax
,
%
cr0
movl
%
eax
,
%
cr0
jmp
next_line
/*
flush
prefetch
queue
*/
/
*
flush
prefetch
queue
*/
jmp
next_line
next_line
:
next_line
:
movw
$return_ptr
,
%
ax
movw
$return_ptr
,
%
ax
movw
%
ax
,%
bp
movw
%
ax
,%
bp
...
@@ -182,12 +192,13 @@ o32 cs ljmp *(%bp)
...
@@ -182,12 +192,13 @@ o32 cs ljmp *(%bp)
.
code32
.
code32
protected_mode
:
protected_mode
:
movl
$
0x18
,%
eax
/*
reload
GDT
[
3
]
*/
/
*
Reload
segment
registers
*/
movw
%
ax
,%
fs
/*
reset
FS
*/
movl
$
0x18
,
%
eax
movw
%
ax
,%
ds
/*
reset
DS
*/
movw
%
ax
,
%
fs
movw
%
ax
,%
gs
/*
reset
GS
*/
movw
%
ax
,
%
ds
movw
%
ax
,%
es
/*
reset
ES
*/
movw
%
ax
,
%
gs
movw
%
ax
,%
ss
/*
reset
SS
*/
movw
%
ax
,
%
es
movw
%
ax
,
%
ss
movl
saved_protected_mode_esp
,
%
eax
movl
saved_protected_mode_esp
,
%
eax
movl
%
eax
,
%
esp
movl
%
eax
,
%
esp
popf
popf
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment