Read: xv6
trapasm.S
,
trap.c
,
syscall.c
,
initcode.S
,
usys.S
.
Skim
vectors.S
,
lapic.c
,
ioapic.c
,
picirq.c
.
Hand-In Procedure
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.
Introduction
Try to understand xv6's
trapasm.S
,
trap.c
,
syscall.c
,
initcode.S
,
usys.S
.
Skim
vectors.S
,
lapic.c
,
ioapic.c
,
picirq.c
.
The assigned chapter for today provides a commentary for these files, but you may find it useful to also consult:
Chapter 5 of IA-32 Intel Architecture Software Developer's Manual, Volume 3: System programming guide; you can skip sections 5.7.1, 5.8.2, 5.12.2 and 5.14. Be aware that terms such as exceptions, traps, interrupts, faults and aborts have no standard meaning.
Chapter 9 of the 1987 i386 Programmer's Reference Manual also covers exception and interrupt handling in IA32 processors.
Assignment:
In xv6, set a breakpoint at the beginning of syscall()
to
catch the very first system call. What values are on the stack at
this point? Turn in the output of x/37x $esp
at that
breakpoint with each value labeled as to what it is (e.g.,
saved %ebp
for trap
,
trapframe.eip
, scratch space, etc.).
This completes the homework.