Commit Graph

489 Commits

Author SHA1 Message Date
Philipp Oppermann
702e49eaf7 Catch divide-by-zero errors and introduce inline assembly
This commit updates the “Catching Exceptions” post to catch divide-by-zero errors instead of page faults. The reason is a subtle stack alignment bug, which is somehow caused by the additional error code on a page fault. This commit also adds a short introduction to inline assembly.
2016-06-25 17:12:04 +02:00
Philipp Oppermann
e8b3a1fff1 Catch divide error instead of page fault
The divide error pushes no error code. Thus we avoid stack misalignment (see #184).
2016-06-25 17:12:04 +02:00
Philipp Oppermann
c9d8afe434 Run rustfmt 2016-06-25 17:08:26 +02:00
Philipp Oppermann
2f9e6cc0d0 Minor improvements to catching exceptions post 2016-06-25 17:06:57 +02:00
Philipp Oppermann
84ba085a0a The section will be only about exceptions (#186) 2016-06-24 13:59:17 +02:00
Philipp Oppermann
b7a47ee001 Add gitter badge (#183) 2016-06-24 13:54:35 +02:00
Philipp Oppermann
e4cc5b84f1 Merge pull request #185 from phil-opp/unwind_resume
Create dummy _Unwind_Resume function to fix libcore linker errors
2016-06-24 13:44:54 +02:00
Philipp Oppermann
f00360d553 Add and explain dummy _Unwind_Resume function in “Set Up Rust” post 2016-06-24 13:37:03 +02:00
Philipp Oppermann
952f7ed5e3 Create dummy _Unwind_Resume function to fix libcore linker errors 2016-06-24 13:37:02 +02:00
Philipp Oppermann
76b83c623e Revert "Remove unneeded gcc_except_table section" (#180) 2016-06-13 18:36:01 +02:00
Philipp Oppermann
20d9037740 Merge pull request #178 from phil-opp/patch5
Remove unneeded gcc_except_table section
2016-06-12 16:36:00 +02:00
Philipp Oppermann
1fb6369f61 Remove unneeded gcc_except_table section from blog post 2016-06-12 16:33:55 +02:00
Philipp Oppermann
1083ac9bac Remove unneeded gcc_except_table section 2016-06-12 16:32:34 +02:00
Ryan Campbell
793eeebfb3 Add missing open brace (#177) 2016-06-10 20:36:33 +02:00
Steve Klabnik
1183f5d1e1 Update section header to reflect changes in the text (#176) 2016-06-07 21:48:54 +02:00
Philipp Oppermann
bddf35f365 Add missing link to bit_field crate (#174) 2016-06-01 01:21:16 +02:00
Jordan Danford
bf0e70746d Change 'boot load' to 'boot loop' in 'Remap the Kernel' section (#173) 2016-05-31 09:11:14 +02:00
Homu
c22e1e8bb1 Auto merge of #172 - phil-opp:phil-opp-patch-1, r=phil-opp
Recommend rustup instead of multirust
2016-05-30 23:58:02 +09:00
Philipp Oppermann
4fae6e4731 Recommend rustup instead of multirust 2016-05-30 16:57:28 +02:00
Philipp Oppermann
c2336ceece Make cross-compile-* and set-up-gdb pages additional resourses 2016-05-29 19:58:44 +02:00
Philipp Oppermann
2f0a3459ad Merge pull request #170 from phil-opp/cargo-panic-abort
Use the `panic=abort` option instead of `-Z no-landing-pads`
2016-05-29 18:49:30 +02:00
Philipp Oppermann
0f5ec6f129 Update “Kernel Heap”: The _Unwind_Resume linker error shouldn't occur anymore 2016-05-29 18:47:38 +02:00
Philipp Oppermann
5d13ff7c3a Add update note 2016-05-29 18:38:14 +02:00
Philipp Oppermann
d7b05bc6b4 Update “Set Up Rust” post to use the cargo panic option 2016-05-29 18:35:16 +02:00
Philipp Oppermann
f4eb589f19 We don't need _Unwind_Resume anymore 2016-05-29 18:00:58 +02:00
Philipp Oppermann
725c452157 Use the panic=abort option instead of -Z no-landing-pads 2016-05-29 18:00:29 +02:00
Philipp Oppermann
01f9f1056c Merge pull request #169 from phil-opp/missing-pub
Make methods of EntryOptions public
2016-05-29 17:26:48 +02:00
Philipp Oppermann
9ea7ee6f57 Make methods of EntryOptions public in post 2016-05-29 17:25:11 +02:00
Philipp Oppermann
480265872d Make methods of EntryOptions public 2016-05-29 17:24:21 +02:00
Philipp Oppermann
165bf096a7 Merge pull request #164 from phil-opp/catching-exceptions
Add new post about “Catching Exceptions”
2016-05-28 16:00:31 +02:00
Philipp Oppermann
f58a6fe185 Add a print_error function, which works for exceptions inside println 2016-05-28 15:47:34 +02:00
Philipp Oppermann
c1df1d3354 Initialize the IDT and provoke a page fault 2016-05-28 15:47:34 +02:00
Philipp Oppermann
2d15a7bdb1 Make HandlerFunc public, because it is part of a public interface 2016-05-28 15:47:34 +02:00
Philipp Oppermann
c65b16f42d Create a static IDT with a page fault handler function 2016-05-28 15:47:34 +02:00
Philipp Oppermann
b84c5822df Create interrupt module with IDT submodule 2016-05-28 15:47:34 +02:00
Philipp Oppermann
245125cb4a Minor improvements to post 2016-05-28 15:47:33 +02:00
Philipp Oppermann
e2b45d3971 Fix minor errors in code snippets 2016-05-28 15:46:47 +02:00
Philipp Oppermann
865e74bfad We don't overhaul our build system yet 2016-05-28 14:37:19 +02:00
Philipp Oppermann
745b1f6a0b Improve _Unwind_Resume description and remove claim about the “next post” 2016-05-28 14:36:23 +02:00
Philipp Oppermann
3b71e9e5a0 Add “Catching Exceptions” post to README 2016-05-28 14:15:20 +02:00
Philipp Oppermann
e4b42b106f Reset source code to master again 2016-05-28 14:09:45 +02:00
Philipp Oppermann
08540eb602 Remove unneeded unsafe 2016-05-28 14:09:17 +02:00
Philipp Oppermann
4633f84af6 Finish catching-exceptions post 2016-05-28 14:09:17 +02:00
Philipp Oppermann
5054e48c9a Remove unneeded pubs 2016-05-28 14:09:17 +02:00
Philipp Oppermann
13e94de7b4 Make the load function safe 2016-05-28 14:09:17 +02:00
Philipp Oppermann
8540d3844b Use new x86::segmentation::cs function and merge set_handler and options
We avoid inline assembly and increase safety (it is no longer possible to set the non-present initilization entries to present).
2016-05-28 14:09:17 +02:00
Philipp Oppermann
968ae00de7 Update blog post 2016-05-28 14:09:17 +02:00
Philipp Oppermann
cbe034f3a5 wip 2016-05-28 14:09:17 +02:00
Philipp Oppermann
c961fdc32b wip 2016-05-28 14:09:17 +02:00
Philipp Oppermann
59382699d0 wip 2016-05-28 14:09:17 +02:00