diff --git a/blog/content/post/10-better-exception-messages.md b/blog/content/old-posts/better-exception-messages.md similarity index 100% rename from blog/content/post/10-better-exception-messages.md rename to blog/content/old-posts/better-exception-messages.md diff --git a/blog/content/post/09-catching-exceptions.md b/blog/content/old-posts/catching-exceptions.md similarity index 100% rename from blog/content/post/09-catching-exceptions.md rename to blog/content/old-posts/catching-exceptions.md diff --git a/blog/content/post/11-returning-from-exceptions.md b/blog/content/old-posts/returning-from-exceptions.md similarity index 99% rename from blog/content/post/11-returning-from-exceptions.md rename to blog/content/old-posts/returning-from-exceptions.md index baa15403..e5b98a3f 100644 --- a/blog/content/post/11-returning-from-exceptions.md +++ b/blog/content/old-posts/returning-from-exceptions.md @@ -295,7 +295,7 @@ Unfortunately, Rust does not support such a calling convention. It was [proposed [interrupt calling conventions]: https://github.com/rust-lang/rfcs/pull/1275 [Naked functions]: https://github.com/rust-lang/rfcs/blob/master/text/1201-naked-fns.md -[naked fn post]: {{% relref "10-better-exception-messages.md#naked-functions" %}} +[naked fn post]: {{% relref "better-exception-messages.md#naked-functions" %}} ### A naked wrapper function diff --git a/blog/content/post/02-entering-longmode.md b/blog/content/post/02-entering-longmode.md index 2ba2a91c..d891813b 100644 --- a/blog/content/post/02-entering-longmode.md +++ b/blog/content/post/02-entering-longmode.md @@ -499,8 +499,8 @@ _Congratulations_! You have successfully wrestled through this CPU configuration #### One Last Thing Above, we reloaded the code segment register `cs` with the new GDT offset. However, the data segment registers `ss`, `ds`, `es`, `fs`, and `gs` still contain the data segment offsets of the old GDT. This isn't necessarily bad, since they're ignored by almost all instructions in 64-bit mode. However, there are a few instructions that expect a valid data segment descriptor _or the null descriptor_ in those registers. An example is the the [iretq] instruction that we'll need in the [_Returning from Exceptions_] post. -[iretq]: {{% relref "11-returning-from-exceptions.md#the-iretq-instruction" %}} -[_Returning from Exceptions_]: {{% relref "11-returning-from-exceptions.md" %}} +[iretq]: {{% relref "returning-from-exceptions.md#the-iretq-instruction" %}} +[_Returning from Exceptions_]: {{% relref "returning-from-exceptions.md" %}} To avoid future problems, we reload all data segment registers with null: diff --git a/blog/content/post/08-kernel-heap.md b/blog/content/post/08-kernel-heap.md index 5103c530..3cd6d1e4 100644 --- a/blog/content/post/08-kernel-heap.md +++ b/blog/content/post/08-kernel-heap.md @@ -835,4 +835,4 @@ Now we're able to use heap storage in our kernel without leaking memory. This al ## What's next? This post concludes the section about memory management for now. We will revisit this topic eventually, but now it's time to explore other topics. The upcoming posts will be about CPU exceptions and interrupts. We will catch all page, double, and triple faults and create a driver to read keyboard input. The [next post] starts by setting up a so-called _Interrupt Descriptor Table_. -[next post]: {{% relref "09-catching-exceptions.md" %}} +[next post]: {{% relref "09-handling-exceptions.md" %}}