+Index: src/devices/timer.c
diff -u src/devices/timer.c~ src/devices/timer.c
---- src/devices/timer.c~ 2005-05-24 15:52:43.000000000 -0700
-+++ src/devices/timer.c 2005-05-26 15:19:20.000000000 -0700
+--- src/devices/timer.c~
++++ src/devices/timer.c
@@ -23,6 +23,9 @@ static volatile int64_t ticks;
Initialized by timer_calibrate(). */
static unsigned loops_per_tick;
}
/* Returns true if LOOPS iterations waits for more than one timer
+Index: src/threads/fixed-point.h
diff -u src/threads/fixed-point.h~ src/threads/fixed-point.h
---- src/threads/fixed-point.h~ 1969-12-31 16:00:00.000000000 -0800
-+++ src/threads/fixed-point.h 2005-06-02 14:11:21.000000000 -0700
+--- src/threads/fixed-point.h~
++++ src/threads/fixed-point.h
@@ -0,0 +1,120 @@
+#ifndef THREADS_FIXED_POINT_H
+#define THREADS_FIXED_POINT_H
+}
+
+#endif /* threads/fixed-point.h */
+Index: src/threads/synch.c
diff -u src/threads/synch.c~ src/threads/synch.c
---- src/threads/synch.c~ 2005-05-24 20:47:28.000000000 -0700
-+++ src/threads/synch.c 2005-06-02 14:20:15.000000000 -0700
+--- src/threads/synch.c~
++++ src/threads/synch.c
@@ -114,10 +114,28 @@ sema_up (struct semaphore *sema)
ASSERT (sema != NULL);
}
/* Wakes up all threads, if any, waiting on COND (protected by
+Index: src/threads/thread.c
diff -u src/threads/thread.c~ src/threads/thread.c
---- src/threads/thread.c~ 2005-06-02 14:35:12.000000000 -0700
-+++ src/threads/thread.c 2005-06-02 14:55:56.000000000 -0700
+--- src/threads/thread.c~
++++ src/threads/thread.c
@@ -5,12 +5,14 @@
#include <stdio.h>
#include <string.h>
}
/* Completes a thread switch by activating the new thread's page
+Index: src/threads/thread.h
diff -u src/threads/thread.h~ src/threads/thread.h
---- src/threads/thread.h~ 2005-06-02 14:32:36.000000000 -0700
-+++ src/threads/thread.h 2005-06-02 14:38:46.000000000 -0700
+--- src/threads/thread.h~
++++ src/threads/thread.h
@@ -4,6 +4,8 @@
#include <debug.h>
#include <list.h>
+Index: src/threads/thread.c
diff -u src/threads/thread.c~ src/threads/thread.c
---- src/threads/thread.c~ 2005-06-02 14:35:12.000000000 -0700
-+++ src/threads/thread.c 2005-06-08 13:45:28.000000000 -0700
+--- src/threads/thread.c~
++++ src/threads/thread.c
@@ -13,6 +13,7 @@
#include "threads/synch.h"
#ifdef USERPROG
t->magic = THREAD_MAGIC;
}
+Index: src/threads/thread.h
diff -u src/threads/thread.h~ src/threads/thread.h
---- src/threads/thread.h~ 2005-06-02 14:32:36.000000000 -0700
-+++ src/threads/thread.h 2005-06-08 13:47:09.000000000 -0700
+--- src/threads/thread.h~
++++ src/threads/thread.h
@@ -4,6 +4,7 @@
#include <debug.h>
#include <list.h>
void thread_init (void);
void thread_start (void);
void thread_tick (void);
+Index: src/userprog/exception.c
diff -u src/userprog/exception.c~ src/userprog/exception.c
---- src/userprog/exception.c~ 2005-01-01 18:09:59.000000000 -0800
-+++ src/userprog/exception.c 2005-06-08 13:45:28.000000000 -0700
+--- src/userprog/exception.c~
++++ src/userprog/exception.c
@@ -150,6 +150,14 @@ page_fault (struct intr_frame *f)
write = (f->error_code & PF_W) != 0;
user = (f->error_code & PF_U) != 0;
/* To implement virtual memory, delete the rest of the function
body, and replace it with code that brings in the page to
which fault_addr refers. */
+Index: src/userprog/process.c
diff -u src/userprog/process.c~ src/userprog/process.c
---- src/userprog/process.c~ 2005-05-26 13:19:48.000000000 -0700
-+++ src/userprog/process.c 2005-06-08 13:49:13.000000000 -0700
+--- src/userprog/process.c~
++++ src/userprog/process.c
@@ -14,11 +14,23 @@
#include "threads/init.h"
#include "threads/interrupt.h"
else
palloc_free_page (kpage);
}
+Index: src/userprog/syscall.c
diff -u src/userprog/syscall.c~ src/userprog/syscall.c
---- src/userprog/syscall.c~ 2004-09-26 14:15:17.000000000 -0700
-+++ src/userprog/syscall.c 2005-06-08 13:45:28.000000000 -0700
+--- src/userprog/syscall.c~
++++ src/userprog/syscall.c
@@ -1,20 +1,482 @@
#include "userprog/syscall.h"
#include <stdio.h>
+ free (fd);
+ }
+}
+Index: src/userprog/syscall.h
diff -u src/userprog/syscall.h~ src/userprog/syscall.h
---- src/userprog/syscall.h~ 2004-09-05 22:38:45.000000000 -0700
-+++ src/userprog/syscall.h 2005-06-08 13:45:28.000000000 -0700
+--- src/userprog/syscall.h~
++++ src/userprog/syscall.h
@@ -2,5 +2,6 @@
#define USERPROG_SYSCALL_H
Index: src/Makefile.build
diff -u src/Makefile.build~ src/Makefile.build
---- src/Makefile.build~ 2005-06-18 20:20:47.000000000 -0700
-+++ src/Makefile.build 2006-05-16 13:44:56.000000000 -0700
+--- src/Makefile.build~
++++ src/Makefile.build
@@ -53,7 +53,9 @@ userprog_SRC += userprog/gdt.c # GDT in
userprog_SRC += userprog/tss.c # TSS management.
filesys_SRC = filesys/filesys.c # Filesystem core.
Index: src/devices/timer.c
diff -u src/devices/timer.c~ src/devices/timer.c
---- src/devices/timer.c~ 2005-07-06 13:45:36.000000000 -0700
-+++ src/devices/timer.c 2006-05-16 13:44:56.000000000 -0700
+--- src/devices/timer.c~
++++ src/devices/timer.c
@@ -23,6 +23,9 @@ static volatile int64_t ticks;
Initialized by timer_calibrate(). */
static unsigned loops_per_tick;
/* Returns true if LOOPS iterations waits for more than one timer
Index: src/threads/init.c
diff -u src/threads/init.c~ src/threads/init.c
---- src/threads/init.c~ 2006-04-25 11:35:56.000000000 -0700
-+++ src/threads/init.c 2006-05-16 13:44:56.000000000 -0700
+--- src/threads/init.c~
++++ src/threads/init.c
@@ -33,6 +33,8 @@
#include "filesys/filesys.h"
#include "filesys/fsutil.h"
/* Run actions specified on kernel command line. */
Index: src/threads/interrupt.c
diff -u src/threads/interrupt.c~ src/threads/interrupt.c
---- src/threads/interrupt.c~ 2006-04-25 11:35:56.000000000 -0700
-+++ src/threads/interrupt.c 2006-05-16 13:44:56.000000000 -0700
+--- src/threads/interrupt.c~
++++ src/threads/interrupt.c
@@ -354,6 +354,8 @@ intr_handler (struct intr_frame *frame)
in_external_intr = true;
yield_on_return = false;
If there is no handler, invoke the unexpected interrupt
Index: src/threads/thread.c
diff -u src/threads/thread.c~ src/threads/thread.c
---- src/threads/thread.c~ 2006-04-25 11:35:57.000000000 -0700
-+++ src/threads/thread.c 2006-05-16 13:44:56.000000000 -0700
+--- src/threads/thread.c~
++++ src/threads/thread.c
@@ -13,6 +13,7 @@
#include "threads/vaddr.h"
#ifdef USERPROG
Index: src/threads/thread.h
diff -u src/threads/thread.h~ src/threads/thread.h
---- src/threads/thread.h~ 2006-04-13 13:53:34.000000000 -0700
-+++ src/threads/thread.h 2006-05-16 13:44:56.000000000 -0700
+--- src/threads/thread.h~
++++ src/threads/thread.h
@@ -2,8 +2,10 @@
#define THREADS_THREAD_H
Index: src/userprog/exception.c
diff -u src/userprog/exception.c~ src/userprog/exception.c
---- src/userprog/exception.c~ 2006-01-29 13:32:56.000000000 -0800
-+++ src/userprog/exception.c 2006-05-16 13:44:56.000000000 -0700
+--- src/userprog/exception.c~
++++ src/userprog/exception.c
@@ -4,6 +4,7 @@
#include "userprog/gdt.h"
#include "threads/interrupt.h"
not_present ? "not present" : "rights violation",
Index: src/userprog/pagedir.c
diff -u src/userprog/pagedir.c~ src/userprog/pagedir.c
---- src/userprog/pagedir.c~ 2006-04-25 11:35:58.000000000 -0700
-+++ src/userprog/pagedir.c 2006-05-16 13:44:56.000000000 -0700
+--- src/userprog/pagedir.c~
++++ src/userprog/pagedir.c
@@ -35,15 +35,7 @@ pagedir_destroy (uint32_t *pd)
ASSERT (pd != base_page_dir);
for (pde = pd; pde < pd + pd_no (PHYS_BASE); pde++)
Index: src/userprog/process.c
diff -u src/userprog/process.c~ src/userprog/process.c
---- src/userprog/process.c~ 2006-04-25 11:35:58.000000000 -0700
-+++ src/userprog/process.c 2006-05-16 13:44:56.000000000 -0700
+--- src/userprog/process.c~
++++ src/userprog/process.c
@@ -14,12 +14,26 @@
#include "threads/flags.h"
#include "threads/init.h"
}
Index: src/userprog/syscall.c
diff -u src/userprog/syscall.c~ src/userprog/syscall.c
---- src/userprog/syscall.c~ 2005-06-18 20:21:21.000000000 -0700
-+++ src/userprog/syscall.c 2006-05-16 14:17:02.000000000 -0700
+--- src/userprog/syscall.c~
++++ src/userprog/syscall.c
@@ -1,20 +1,598 @@
#include "userprog/syscall.h"
#include <stdio.h>
+}
Index: src/userprog/syscall.h
diff -u src/userprog/syscall.h~ src/userprog/syscall.h
---- src/userprog/syscall.h~ 2004-09-05 22:38:45.000000000 -0700
-+++ src/userprog/syscall.h 2006-05-16 13:44:56.000000000 -0700
+--- src/userprog/syscall.h~
++++ src/userprog/syscall.h
@@ -2,5 +2,6 @@
#define USERPROG_SYSCALL_H
#endif /* userprog/syscall.h */
Index: src/vm/frame.c
diff -u src/vm/frame.c~ src/vm/frame.c
---- src/vm/frame.c~ 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/frame.c 2006-05-16 13:44:56.000000000 -0700
+--- src/vm/frame.c~
++++ src/vm/frame.c
@@ -0,0 +1,162 @@
+#include "vm/frame.h"
+#include <stdio.h>
+}
Index: src/vm/frame.h
diff -u src/vm/frame.h~ src/vm/frame.h
---- src/vm/frame.h~ 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/frame.h 2006-05-16 13:44:56.000000000 -0700
+--- src/vm/frame.h~
++++ src/vm/frame.h
@@ -0,0 +1,23 @@
+#ifndef VM_FRAME_H
+#define VM_FRAME_H
+#endif /* vm/frame.h */
Index: src/vm/page.c
diff -u src/vm/page.c~ src/vm/page.c
---- src/vm/page.c~ 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/page.c 2006-05-16 13:44:56.000000000 -0700
+--- src/vm/page.c~
++++ src/vm/page.c
@@ -0,0 +1,293 @@
+#include "vm/page.h"
+#include <stdio.h>
+}
Index: src/vm/page.h
diff -u src/vm/page.h~ src/vm/page.h
---- src/vm/page.h~ 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/page.h 2006-05-16 13:44:56.000000000 -0700
+--- src/vm/page.h~
++++ src/vm/page.h
@@ -0,0 +1,50 @@
+#ifndef VM_PAGE_H
+#define VM_PAGE_H
+#endif /* vm/page.h */
Index: src/vm/swap.c
diff -u src/vm/swap.c~ src/vm/swap.c
---- src/vm/swap.c~ 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/swap.c 2006-05-16 13:44:56.000000000 -0700
+--- src/vm/swap.c~
++++ src/vm/swap.c
@@ -0,0 +1,85 @@
+#include "vm/swap.h"
+#include <bitmap.h>
+}
Index: src/vm/swap.h
diff -u src/vm/swap.h~ src/vm/swap.h
---- src/vm/swap.h~ 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/swap.h 2006-05-16 13:44:56.000000000 -0700
+--- src/vm/swap.h~
++++ src/vm/swap.h
@@ -0,0 +1,11 @@
+#ifndef VM_SWAP_H
+#define VM_SWAP_H 1
Index: src/Makefile.build
diff -u src/Makefile.build~ src/Makefile.build
---- src/Makefile.build 2005-06-18 20:20:47.000000000 -0700
-+++ src/Makefile.build 2006-05-18 21:26:51.000000000 -0700
+--- src/Makefile.build~
++++ src/Makefile.build
@@ -53,7 +53,9 @@ userprog_SRC += userprog/gdt.c # GDT in
userprog_SRC += userprog/tss.c # TSS management.
OBJECTS = $(patsubst %.c,%.o,$(patsubst %.S,%.o,$(SOURCES)))
Index: src/devices/timer.c
diff -u src/devices/timer.c~ src/devices/timer.c
---- src/devices/timer.c 2005-07-06 13:45:36.000000000 -0700
-+++ src/devices/timer.c 2006-05-18 21:26:51.000000000 -0700
+--- src/devices/timer.c~
++++ src/devices/timer.c
@@ -23,6 +23,9 @@ static volatile int64_t ticks;
Initialized by timer_calibrate(). */
static unsigned loops_per_tick;
/* Returns true if LOOPS iterations waits for more than one timer
Index: src/filesys/Make.vars
diff -u src/filesys/Make.vars~ src/filesys/Make.vars
---- src/filesys/Make.vars 2005-06-20 13:24:21.000000000 -0700
-+++ src/filesys/Make.vars 2006-05-18 21:26:51.000000000 -0700
+--- src/filesys/Make.vars~
++++ src/filesys/Make.vars
@@ -6,7 +6,7 @@ TEST_SUBDIRS = tests/userprog tests/file
GRADING_FILE = $(SRCDIR)/tests/filesys/Grading.no-vm
+GRADING_FILE = $(SRCDIR)/tests/filesys/Grading.with-vm
Index: src/filesys/cache.c
diff -u src/filesys/cache.c~ src/filesys/cache.c
---- src/filesys/cache.c 1969-12-31 16:00:00.000000000 -0800
-+++ src/filesys/cache.c 2006-05-18 21:26:51.000000000 -0700
+--- src/filesys/cache.c~
++++ src/filesys/cache.c
@@ -0,0 +1,473 @@
+#include "filesys/cache.h"
+#include <debug.h>
+}
Index: src/filesys/cache.h
diff -u src/filesys/cache.h~ src/filesys/cache.h
---- src/filesys/cache.h 1969-12-31 16:00:00.000000000 -0800
-+++ src/filesys/cache.h 2006-05-18 21:26:51.000000000 -0700
+--- src/filesys/cache.h~
++++ src/filesys/cache.h
@@ -0,0 +1,23 @@
+#ifndef FILESYS_CACHE_H
+#define FILESYS_CACHE_H
+#endif /* filesys/cache.h */
Index: src/filesys/directory.c
diff -u src/filesys/directory.c~ src/filesys/directory.c
---- src/filesys/directory.c 2006-05-18 22:26:21.000000000 -0700
-+++ src/filesys/directory.c 2006-05-18 22:18:19.000000000 -0700
+--- src/filesys/directory.c~
++++ src/filesys/directory.c
@@ -20,21 +20,13 @@ struct dir_entry
bool in_use; /* In use or free? */
};
}
Index: src/filesys/directory.h
diff -u src/filesys/directory.h~ src/filesys/directory.h
---- src/filesys/directory.h 2006-05-18 22:26:02.000000000 -0700
-+++ src/filesys/directory.h 2006-05-18 22:05:40.000000000 -0700
+--- src/filesys/directory.h~
++++ src/filesys/directory.h
@@ -12,6 +11,5 @@
struct inode;
struct dir *dir_open_root (void);
Index: src/filesys/file.c
diff -u src/filesys/file.c~ src/filesys/file.c
---- src/filesys/file.c 2005-06-18 20:20:48.000000000 -0700
-+++ src/filesys/file.c 2006-05-18 22:14:15.000000000 -0700
+--- src/filesys/file.c~
++++ src/filesys/file.c
@@ -18,7 +18,7 @@ struct file *
file_open (struct inode *inode)
{
file->pos = 0;
Index: src/filesys/filesys.c
diff -u src/filesys/filesys.c~ src/filesys/filesys.c
---- src/filesys/filesys.c 2006-05-18 22:26:21.000000000 -0700
-+++ src/filesys/filesys.c 2006-05-18 22:35:43.000000000 -0700
+--- src/filesys/filesys.c~
++++ src/filesys/filesys.c
@@ -2,11 +2,13 @@
#include <debug.h>
#include <stdio.h>
}
Index: src/filesys/filesys.h
diff -u src/filesys/filesys.h~ src/filesys/filesys.h
---- src/filesys/filesys.h 2005-06-18 20:20:48.000000000 -0700
-+++ src/filesys/filesys.h 2006-05-18 21:26:51.000000000 -0700
+--- src/filesys/filesys.h~
++++ src/filesys/filesys.h
@@ -3,6 +3,7 @@
#include <stdbool.h>
Index: src/filesys/free-map.c
diff -u src/filesys/free-map.c~ src/filesys/free-map.c
---- src/filesys/free-map.c 2005-06-18 20:20:48.000000000 -0700
-+++ src/filesys/free-map.c 2006-05-18 21:26:51.000000000 -0700
+--- src/filesys/free-map.c~
++++ src/filesys/free-map.c
@@ -3,15 +3,18 @@
#include <debug.h>
#include "filesys/file.h"
}
Index: src/filesys/free-map.h
diff -u src/filesys/free-map.h~ src/filesys/free-map.h
---- src/filesys/free-map.h 2005-06-18 20:20:48.000000000 -0700
-+++ src/filesys/free-map.h 2006-05-18 21:26:51.000000000 -0700
+--- src/filesys/free-map.h~
++++ src/filesys/free-map.h
@@ -11,7 +11,7 @@ void free_map_create (void);
void free_map_open (void);
void free_map_close (void);
#endif /* filesys/free-map.h */
Index: src/filesys/fsutil.c
diff -u src/filesys/fsutil.c~ src/filesys/fsutil.c
---- src/filesys/fsutil.c 2006-04-22 22:25:13.000000000 -0700
-+++ src/filesys/fsutil.c 2006-05-18 21:26:51.000000000 -0700
+--- src/filesys/fsutil.c~
++++ src/filesys/fsutil.c
@@ -30,7 +30,7 @@ fsutil_cat (char **argv)
char *buffer;
size = file_length (src);
Index: src/filesys/inode.c
diff -u src/filesys/inode.c~ src/filesys/inode.c
---- src/filesys/inode.c 2006-04-08 12:09:33.000000000 -0700
-+++ src/filesys/inode.c 2006-05-18 22:18:19.000000000 -0700
+--- src/filesys/inode.c~
++++ src/filesys/inode.c
@@ -1,23 +1,38 @@
#include "filesys/inode.h"
+#include <bitmap.h>
}
Index: src/filesys/inode.h
diff -u src/filesys/inode.h~ src/filesys/inode.h
---- src/filesys/inode.h 2005-06-18 20:20:48.000000000 -0700
-+++ src/filesys/inode.h 2006-05-18 21:46:41.000000000 -0700
+--- src/filesys/inode.h~
++++ src/filesys/inode.h
@@ -7,10 +7,18 @@
struct bitmap;
#endif /* filesys/inode.h */
Index: src/threads/init.c
diff -u src/threads/init.c~ src/threads/init.c
---- src/threads/init.c 2006-05-18 17:35:54.000000000 -0700
-+++ src/threads/init.c 2006-05-18 21:26:51.000000000 -0700
+--- src/threads/init.c~
++++ src/threads/init.c
@@ -33,6 +33,8 @@
#include "filesys/filesys.h"
#include "filesys/fsutil.h"
/* Run actions specified on kernel command line. */
Index: src/threads/interrupt.c
diff -u src/threads/interrupt.c~ src/threads/interrupt.c
---- src/threads/interrupt.c 2006-04-22 22:25:21.000000000 -0700
-+++ src/threads/interrupt.c 2006-05-18 21:26:51.000000000 -0700
+--- src/threads/interrupt.c~
++++ src/threads/interrupt.c
@@ -354,6 +354,8 @@ intr_handler (struct intr_frame *frame)
in_external_intr = true;
yield_on_return = false;
If there is no handler, invoke the unexpected interrupt
Index: src/threads/thread.c
diff -u src/threads/thread.c~ src/threads/thread.c
---- src/threads/thread.c 2006-04-22 22:25:22.000000000 -0700
-+++ src/threads/thread.c 2006-05-18 21:26:51.000000000 -0700
+--- src/threads/thread.c~
++++ src/threads/thread.c
@@ -13,6 +13,7 @@
#include "threads/vaddr.h"
#ifdef USERPROG
Index: src/threads/thread.h
diff -u src/threads/thread.h~ src/threads/thread.h
---- src/threads/thread.h 2006-04-22 22:25:22.000000000 -0700
-+++ src/threads/thread.h 2006-05-18 21:26:51.000000000 -0700
+--- src/threads/thread.h~
++++ src/threads/thread.h
@@ -2,8 +2,10 @@
#define THREADS_THREAD_H
Index: src/userprog/exception.c
diff -u src/userprog/exception.c~ src/userprog/exception.c
---- src/userprog/exception.c 2006-01-29 13:32:56.000000000 -0800
-+++ src/userprog/exception.c 2006-05-18 21:26:51.000000000 -0700
+--- src/userprog/exception.c~
++++ src/userprog/exception.c
@@ -4,6 +4,7 @@
#include "userprog/gdt.h"
#include "threads/interrupt.h"
not_present ? "not present" : "rights violation",
Index: src/userprog/pagedir.c
diff -u src/userprog/pagedir.c~ src/userprog/pagedir.c
---- src/userprog/pagedir.c 2006-04-22 22:25:23.000000000 -0700
-+++ src/userprog/pagedir.c 2006-05-18 21:26:51.000000000 -0700
+--- src/userprog/pagedir.c~
++++ src/userprog/pagedir.c
@@ -35,15 +35,7 @@ pagedir_destroy (uint32_t *pd)
ASSERT (pd != base_page_dir);
for (pde = pd; pde < pd + pd_no (PHYS_BASE); pde++)
Index: src/userprog/process.c
diff -u src/userprog/process.c~ src/userprog/process.c
---- src/userprog/process.c 2006-05-18 17:35:55.000000000 -0700
-+++ src/userprog/process.c 2006-05-18 22:12:19.000000000 -0700
+--- src/userprog/process.c~
++++ src/userprog/process.c
@@ -14,12 +14,27 @@
#include "threads/flags.h"
#include "threads/init.h"
}
Index: src/userprog/syscall.c
diff -u src/userprog/syscall.c~ src/userprog/syscall.c
---- src/userprog/syscall.c 2005-06-18 20:21:21.000000000 -0700
-+++ src/userprog/syscall.c 2006-05-18 21:26:51.000000000 -0700
+--- src/userprog/syscall.c~
++++ src/userprog/syscall.c
@@ -1,20 +1,671 @@
#include "userprog/syscall.h"
#include <stdio.h>
+}
Index: src/userprog/syscall.h
diff -u src/userprog/syscall.h~ src/userprog/syscall.h
---- src/userprog/syscall.h 2004-09-05 22:38:45.000000000 -0700
-+++ src/userprog/syscall.h 2006-05-18 21:26:51.000000000 -0700
+--- src/userprog/syscall.h~
++++ src/userprog/syscall.h
@@ -2,5 +2,6 @@
#define USERPROG_SYSCALL_H
#endif /* userprog/syscall.h */
Index: src/vm/frame.c
diff -u src/vm/frame.c~ src/vm/frame.c
---- src/vm/frame.c 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/frame.c 2006-05-18 21:26:51.000000000 -0700
+--- src/vm/frame.c~
++++ src/vm/frame.c
@@ -0,0 +1,161 @@
+#include "vm/frame.h"
+#include <stdio.h>
+}
Index: src/vm/frame.h
diff -u src/vm/frame.h~ src/vm/frame.h
---- src/vm/frame.h 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/frame.h 2006-05-18 21:26:51.000000000 -0700
+--- src/vm/frame.h~
++++ src/vm/frame.h
@@ -0,0 +1,23 @@
+#ifndef VM_FRAME_H
+#define VM_FRAME_H
+#endif /* vm/frame.h */
Index: src/vm/page.c
diff -u src/vm/page.c~ src/vm/page.c
---- src/vm/page.c 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/page.c 2006-05-18 21:26:51.000000000 -0700
+--- src/vm/page.c~
++++ src/vm/page.c
@@ -0,0 +1,294 @@
+#include "vm/page.h"
+#include <stdio.h>
+}
Index: src/vm/page.h
diff -u src/vm/page.h~ src/vm/page.h
---- src/vm/page.h 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/page.h 2006-05-18 21:26:51.000000000 -0700
+--- src/vm/page.h~
++++ src/vm/page.h
@@ -0,0 +1,50 @@
+#ifndef VM_PAGE_H
+#define VM_PAGE_H
+#endif /* vm/page.h */
Index: src/vm/swap.c
diff -u src/vm/swap.c~ src/vm/swap.c
---- src/vm/swap.c 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/swap.c 2006-05-18 21:26:51.000000000 -0700
+--- src/vm/swap.c~
++++ src/vm/swap.c
@@ -0,0 +1,85 @@
+#include "vm/swap.h"
+#include <bitmap.h>
+}
Index: src/vm/swap.h
diff -u src/vm/swap.h~ src/vm/swap.h
---- src/vm/swap.h 1969-12-31 16:00:00.000000000 -0800
-+++ src/vm/swap.h 2006-05-18 21:26:51.000000000 -0700
+--- src/vm/swap.h~
++++ src/vm/swap.h
@@ -0,0 +1,11 @@
+#ifndef VM_SWAP_H
+#define VM_SWAP_H 1