Philipp Oppermann
87d95dbf0d
Update to latest bit_field version
...
(cherry picked from commit 46100ba24b )
2017-01-25 13:53:10 +01:00
Philipp Oppermann
91672e3cac
The ReadWrite flag isn't needed for code segments ( #279 )
...
(cherry picked from commit fce85e68ee )
2017-01-18 13:13:59 +01:00
Philipp Oppermann
a91322017e
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:35 +01:00
Philipp Oppermann
f0df9fb937
Data segments aren't needed for 64-bit mode
...
(cherry picked from commit e179dadf70 )
2017-01-15 14:14:47 +01:00
Philipp Oppermann
135d8891f3
Make panic_fmt public to fix private_no_mangle_fns warning
...
(cherry picked from commit 1be2f42791 )
2017-01-04 16:24:35 +01:00
Philipp Oppermann
58de55a2d4
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:32 +01:00
Philipp Oppermann
94d4f8df8e
Update x86 crate to version 0.8.0 ( #266 )
...
(cherry picked from commit 02697891e2 )
2016-12-21 15:09:45 +01:00
Philipp Oppermann
d5c84a860a
Remove cargo workspace ( #265 )
...
(cherry picked from commit fcd453ac29 )
2016-12-21 14:47:40 +01:00
Philipp Oppermann
ce6b43cc9b
Fix panic_fmt arguments: file is a &'static str
...
(cherry picked from commit e9735738f7 )
2016-11-26 12:29:31 +01:00
Philipp Oppermann
090e0785ff
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.”
(cherry picked from commit 15feb9a120 )
2016-11-01 18:01:24 +01:00
Philipp Oppermann
5ce6655aa1
Remove print_error and use normal println in exception handlers
...
(cherry picked from commit 9b83b2853e )
2016-10-31 01:32:53 +01:00
Philipp Oppermann
e8d1f96b76
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:22:52 +01:00
Philipp Oppermann
e09df45b9b
Use volatile operations for accessing the VGA buffer
...
(cherry picked from commit d7a445b1bb )
2016-10-08 15:55:28 +02:00
Philipp Oppermann
7f80db6fb4
Add missing license headers and update copyright year ( #232 )
...
(cherry picked from commit a04924955a )
2016-10-02 18:31:20 +02:00
Philipp Oppermann
c764e6bb43
Add missing license headers ( #233 )
...
(cherry picked from commit 0f4d1ce303 )
2016-10-02 18:29:52 +02:00
Philipp Oppermann
0ec126fc7d
Use crates.io version of multiboot2
...
(cherry picked from commit c6b1346956 )
2016-09-27 13:56:43 +02:00
Calvin Lee
258a7d1aba
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:41:01 +02:00
Philipp Oppermann
6e20fe17db
Update bit_field to 0.5.0 and use new API
...
(cherry picked from commit 6eba03dd58 )
2016-09-27 13:38:15 +02:00
Philipp Oppermann
2aeeaecf86
Create a cargo workspace for subcrates
...
(cherry picked from commit 488a3c16f0 )
2016-08-05 11:29:19 +02:00
Philipp Oppermann
e63dda6953
Add missing rsi clobber in code as well
...
(cherry picked from commit 46d41d9c3d )
2016-08-04 01:13:34 +02:00
Philipp Oppermann
af8578ec78
Fix .travis.yml for tag build
2016-08-03 16:54:27 +02:00
Philipp Oppermann
4c9f7cfbee
Update README for better_exception_messages tag
2016-08-03 16:53:44 +02:00
Philipp Oppermann
c26fb53547
Remove blog and scripts subdirs
2016-08-03 16:51:58 +02:00
Philipp Oppermann
7871e4008a
Fix github tag link
2016-08-03 16:48:02 +02:00
Philipp Oppermann
e1a90fe3ab
Final improvements
2016-08-03 16:42:47 +02:00
Philipp Oppermann
e17fd2d0de
Run rustfmt
2016-08-03 16:41:49 +02:00
Philipp Oppermann
2df8517816
Translate error code and print cr2 register
2016-08-03 16:39:38 +02:00
Philipp Oppermann
550a99cfd4
Add and test a handler_with_error_code macro and a page fault handler
2016-08-03 16:36:58 +02:00
Philipp Oppermann
86a757cb61
Add and test an invalid opcode handler function
2016-08-03 16:26:22 +02:00
Philipp Oppermann
bf72618647
Add a handler macro that creates wrapper functions
2016-08-03 16:24:43 +02:00
Philipp Oppermann
308b033ea9
Add a wrapper function and print the exception stack frame
2016-08-03 16:22:59 +02:00
Philipp Oppermann
07bef978ad
Silence dead code warnings
2016-08-03 16:00:04 +02:00
Philipp Oppermann
ee48ec5e29
Reset src to master to be able to follow step-by-step
2016-08-03 16:00:04 +02:00
Philipp Oppermann
6590531a41
Provoke a page fault
2016-08-03 16:00:04 +02:00
Philipp Oppermann
df99382cda
Print cr2 in page_fault_handler
2016-08-03 16:00:04 +02:00
Philipp Oppermann
979663acda
Rename to better-exception-messages
2016-08-03 16:00:04 +02:00
Philipp Oppermann
8bb46c6b62
Finish exceptions diagnostics post
2016-08-03 16:00:03 +02:00
Philipp Oppermann
4eda7993a2
Add handler! macros
2016-08-03 16:00:03 +02:00
Philipp Oppermann
b949fba62f
Next section: Debug the failure on real hardware
2016-08-03 14:44:52 +02:00
Philipp Oppermann
83978e8417
Add a ToC
2016-08-03 14:44:52 +02:00
Philipp Oppermann
9113a63f5e
Test the two-stage exception handler in code
2016-08-03 14:44:52 +02:00
Philipp Oppermann
9e45cf65bc
Describe the two-stage exception handler
2016-08-03 14:44:52 +02:00
Philipp Oppermann
06fb4d6596
WIP code for upcoming post
2016-08-03 14:44:52 +02:00
Philipp Oppermann
95c0452bcb
Begin new post
2016-08-03 14:44:52 +02:00
Philipp Oppermann
68e2495d9c
Rename modifying-page-tables.md to page-tables.md
2016-08-03 14:43:01 +02:00
Philipp Oppermann
9469dc5891
Remove coarse class from ToCs
...
We will add it dynamically via javascript when the Toc is higher than the viewport.
2016-07-28 19:42:37 +02:00
Anton Strömkvist
6b2f1281ae
Fix hex constant ( #193 )
...
I assume these were in the wrong order since all the others looked this way :)
2016-07-28 18:01:42 +02:00
Philipp Oppermann
826e303ed0
Merge pull request #192 from phil-opp/post-toc
...
Add tables of contents to all blog posts
2016-07-17 17:14:50 +02:00
Philipp Oppermann
d4e82b0aa4
Improve heading levels
2016-07-17 17:10:42 +02:00
Philipp Oppermann
bc6f496eb5
Add tables of contents to all blog posts
2016-07-17 17:10:23 +02:00
Philipp Oppermann
62dd13b2e7
Merge pull request #190 from phil-opp/p1
...
Add aligned .got and .got.plt sections to linker script
2016-07-16 17:22:25 +02:00
Philipp Oppermann
68c1e42356
Update linker script in post (add .got and .got.plt)
2016-07-14 18:11:58 +02:00
Philipp Oppermann
2445b47661
Add aligned .got and .got.plt sections to linker script
2016-07-14 18:07:26 +02:00
Philipp Oppermann
d64e4ba2fc
Update x86 crate to 0.7.1 ( #189 )
2016-07-14 11:21:04 +02:00
Aaron Hill
48e7faa521
Add ENTRY(start) to 'Allocating Frames' blog post linker script ( #188 )
2016-06-29 09:19:08 +02:00
Philipp Oppermann
f8c5bc5dec
Merge pull request #187 from phil-opp/divide_by_zero
...
Catch divide error instead of page fault
2016-06-25 17:13:29 +02:00
Philipp Oppermann
ca438d9740
Revise plans for the upcoming post
2016-06-25 17:12:04 +02:00
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