summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_hibernate.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/subr_hibernate.c')
-rw-r--r--sys/kern/subr_hibernate.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/sys/kern/subr_hibernate.c b/sys/kern/subr_hibernate.c
index d4802ad0bb8..5a74da52cef 100644
--- a/sys/kern/subr_hibernate.c
+++ b/sys/kern/subr_hibernate.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_hibernate.c,v 1.47 2013/01/17 00:11:24 mlarkin Exp $ */
+/* $OpenBSD: subr_hibernate.c,v 1.48 2013/01/17 01:28:01 mlarkin Exp $ */
/*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@@ -1163,7 +1163,7 @@ hibernate_unpack_image(union hibernate_info *hiber_info)
struct hibernate_disk_chunk *chunks;
union hibernate_info local_hiber_info;
paddr_t image_cur = global_pig_start;
- int i, *fchunks;
+ short i, *fchunks;
char *pva = (char *)hiber_info->piglet_va;
struct hibernate_zlib_state *hibernate_state;
@@ -1171,7 +1171,7 @@ hibernate_unpack_image(union hibernate_info *hiber_info)
/* Mask off based on arch-specific piglet page size */
pva = (char *)((paddr_t)pva & (PIGLET_PAGE_MASK));
- fchunks = (int *)(pva + (4 * PAGE_SIZE));
+ fchunks = (short *)(pva + (4 * PAGE_SIZE));
chunks = (struct hibernate_disk_chunk *)(pva + HIBERNATE_CHUNK_SIZE);
@@ -1570,8 +1570,7 @@ hibernate_read_chunks(union hibernate_info *hib_info, paddr_t pig_start,
daddr_t blkctr;
size_t processed, compressed_size, read_size;
int overlap, found, nchunks, nochunks = 0, nfchunks = 0, npchunks = 0;
- int *ochunks, *pchunks, *fchunks;
- int i, j;
+ short *ochunks, *pchunks, *fchunks, i, j;
vaddr_t tempva = (vaddr_t)NULL, hibernate_fchunk_area = (vaddr_t)NULL;
global_pig_start = pig_start;
@@ -1593,16 +1592,16 @@ hibernate_read_chunks(union hibernate_info *hib_info, paddr_t pig_start,
return (1);
/* Final output chunk ordering VA */
- fchunks = (int *)hibernate_fchunk_area;
+ fchunks = (short *)hibernate_fchunk_area;
/* Piglet chunk ordering VA */
- pchunks = (int *)(hibernate_fchunk_area + (PAGE_SIZE));
+ pchunks = (short *)(hibernate_fchunk_area + (8*PAGE_SIZE));
/* Final chunk ordering VA */
- ochunks = (int *)(hibernate_fchunk_area + (2*PAGE_SIZE));
+ ochunks = (short *)(hibernate_fchunk_area + (16*PAGE_SIZE));
/* Map the chunk ordering region */
- for(i=0; i<3 ; i++) {
+ for(i=0; i<24 ; i++) {
pmap_kenter_pa(hibernate_fchunk_area + (i*PAGE_SIZE),
piglet_base + ((4+i)*PAGE_SIZE), VM_PROT_ALL);
pmap_update(pmap_kernel());