Index: kernel/arch/xen32/include/boot/boot.h
===================================================================
--- kernel/arch/xen32/include/boot/boot.h	(revision c049309818d0a3eca8aa6dfecad99aa1f06ee0d6)
+++ kernel/arch/xen32/include/boot/boot.h	(revision c06eb06bfa73f0453ea411eebf5fa21013e9f555)
@@ -37,20 +37,70 @@
 
 #define GUEST_CMDLINE	1024
+#define VIRT_CPUS		32
 #define START_INFO_SIZE	1104
+
 #define BOOT_OFFSET		0x0000
+#define XEN_VIRT_START	0xFC000000
+
+#define TEMP_STACK_SIZE 0x1000
 
 #ifndef __ASM__
 
+#define mp_map ((pfn_t *) XEN_VIRT_START)
+
 #include <arch/types.h>
+
+typedef uint32_t evtchn_t;
+
+typedef struct {
+	uint32_t version;
+	uint32_t pad0;
+	uint64_t tsc_timestamp;   /**< TSC at last update of time vals */
+	uint64_t system_time;     /**< Time, in nanosecs, since boot */
+	uint32_t tsc_to_system_mul;
+	int8_t tsc_shift;
+	int8_t pad1[3];
+} vcpu_time_info_t;
+
+typedef struct {
+	uint32_t cr2;
+	uint32_t pad[5];
+} arch_vcpu_info_t;
+
+typedef struct arch_shared_info {
+	pfn_t max_pfn;                  /**< max pfn that appears in table */
+	uint32_t pfn_to_mfn_frame_list_list;
+    uint32_t nmi_reason;
+} arch_shared_info_t;
+
+typedef struct {
+	uint8_t evtchn_upcall_pending;
+	uint8_t evtchn_upcall_mask;
+	evtchn_t evtchn_pending_sel;
+	arch_vcpu_info_t arch;
+	vcpu_time_info_t time;
+} vcpu_info_t;
+
+typedef struct {
+	vcpu_info_t vcpu_info[VIRT_CPUS];
+	evtchn_t evtchn_pending[32];
+	evtchn_t evtchn_mask[32];
+	
+	uint32_t wc_version;                  /**< Version counter */
+	uint32_t wc_sec;                      /**< Secs  00:00:00 UTC, Jan 1, 1970 */
+	uint32_t wc_nsec;                     /**< Nsecs 00:00:00 UTC, Jan 1, 1970 */
+	
+	arch_shared_info_t arch;
+} shared_info_t;
 
 typedef struct {
 	int8_t magic[32];           /**< "xen-<version>-<platform>" */
 	uint32_t frames;            /**< Available frames */
-	void *shared_info;          /**< Shared info structure (machine address) */
+	shared_info_t *shared_info; /**< Shared info structure (machine address) */
 	uint32_t flags;             /**< SIF_xxx flags */
 	pfn_t store_mfn;            /**< Shared page (machine page) */
-	uint32_t store_evtchn;      /**< Event channel for store communication */
+	evtchn_t store_evtchn;      /**< Event channel for store communication */
 	void *console_mfn;          /**< Console page (machine address) */
-	uint32_t console_evtchn;    /**< Event channel for console messages */
+	evtchn_t console_evtchn;    /**< Event channel for console messages */
 	pte_t *ptl0;                /**< Boot PTL0 (kernel address) */
 	uint32_t pt_frames;         /**< Number of bootstrap page table frames */
@@ -61,5 +111,13 @@
 } start_info_t;
 
+typedef struct {
+	pfn_t start;
+	pfn_t size;
+	pfn_t reserved;
+} memzone_t;
+
 extern start_info_t start_info;
+extern shared_info_t shared_info;
+extern memzone_t meminfo;
 
 #endif
