Index: arch/ia32/include/context.h
===================================================================
--- arch/ia32/include/context.h	(revision 714675b9ef13c3a84a1dc1696cf30c328bef6e62)
+++ arch/ia32/include/context.h	(revision 7b43e11b10f9120349905ed22d2c36958a5bf766)
@@ -42,4 +42,8 @@
 #define SP_DELTA	(8+STACK_ITEM_SIZE)
 
+/*
+ * Only save registers that must be preserved across
+ * function calls.
+ */
 struct context {
 	__u32 sp;
Index: arch/ia64/include/context.h
===================================================================
--- arch/ia64/include/context.h	(revision 714675b9ef13c3a84a1dc1696cf30c328bef6e62)
+++ arch/ia64/include/context.h	(revision 7b43e11b10f9120349905ed22d2c36958a5bf766)
@@ -51,4 +51,8 @@
 	(c)->sp = ((__address) stack) + (size) - SP_DELTA;
 
+/*
+ * Only save registers that must be preserved across
+ * function calls.
+ */
 struct context {
 
Index: include/mm/frame.h
===================================================================
--- include/mm/frame.h	(revision 714675b9ef13c3a84a1dc1696cf30c328bef6e62)
+++ include/mm/frame.h	(revision 7b43e11b10f9120349905ed22d2c36958a5bf766)
@@ -32,7 +32,29 @@
 #include <arch/types.h>
 #include <typedefs.h>
+#include <list.h>
+#include <synch/spinlock.h>
 
 #define FRAME_KA	1	/* skip frames conflicting with user address space */
 #define FRAME_PANIC	2	/* panic on failure */
+
+struct frame_zone {
+	link_t fz_link;		/**< link to previous and next frame_zone */
+
+	spinlock_t lock;	/**< this lock protexts everything below */
+	link_t free_head;	/**< list of free frames */
+	link_t busy_head;	/**< list of busy frames */
+	count_t free_count;	/**< frames in free list */
+	count_t busy_count;	/**< frames in busy list */
+	frame_t *frames;	/**< array of frames in this zone */
+	int flags;
+};
+
+struct frame {
+	count_t refcount;	/**< when > 0, the frame is in busy list, otherwise the frame is in free list */
+	link_t link;		/**< link either to frame_zone free or busy list */
+};
+
+extern spinlock_t frame_zone_head_lock;		/**< this lock protects frame_zone_head list */
+extern link_t frame_zone_head;			/**< list of all frame_zone's in the system */
 
 extern count_t frames;
Index: include/typedefs.h
===================================================================
--- include/typedefs.h	(revision 714675b9ef13c3a84a1dc1696cf30c328bef6e62)
+++ include/typedefs.h	(revision 7b43e11b10f9120349905ed22d2c36958a5bf766)
@@ -64,4 +64,7 @@
 typedef struct chunk chunk_t;
 
+typedef struct frame_zone frame_zone_t;
+typedef struct frame frame_t;
+
 typedef enum vm_type vm_type_t;
 typedef struct vm_area vm_area_t;
