-
http://stackoverflow.com/questions/1858640/how-can-i-create-a-sleep-function-in-16bit-masm-assembly-x86
cache:
http://stackoverflow.com/questions/10989403/how-is-x86-instruction-cache-synchronized
wbinvd: write back from cache to memory, and invalidate all cache
invd: just invalidate, but don't write back
clflush: flush only selected cache lines
lidt, interrupts, IDTR:
PIC example
paging
Page fault:
Dirty:
64-bit
http://stackoverflow.com/questions/22962251/how-to-enter-64-bit-mode-on-a-x86-64/22963701#22963701
Segment registers /segmentation and protected mode. Then try to answer all of: GDT
Bunch of basic dupes:
In actual OSes:
Segfault:
64-bit:
lgdt:
Local descriptor table:
WRMSR https://en.wikipedia.org/wiki/Model-specific_register http://x86.renejeschke.de/html/file_module_x86_id_326.html
BIOS
ACPI
play with hardware
exemplify all CPU modes
https://en.wikipedia.org/wiki/Task_state_segment
Not used by Linux: http://stackoverflow.com/questions/2711044/why-doesnt-linux-use-the-hardware-context-switch-via-the-tss
keyboard through interrupt (high level BIOS int 16 that waits for input done)
Almost there! pit_protected almost works, the problem is that it only fires once: http://board.flatassembler.net/topic.php?t=17437 Needs some resetting fixed it seems.
mouse
Does not seem to be an easy BIOS way:
control registers CRX
HPET https://en.wikipedia.org/wiki/High_Precision_Event_Timer
BIOS memory detect:
40h:6Ch
a bios timer incremented at 18.2 Hz: `