Files
x86-bare-metal-examples/paging.S
Ciro Santilli fb3c7e04c4 Move all documentation to README.adoc
This includes both separate .md files, and documentation that was on the
head of the .S source files.

Retest everything as this was done, and fix a few easy things.
2018-05-13 22:13:19 +01:00

35 lines
886 B
ArmAsm

#include "common.h"
BEGIN
CLEAR
STAGE2
PROTECTED_MODE
SETUP_PAGING_4M
/* Setup a test canary value. */
movl $0x1234, 0x1000
/* Print the canary to make sure it is really there. */
VGA_PRINT_HEX_4 0x1000
/* Make page 0 point to 4KiB. */
orb $0x10, page_table + 1
PAGING_ON
/* THIS is what we've been working for!!!
* Even though we mov to 0, the paging circuit reads that as physical address 0x1000,
* so the canary value 0x1234 should be modified to 0x5678.
**/
movl $0x5678, 0
/* Turn paging back off to prevent it from messing with us.
* Remember that VGA does memory accesses, so if paging is still on,
* we must identity map up to it, which we have, so this is not mandatory.
* */
PAGING_OFF
/* Print the (hopefully) modified value 0x5678. */
VGA_PRINT_HEX_4 0x1000
jmp .