Venturing into 64-bit mode - PowerPoint PPT Presentation

About This Presentation
Title:

Venturing into 64-bit mode

Description:

Venturing into 64-bit mode. Examining the steps needed to take the ... Deactivate IA-32e mode by clearing PG-bit. Leave protected-mode' by clearing PE-bit ... – PowerPoint PPT presentation

Number of Views:33
Avg rating:3.0/5.0
Slides: 22
Provided by: cru6
Learn more at: https://www.cs.usfca.edu
Category:

less

Transcript and Presenter's Notes

Title: Venturing into 64-bit mode


1
Venturing into 64-bit mode
  • Examining the steps needed to take the processor
    into IA-32e mode -- and then back out again

2
Two-Level Translation Scheme
PAGE TABLES
PAGE DIRECTORY
PAGE FRAMES
CR3
3
Four-Level Translation Scheme
PAGE DIRECTORY POINTER TABLES
PAGE MAP LEVEL 4 TABLES
PAGE FRAMES
PAGE TABLES
PAGE DIRECTORIES
CR3
4
2-level address-translation
  • The CPU examines any virtual address it
    encounters, subdividing it into three fields

31 22 21
12 11
0
offset into page-frame
index into page-directory
index into page-table
10-bits
10-bits
12-bits
This field selects one of the 1024
array-entries in the Page-Directory
This field selects one of the 1024
array-entries in that Page-Table
This field provides the offset to one of
the 4096 bytes in that Page-Frame
5
4-level address-translation
  • The CPU examines any virtual address it
    encounters, subdividing it into five fields

63 48 47 39 38 30
29 21 20 12 11
0
offset into page-frame
index into page-table
index into page- directory
index into page- directory pointer table
index into level 4 page-map table
sign- extension
16-bits
9-bits
12-bits
9-bits
9-bits
9-bits
Any 48-bit virtual-address is sign-extended
to a 64-bit canonical address
Only canonical 64-bit virtual-addresses are
legal in 64-bit mode
6
Format of a Page-Directory entry
31
12 11 10 9 8 7 6 5 4 3 2 1 0
PAGE-TABLE BASE ADDRESS
P
W
U
P W T
P C D
A
0
P S
0
AVAIL
LEGEND P Present (1yes, 0no) W Writable
(1 yes, 0 no) U User (1 yes, 0 no)
A Accessed (1 yes, 0 no)
PS Page-Size (04KB, 1 4MB)
PWT Page Write-Through (1yes, 0 no) PCD
Page Cache-Disable (1 yes, 0 no)
7
Format of 64-bit table-entries
63 62 52 51

40 39 32
Reserved (must be 0)
Page-frame physical base-address 39..32
E X B
avl
31
12
11 9 8 7 6 5 4 3 2 1 0
Page-frame physical base-address31..12
P
W
U
P W T
P C D
A
avl
Meaning of these bits varies with the table
Legend P Present (1yes, 0no) PWT
Page Cache Disable (1yes, 0no) W
Writable (1yes, 0no) PWT Page Write-Through
(1yes, 0no) U User-page (1yes, 0no)
avl available for user-defined purposes A
Accessed (1yes, 0no) EXB
Execution-disabled Bit (if EFER.NXE1)
8
Extended Feature Enable Register
  • This Model-Specific Register (MSR) was introduced
    in the AMD64 architecture and perpetuated by
    EM64T (for compatibility)

63

11 10 8
0
S C E
L M E
L M A
N X E
Legend SCE SysCall/sysret is Enabled (1yes,
0no) LME Long-Mode is Enabled (1yes,
0no) LMA Long-Mode is Active (1yes,
0no) NXE Non-eXecutable pages Enabled (1yes,
0no)
NOTE The MSR address-index for EFER
0xC0000080, and this register is accessed using
RDMSR or WRMSR instructions
9
RDMSR and WRMSR
  • An assembly language code-fragment to turn on the
    LME-bit (Long-Mode Enable)

Each Model-Specific Register (MSR) is 64-bits
wide and has a unique 32-bit address-index
which is first placed into register ECX. Then
the least-significant 32-bits of that MSR is
accessed using register EAX, while the
most-significant 32-bits is accessed using
register EDX. mov 0xC0000080, ecx setup
EFER address-index rdmsr read EFER into
(EDX,EAX) bts 8, eax set the LME-bits
image to 1 wrmsr write (EDX,EAX) into
EFER NOTE RDMSR and WRMSR must be executed at
Ring0 privilege-level.
10
Control Registers CR4 and CR0
31
13
5 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
V M X E
0
0
O S X M M E x
O S F X C R
P C E
P G E
M C E
P A E
P S E
D E
T S D
P V I
V M E
Control Register CR4
31

