Commit Graph

436 Commits

Author SHA1 Message Date
Philipp Oppermann
9d4a761be7 The ReadWrite flag isn't needed for code segments (#279)
(cherry picked from commit fce85e68ee)
2017-01-18 13:13:55 +01:00
Philipp Oppermann
43ef84d68a Load null selectors to all data registers
This is required for some instructions such as iretq (ss must be valid or 0).

(cherry picked from commit 8f8b46a9b6)
2017-01-15 14:18:32 +01:00
Philipp Oppermann
b3ddd18e7a Data segments aren't needed for 64-bit mode
(cherry picked from commit e179dadf70)
2017-01-15 14:14:43 +01:00
Philipp Oppermann
d905671f45 Make panic_fmt public to fix private_no_mangle_fns warning
(cherry picked from commit 1be2f42791)
2017-01-04 16:24:32 +01:00
Philipp Oppermann
a46b3a13c4 Mark panic_fmt as no_mangle to work around rust-lang/rust#38281
(cherry picked from commit 081105bbb6)
(cherry picked from commit 1acc1ff5806f2fa101f726644d258eb4e4543540)
2017-01-04 16:10:29 +01:00
Philipp Oppermann
7c8f62d312 Update x86 crate to version 0.8.0 (#266)
(cherry picked from commit 02697891e2)
2016-12-21 15:08:28 +01:00
Philipp Oppermann
fdec350e85 Remove cargo workspace (#265)
(cherry picked from commit fcd453ac29)
2016-12-21 14:46:47 +01:00
Philipp Oppermann
d0bb3f847a Fix panic_fmt arguments: file is a &'static str
(cherry picked from commit e9735738f7)
2016-11-26 12:29:29 +01:00
Philipp Oppermann
041aa2bfe6 Remove print_error and use normal println in exception handlers
(cherry picked from commit 9b83b2853e)
2016-10-31 01:27:10 +01:00
Philipp Oppermann
02b8078e1d Create a new print function and use it in the print macro
This fixes the deadlock problem, because the format_args is now evaluated before locking the screen writer. So `println!("{:?}", {println!("");})` no longer triggers a deadlock.

(cherry picked from commit d96df500a7)
2016-10-31 01:20:19 +01:00
Philipp Oppermann
351ae60205 Use volatile operations for accessing the VGA buffer
(cherry picked from commit d7a445b1bb)
2016-10-08 15:55:25 +02:00
Philipp Oppermann
b050b475f7 Add missing license headers and update copyright year (#232)
(cherry picked from commit a04924955a)
2016-10-02 18:31:18 +02:00
Philipp Oppermann
29fd8983c5 Add missing license headers (#233)
(cherry picked from commit 0f4d1ce303)
2016-10-02 18:29:49 +02:00
Philipp Oppermann
40bc3e9059 Use crates.io version of multiboot2
(cherry picked from commit c6b1346956)
2016-09-27 13:55:52 +02:00
Calvin Lee
30a75ec760 Fixes #220: BumpAllocator overflow
I also fixed a spelling error and replaced a tab with a space
in the blog post where `allocate()` was created.

(cherry picked from commit 54e02fd6b5)
(cherry picked from commit 3a2f0b33297164ebbfab92ee76881b6c06c4914d)
2016-09-27 13:40:58 +02:00
Philipp Oppermann
19f0b5443a Update bit_field to 0.5.0 and use new API
(cherry picked from commit 6eba03dd58)
2016-09-27 13:38:13 +02:00
Philipp Oppermann
689bd2e3e2 Create a cargo workspace for subcrates
(cherry picked from commit 488a3c16f0)
2016-08-05 11:28:05 +02:00
Philipp Oppermann
f5af9e25e4 Add aligned .got and .got.plt sections to linker script
(cherry picked from commit 2445b47661)
2016-07-16 17:23:50 +02:00
Philipp Oppermann
0a7843abd9 Catch divide error instead of page fault
The divide error pushes no error code. Thus we avoid stack misalignment (see #184).

(cherry picked from commit e8b3a1fff1)
2016-06-25 17:22:31 +02:00
Philipp Oppermann
dcab71016c Create dummy _Unwind_Resume function to fix libcore linker errors
(cherry picked from commit 952f7ed5e3)
2016-06-24 13:49:43 +02:00
Philipp Oppermann
3f4f2b8ac2 Revert "Remove unneeded gcc_except_table section" (#180)
(cherry picked from commit 76b83c623e)
2016-06-13 18:38:49 +02:00
Philipp Oppermann
428f97d049 Remove unneeded gcc_except_table section
(cherry picked from commit 1083ac9bac)
2016-06-12 16:37:40 +02:00
Philipp Oppermann
69b22d1fc0 Use the panic=abort option instead of -Z no-landing-pads
(cherry picked from commit 725c452157)
2016-06-12 16:22:02 +02:00
Philipp Oppermann
20f7e5472b Make methods of EntryOptions public
(cherry picked from commit 480265872d)
2016-05-29 17:26:28 +02:00
Philipp Oppermann
534d23c80f Fix .travis.yml for tag build 2016-05-28 15:58:12 +02:00
Philipp Oppermann
8c8f9dbb68 Update README for catching_exceptions tag 2016-05-28 15:54:33 +02:00
Philipp Oppermann
77f3ca3483 Remove blog and script subdirectories 2016-05-28 15:52:58 +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
Philipp Oppermann
74f33c0f44 Use own Itd entry type 2016-05-28 14:09:17 +02:00
Philipp Oppermann
78655d6bef Add bit_field dependency 2016-05-28 14:09:17 +02:00
Philipp Oppermann
431bb39fdb Begin work for exceptions post 2016-05-28 14:09:17 +02:00