table contained all the virtual-to-physical translations for the
process. Whenever the processor needed to look up a translation, it
consulted the page table. As long as the process only accessed
-memory that it didn't own, all was well. If the process accessed
+memory that it owned, all was well. If the process accessed
memory it didn't own, it ``page faulted'' and @func{page_fault}
terminated the process.
time, so we must allocate pages as necessary. You should only allocate
additional pages if they ``appear'' to be stack accesses. You must
devise a heuristic that attempts to distinguish stack accesses from
-other accesses.@footnote{You might find it useful to know that the
-80@var{x}86 instruction @code{pusha} pushes all 8 registers (32 bytes)
-on the stack at once.} Document and explain the heuristic in your
+other accesses. Document and explain the heuristic in your
design documentation.
The first stack page need not be loaded lazily. You can initialize it