0
P G
C D
N W
0
0
0
0
0
0
0
0
0
0
A M
0
W P
0
0
0
0
0
0
0
0
0
0
N E
E T
T S
E M
M P
P E
Control Register CR0
Legend (for 64-bit mode) PE Protected-mode
Enabled (1yes, 0no) PG Paging Enabled
(1yes, 0no) PAE Page-Addressing Extensions
(1enabled, 0disabled)
11
Segment-Descriptor Format
63
32
Base31..24 (if L0)
G
D
L
A V L
Limit 19..16 (if L0)
P
D P L
S
X
C / D
R / W
A
Base23..16 (if L0)
Base15..0 (if L0)
Limit15..0 (if L0)
31
0
Legend DPL Descriptor Privilege Level
(0..3) G Granularity (0 byte, 1
4KB-page) P Present (0 no, 1 yes) D
Default size (0 16-bit, 1 32-bit) S System
(0 yes, 1 no) X eXecutable (0 no, 1
yes) A Accessed (0 no, 1
yes) code-segments R Readable (0 no, 1
yes) C Conforming (0no, 1yes) data-segments
W Writable (0 no, 1 yes) D
expands-Down (0no, 1yes) L Long-mode
(i.e., 64-bit addressing) (0no, 1yes) AVL
Available for users purposes
12
IA-32e Call-Gate descriptor
127
96
Reserved (must be 0)
offset63..32
offset63..32
Base31..24 (if S0)
G
D
L
A V L
offset31..16
P
D P L
0
X
C / D
R / W
Gate Type (1100)
Reserved (must be 0)
code-segment selector
offset15..0
31
0
We can use a call-gate to jump from 16-bit
code-segment to a 64-bit code-segment
13
Summary of steps
  • Transition from real-mode to IA-32e mode
  • Build the table of global descriptors
  • Load GDTR with pseudo-descriptor for GDT
  • Build the 4-level page-mapping tables
  • Enable IA-32e mode (set EFER.LME1)
  • Enable Page-Address Extensions (CR4.PAE)
  • Load Level4 page-map table address in CR3
  • Activate IA-32e mode (CR0.PE and CR0.PG)
  • Transfer via call-gate to 64-bit code-segment

14
Notes on the transition
  • Code-segment must be identity-mapped
  • Interrupts have to be temporarily disabled
  • All memory-addressing in 64-bit mode via CS, SS,
    DS or ES uses 0 as base-address (and checking of
    segment-limits is omitted)

15
For a return to real-mode
  • Processor must enter 16-bit code-segment in
    compatibility-mode via indirect far jump
  • Load segment-registers DS, ES, and SS with
    writable 16-bit segment-selectors (64K-limit)
  • Code-segment has to be identity-mapped
  • Deactivate IA-32e mode by clearing PG-bit
  • Leave protected-mode by clearing PE-bit
  • Reload registers CS and SS with real-mode
    segment-addresses before enabling interrupts

16
Demo-program inandout.s
  • We created a demo-program that starts in
    real-mode, enters 64-bit mode and draws a
    message, jumps to compatibility mode and draws
    another message, then returns to real-mode and
    shows a final message
  • It has to write directly to VRAM when its not
    executing in real-mode because the ROM-BIOS
    routines use real-style code

17
How text-mode VRAM works
  • The video memory resides at 0x000B8000 and in
    text-mode it is organized as a linear array of
    two-byte elements (i.e., words)
  • Array-elements are arranged in row-major order
    (left-to-right, top-to-bottom)

15 8 7
0
Attribute-code for the foreground and
background colors
Ascii code for character
18
Default color-programming
7 6 5 4
3 2 1
0
Blue 1
Intense 1
Red 1
Blue 1
Green 1
Red 0
Green 0
Blinking 0
FORECOLOR
BACKCOLOR
19
Character-cell screen-locations
80 cells-per-row
25 rows
for (row 0, column 0) the address-offset is
(0800)2
for (row 2, column 79) the address-offset is
(28079)2
for (row 24, column 40) the address-offset is
(248040)2
20
In-class exercise 1
  • Can you modify the message-colors used in our
    inandout.s demo-program so that
  • the first message is bright-red against white
  • the second message is brown against cyan
  • The final message is magenta against black

21
In-class exercise 2
  • Can you modify the inandout.s program so that
    it skips entering 64-bit mode i.e., so it
    transfers directly from real-mode to
    compatibility mode, prints its confirmation
    message, and then transfers back to real-mode
    to show a final message?

real-mode
64-bit mode
compatibility mode
Write a Comment
User Comments (0)
About PowerShow.com