diff options
Diffstat (limited to 'arch/x86_64/kernel/head.S')
-rw-r--r-- | arch/x86_64/kernel/head.S | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/arch/x86_64/kernel/head.S b/arch/x86_64/kernel/head.S index 9bd2e7a4b81e..98ff5eb32b9a 100644 --- a/arch/x86_64/kernel/head.S +++ b/arch/x86_64/kernel/head.S | |||
@@ -137,14 +137,14 @@ startup_64: | |||
137 | wrmsr | 137 | wrmsr |
138 | 138 | ||
139 | /* Setup cr0 */ | 139 | /* Setup cr0 */ |
140 | xorq %rax, %rax | 140 | #define CR0_PM 1 /* protected mode */ |
141 | btsq $31, %rax /* Enable paging */ | 141 | #define CR0_MP (1<<1) |
142 | btsq $0, %rax /* Enable protected mode */ | 142 | #define CR0_ET (1<<4) |
143 | btsq $1, %rax /* Enable MP */ | 143 | #define CR0_NE (1<<5) |
144 | btsq $4, %rax /* Enable ET */ | 144 | #define CR0_WP (1<<16) |
145 | btsq $5, %rax /* Enable NE */ | 145 | #define CR0_AM (1<<18) |
146 | btsq $16, %rax /* Enable WP */ | 146 | #define CR0_PAGING (1<<31) |
147 | btsq $18, %rax /* Enable AM */ | 147 | movl $CR0_PM|CR0_MP|CR0_ET|CR0_NE|CR0_WP|CR0_AM|CR0_PAGING,%eax |
148 | /* Make changes effective */ | 148 | /* Make changes effective */ |
149 | movq %rax, %cr0 | 149 | movq %rax, %cr0 |
150 | 150 | ||
@@ -248,23 +248,23 @@ ENTRY(_stext) | |||
248 | */ | 248 | */ |
249 | .org 0x1000 | 249 | .org 0x1000 |
250 | ENTRY(init_level4_pgt) | 250 | ENTRY(init_level4_pgt) |
251 | .quad 0x0000000000102007 /* -> level3_ident_pgt */ | 251 | .quad 0x0000000000002007 + __PHYSICAL_START /* -> level3_ident_pgt */ |
252 | .fill 255,8,0 | 252 | .fill 255,8,0 |
253 | .quad 0x000000000010a007 | 253 | .quad 0x000000000000a007 + __PHYSICAL_START |
254 | .fill 254,8,0 | 254 | .fill 254,8,0 |
255 | /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ | 255 | /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ |
256 | .quad 0x0000000000103007 /* -> level3_kernel_pgt */ | 256 | .quad 0x0000000000003007 + __PHYSICAL_START /* -> level3_kernel_pgt */ |
257 | 257 | ||
258 | .org 0x2000 | 258 | .org 0x2000 |
259 | ENTRY(level3_ident_pgt) | 259 | ENTRY(level3_ident_pgt) |
260 | .quad 0x0000000000104007 | 260 | .quad 0x0000000000004007 + __PHYSICAL_START |
261 | .fill 511,8,0 | 261 | .fill 511,8,0 |
262 | 262 | ||
263 | .org 0x3000 | 263 | .org 0x3000 |
264 | ENTRY(level3_kernel_pgt) | 264 | ENTRY(level3_kernel_pgt) |
265 | .fill 510,8,0 | 265 | .fill 510,8,0 |
266 | /* (2^48-(2*1024*1024*1024)-((2^39)*511))/(2^30) = 510 */ | 266 | /* (2^48-(2*1024*1024*1024)-((2^39)*511))/(2^30) = 510 */ |
267 | .quad 0x0000000000105007 /* -> level2_kernel_pgt */ | 267 | .quad 0x0000000000005007 + __PHYSICAL_START /* -> level2_kernel_pgt */ |
268 | .fill 1,8,0 | 268 | .fill 1,8,0 |
269 | 269 | ||
270 | .org 0x4000 | 270 | .org 0x4000 |
@@ -337,17 +337,17 @@ ENTRY(empty_bad_pmd_table) | |||
337 | 337 | ||
338 | .org 0xa000 | 338 | .org 0xa000 |
339 | ENTRY(level3_physmem_pgt) | 339 | ENTRY(level3_physmem_pgt) |
340 | .quad 0x0000000000105007 /* -> level2_kernel_pgt (so that __va works even before pagetable_init) */ | 340 | .quad 0x0000000000005007 + __PHYSICAL_START /* -> level2_kernel_pgt (so that __va works even before pagetable_init) */ |
341 | 341 | ||
342 | .org 0xb000 | 342 | .org 0xb000 |
343 | #ifdef CONFIG_ACPI_SLEEP | 343 | #ifdef CONFIG_ACPI_SLEEP |
344 | ENTRY(wakeup_level4_pgt) | 344 | ENTRY(wakeup_level4_pgt) |
345 | .quad 0x0000000000102007 /* -> level3_ident_pgt */ | 345 | .quad 0x0000000000002007 + __PHYSICAL_START /* -> level3_ident_pgt */ |
346 | .fill 255,8,0 | 346 | .fill 255,8,0 |
347 | .quad 0x000000000010a007 | 347 | .quad 0x000000000000a007 + __PHYSICAL_START |
348 | .fill 254,8,0 | 348 | .fill 254,8,0 |
349 | /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ | 349 | /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ |
350 | .quad 0x0000000000103007 /* -> level3_kernel_pgt */ | 350 | .quad 0x0000000000003007 + __PHYSICAL_START /* -> level3_kernel_pgt */ |
351 | #endif | 351 | #endif |
352 | 352 | ||
353 | .data | 353 | .data |