diff options
| author | 2012-07-13 10:30:37 +0000 | |
|---|---|---|
| committer | 2012-07-13 10:30:37 +0000 | |
| commit | c5489a6208b8df43eeb6802775d4043972cc3837 (patch) | |
| tree | 4cb0f963517f16365c550fcfb7c91d9677713b48 /sys/arch/amd64/include/hibernate_var.h | |
| parent | allow destination/prefixlen syntax for ipv6 routes. (diff) | |
| download | wireguard-openbsd-c5489a6208b8df43eeb6802775d4043972cc3837.tar.xz wireguard-openbsd-c5489a6208b8df43eeb6802775d4043972cc3837.zip | |
Starting point for amd64 hibernate ... some goo copied from i386.
This does not yet work for amd64 - getting the structure into the tree so
others can help.
Diffstat (limited to 'sys/arch/amd64/include/hibernate_var.h')
| -rw-r--r-- | sys/arch/amd64/include/hibernate_var.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/sys/arch/amd64/include/hibernate_var.h b/sys/arch/amd64/include/hibernate_var.h new file mode 100644 index 00000000000..c27bec0e6f2 --- /dev/null +++ b/sys/arch/amd64/include/hibernate_var.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2011 Mike Larkin <mlarkin@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* amd64 hibernate support definitions */ + +#define NBPD 4194304 + +#define PAGE_SHIFT_4M 22 +#define PAGE_MASK_4M (NBPD - 1) +#define PMAP_PA_MASK_4M ~((paddr_t)PAGE_MASK_4M) + +#define PIGLET_PAGE_MASK ~((paddr_t)PAGE_MASK_4M) + +#define HIBERNATE_PD_PAGE (PAGE_SIZE * 5) +#define HIBERNATE_PT_PAGE (PAGE_SIZE * 6) +#define HIBERNATE_STACK_PAGE (PAGE_SIZE * 8) +#define HIBERNATE_INFLATE_PAGE (PAGE_SIZE * 9) +#define HIBERNATE_COPY_PAGE (PAGE_SIZE * 10) +#define HIBERNATE_HIBALLOC_PAGE (PAGE_SIZE * 11) + +/* Use 4MB hibernation chunks */ +#define HIBERNATE_CHUNK_SIZE 0x400000 + +#define HIBERNATE_CHUNK_TABLE_SIZE 0x100000 + +#define HIBERNATE_STACK_OFFSET 0x0F00 + +#define atop_4m(x) ((x) >> PAGE_SHIFT_4M) +#define atop_4k(x) ((x) >> PAGE_SHIFT) +#define s4pde_4m(va) ((pt_entry_t *)HIBERNATE_PD_PAGE + atop_4m(va)) +#define s4pde_4k(va) ((pt_entry_t *)HIBERNATE_PD_PAGE + atop_4k(va)) +#define s4pte_4k(va) ((pt_entry_t *)HIBERNATE_PT_PAGE + atop_4k(va)) |
