<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Project 4: Privilege Separation and System Calls on CS 1670: Operating Systems</title><link>https://csci1670.github.io/docs/project4/</link><description>Recent content in Project 4: Privilege Separation and System Calls on CS 1670: Operating Systems</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://csci1670.github.io/docs/project4/index.xml" rel="self" type="application/rss+xml"/><item><title>Appendix A: Debugging the User/Kernel Boundary</title><link>https://csci1670.github.io/docs/project4/debug/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://csci1670.github.io/docs/project4/debug/</guid><description>&lt;style&gt;
 section {
 margin-bottom: 2rem;
 padding: 0em 1em;
 padding-bottom: 1em;
 border-radius: 4px;

 background-color: #f7f7f7;
 border: 1px solid #ccc;
 }
 center {
 text-align: center;
 }
 summary {
 font-weight: bolder;
 }
 summary:hover {
 text-decoration: underline
 }
&lt;/style&gt;
&lt;h1 id="appendix-a-debugging-the-userkernel-boundary"&gt;
 Appendix A: Debugging the User/Kernel Boundary
 &lt;a class="anchor" aria-hidden="true" href="#appendix-a-debugging-the-userkernel-boundary"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Everything in the debugging appendices of &lt;a href="https://csci1670.github.io/docs/project2/debug/"&gt;Project 2&lt;/a&gt; and &lt;a href="https://csci1670.github.io/docs/project3/debug/"&gt;Project 3&lt;/a&gt; still applies, and so do the &lt;code&gt;CHECK()&lt;/code&gt; and &lt;code&gt;DEBUG()&lt;/code&gt; macros from &lt;a href="https://csci1670.github.io/docs/project2/assertions/"&gt;Project 2&amp;rsquo;s Appendix D&lt;/a&gt;. This project adds one new category of wrong: &lt;strong&gt;the CPU is at a different exception level, or on a different stack, than you think.&lt;/strong&gt; Most of the bugs in this project show up as an exception in an unexpected place, and almost all of them can be diagnosed from three numbers: the exception class in &lt;code&gt;ESR_EL1&lt;/code&gt;, the address in &lt;code&gt;ELR_EL1&lt;/code&gt;, and the mode bits of the saved &lt;code&gt;SPSR_EL1&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>