Commit Graph

1108 Commits

Author SHA1 Message Date
Philipp Oppermann
7db15cf892 Reset source code to master again
(in order to follow the post and test the exact code from it)
2017-01-02 19:11:56 +01:00
Philipp Oppermann
055c534b4e Add a section about possible safety problems 2017-01-02 19:11:56 +01:00
Philipp Oppermann
80354c8a72 Multiple code corrections in post 2017-01-02 19:11:56 +01:00
Philipp Oppermann
02b3ebcd27 Add another image for double fault post 2017-01-02 19:10:58 +01:00
Philipp Oppermann
cce40a1d67 Many small improvements 2016-12-30 14:54:46 +01:00
Philipp Oppermann
e121edced2 Change the GDT push logic
Instead of looking for a zero field, we now keep track of the next free index in a separate field. This avoids the bug that the high u64 of a pushed TSS descriptor is treated as empty.
2016-12-30 14:54:46 +01:00
Philipp Oppermann
1e45ddd79c Link double fault post and source in Readme 2016-12-30 14:52:04 +01:00
Philipp Oppermann
ec358321da Finish first draft of double faults post 2016-12-30 14:52:04 +01:00
Philipp Oppermann
c3bfcbcd8d Silence dead code warning 2016-12-30 14:52:04 +01:00
Philipp Oppermann
58e7cc77d0 Data segment descriptors are not needed in 64-bit mode 2016-12-30 14:52:04 +01:00
Philipp Oppermann
0b03c18b06 Rewrite interrupts::init using a lazy_static IDT again 2016-12-30 14:52:04 +01:00
Philipp Oppermann
3e6b1a8a35 Rewrite gdt module using an array instead of Vec 2016-12-30 14:52:04 +01:00
Philipp Oppermann
ceb44d9c2e Use x86's TaskStateSegment and use usize for stack pointers 2016-12-30 14:52:04 +01:00
Philipp Oppermann
d1fb1516fa Minor improvements to post 2016-12-30 14:52:04 +01:00
Philipp Oppermann
ef786e1fe8 Update post and code 2016-12-30 14:52:04 +01:00
Philipp Oppermann
038fd097b6 Update post 2016-12-30 14:52:04 +01:00
Philipp Oppermann
5f8de6e871 Create TSS and GDT modules and use a double fault stack 2016-12-30 14:52:04 +01:00
Philipp Oppermann
b4bc47d5d9 Add a new section about the causes of double faults
(+ many other improvements)
2016-12-30 14:51:47 +01:00
Philipp Oppermann
0cd2577abe Some code for double faults post 2016-12-30 14:50:53 +01:00
Philipp Oppermann
8eba47816f Begin new post about double faults 2016-12-30 14:50:52 +01:00
Philipp Oppermann
c33f01d8f7 Update printing-to-screen post to use spin 0.4.5 2016-12-30 14:47:39 +01:00
Philipp Oppermann
89abbf1038 Update to spin 0.4.5
Fixes #274
2016-12-30 14:40:57 +01:00
Philipp Oppermann
14babd8c2a Add a Xargo.toml for xargo 0.3.0 and update the corresponding post (#272) 2016-12-29 16:45:24 +01:00
Philipp Oppermann
8685cc602f Add images for double fault post 2016-12-29 15:25:58 +01:00
Philipp Oppermann
02697891e2 Update x86 crate to version 0.8.0 (#266) 2016-12-21 14:59:57 +01:00
Philipp Oppermann
a7a9aabce7 Remove workspace from post as well (#267) 2016-12-21 14:55:09 +01:00
Philipp Oppermann
fcd453ac29 Remove cargo workspace (#265) 2016-12-21 00:19:30 +01:00
Philipp Oppermann
00452c2302 Revert "map the P4 table recursively before setting paging" (#259) 2016-12-19 11:34:21 +01:00
Philipp Oppermann
c5dd983949 Mark panic_fmt as no_mangle to work around rust-lang/rust#38281 (#262) 2016-12-19 11:32:20 +01:00
Philipp Oppermann
f4ff2b0000 Keep installed tools up-to-date using cargo-update 2016-12-19 11:01:21 +01:00
Philipp Oppermann
9583cdea28 Test for rustfmt/xargo instead of using || true (#257) 2016-11-30 16:29:01 +01:00
Anton Strömkvist
bef61116fd Minor grammatical error fix (#258)
In `02-entering-longmode.md`
2016-11-30 16:28:45 +01:00
Philipp Oppermann
c76f7b8b98 Merge pull request #256 from phil-opp/p1
Fix panic_fmt arguments: file is a &'static str
2016-11-26 12:27:42 +01:00
Philipp Oppermann
f4c9c12047 Fix panic_fmt arguments in post 2016-11-26 12:17:12 +01:00
Philipp Oppermann
e9735738f7 Fix panic_fmt arguments: file is a &'static str 2016-11-26 12:15:34 +01:00
Philipp Oppermann
c7268cff3b Fix CI for xargo 0.2.0 2016-11-19 10:46:07 +01:00
Philipp Oppermann
a1fccc12b6 Set date of last update correctly for posts (#254) 2016-11-08 17:45:36 +01:00
Philipp Oppermann
e304b8ee21 Update images for #252 2016-11-01 17:56:31 +01:00
Philipp Oppermann
571f1d2fbf Merge pull request #252 from phil-opp/stack_frame-reference
Exceptions: Take the ExceptionStackFrame per reference
2016-11-01 17:56:25 +01:00
Philipp Oppermann
9963961f35 Test the handler_with_error_code macro in a different way
We now take stack_frame as a immutable reference and we shouldn't write to a &. So the old test example (page faults as breakpoints) becomes even more hacky. Instead, we're now deliberately entering an endless page fault loop to check our iretq logic.
2016-11-01 17:50:51 +01:00
Philipp Oppermann
67857bde2f Returning from Exceptions: Take stack_frame as reference 2016-11-01 17:46:57 +01:00
Philipp Oppermann
e129da8cc2 Better Exception Messages: Take stack_frame argument as reference 2016-11-01 17:46:57 +01:00
Philipp Oppermann
15feb9a120 Use references for the ExceptionStackFrame argument
We require/assume that these pointers are correct. Using references is cleaner than blindly dereferencing raw pointers.

Important: The Rust book guarantees that: “At runtime, a raw pointer * and a reference pointing to the same piece of data have an identical representation.”
2016-11-01 16:56:11 +01:00
Philipp Oppermann
f737c302e7 therefor -> for that 2016-10-31 15:31:32 +01:00
Philipp Oppermann
7a0bb1ff7b Print an empty line before exception error messages 2016-10-31 01:37:37 +01:00
Philipp Oppermann
a6d52f8244 Merge pull request #250 from phil-opp/println-screenshots
New screenshots with println (green) instead of print_error (red)
2016-10-31 01:12:40 +01:00
Philipp Oppermann
7254528d53 Merge pull request #249 from phil-opp/fix-println-deadlock
Update `print` macro to avoid deadlock; remove hacky `print_error` function
2016-10-31 01:12:34 +01:00
Philipp Oppermann
f300afe139 New screenshots with println instead of print_error 2016-10-31 01:07:06 +01:00
Philipp Oppermann
3bfa5a8178 Update “Returning from Exceptions” to use println 2016-10-31 01:04:53 +01:00
Philipp Oppermann
25fca59248 Update “Better Exception Messages” to use println 2016-10-30 20:06:51 +01:00