<title>Homework: xv6 and Interrupts and Exceptions</title> <html> <head> </head> <body> <h1>Homework: xv6 and Interrupts and Exceptions</h1> <p> <b>Read</b>: xv6's trapasm.S, trap.c, syscall.c, vectors.S, and usys.S. Skim lapic.c, ioapic.c, and picirq.c <p> <b>Hand-In Procedure</b> <p> You are to turn in this homework during lecture. Please write up your answers to the exercises below and hand them in to a 6.828 staff member at the beginning of the lecture. <p> <b>Introduction</b> <p>Try to understand xv6's trapasm.S, trap.c, syscall.c, vectors.S, and usys.S. Skim You will need to consult: <p>Chapter 5 of <a href="../readings/ia32/IA32-3.pdf">IA-32 Intel Architecture Software Developer's Manual, Volume 3: System programming guide</a>; you can skip sections 5.7.1, 5.8.2, and 5.12.2. Be aware that terms such as exceptions, traps, interrupts, faults and aborts have no standard meaning. <p>Chapter 9 of the 1987 <a href="../readings/i386/toc.htm">i386 Programmer's Reference Manual</a> also covers exception and interrupt handling in IA32 processors. <p><b>Assignment</b>: In xv6, set a breakpoint at the beginning of <code>syscall()</code> to catch the very first system call. What values are on the stack at this point? Turn in the output of <code>print-stack 35</code> at that breakpoint with each value labeled as to what it is (e.g., saved <code>%ebp</code> for <code>trap</code>, <code>trapframe.eip</code>, etc.). <p> <b>This completes the homework.</b> </body>