-
-
-void save_release(struct savearea *); /* Release a save area */
-struct savectl *save_dequeue(void); /* Find and dequeue one that is all empty */
-unsigned int save_queue(struct savearea *); /* Add a new savearea block to the free list */
-struct savearea *save_get(void); /* Obtains a savearea from the free list (returns virtual address) */
-struct savearea *save_get_phys(void); /* Obtains a savearea from the free list (returns physical address) */
-struct savearea *save_alloc(void); /* Obtains a savearea and allocates blocks if needed */
-struct savearea *save_cpv(struct savearea *); /* Converts a physical savearea address to virtual */
-void save_ret(struct savearea *); /* Returns a savearea to the free list */
-void save_ret_phys(struct savearea *); /* Returns a savearea to the free list */
-void save_adjust(void); /* Adjust size of the global free list */
-struct savearea_comm *save_trim_freet(void); /* Remove free pages from savearea pool */
+#define BackPocketSaveBloks 8 /* Number of pages of back pocket saveareas */
+
+void save_queue(ppnum_t); /* Add a new savearea block to the free list */
+addr64_t save_get_init(void); /* special savearea-get for cpu initialization (returns physical address) */
+struct savearea *save_get(void); /* Obtains a savearea from the free list (returns virtual address) */
+reg64_t save_get_phys_32(void); /* Obtains a savearea from the free list (returns phys addr in r3) */
+reg64_t save_get_phys_64(void); /* Obtains a savearea from the free list (returns phys addr in r3) */
+struct savearea *save_alloc(void); /* Obtains a savearea and allocates blocks if needed */
+struct savearea *save_cpv(addr64_t); /* Converts a physical savearea address to virtual */
+void save_ret(struct savearea *); /* Returns a savearea to the free list by virtual address */
+void save_ret_wMSR(struct savearea *, reg64_t); /* returns a savearea and restores an MSR */
+void save_ret_phys(reg64_t); /* Returns a savearea to the free list by physical address */
+void save_adjust(void); /* Adjust size of the global free list */
+struct savearea_comm *save_trim_free(void); /* Remove free pages from savearea pool */
+int save_recover(void); /* returns nonzero if we can recover enough from the free pool */
+void savearea_init(vm_offset_t addr); /* Boot-time savearea initialization */
+
+void save_fake_zone_info( /* report savearea usage statistics as fake zone info */
+ int *count,
+ vm_size_t *cur_size,
+ vm_size_t *max_size,
+ vm_size_t *elem_size,
+ vm_size_t *alloc_size,
+ int *collectable,
+ int *exhaustable);
+
+void save_snapshot(void);
+void save_snapshot_restore(void);
+void save_release(struct savearea *);