diff options
author | Niklas Hallqvist <niklas@cvs.openbsd.org> | 2004-06-13 21:49:30 +0000 |
---|---|---|
committer | Niklas Hallqvist <niklas@cvs.openbsd.org> | 2004-06-13 21:49:30 +0000 |
commit | 2dd254afa61a7c0cc5ae920b463d3d4266852804 (patch) | |
tree | 7adbebef3be24ba910fd83ee1ba09e1577ae21a8 /sys/arch/i386/include/gdt.h | |
parent | 4d62e331dcde739b4067d712dd602c0927ce11b3 (diff) |
debranch SMP, have fun
Diffstat (limited to 'sys/arch/i386/include/gdt.h')
-rw-r--r-- | sys/arch/i386/include/gdt.h | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/sys/arch/i386/include/gdt.h b/sys/arch/i386/include/gdt.h index 1568b573a86..ba741e2c637 100644 --- a/sys/arch/i386/include/gdt.h +++ b/sys/arch/i386/include/gdt.h @@ -1,8 +1,8 @@ -/* $OpenBSD: gdt.h,v 1.9 2002/03/14 01:26:33 millert Exp $ */ -/* $NetBSD: gdt.h,v 1.3 1996/02/27 22:32:11 jtc Exp $ */ +/* $OpenBSD: gdt.h,v 1.10 2004/06/13 21:49:16 niklas Exp $ */ +/* $NetBSD: gdt.h,v 1.7.10.6 2002/08/19 01:22:36 sommerfeld Exp $ */ /*- - * Copyright (c) 1996 The NetBSD Foundation, Inc. + * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation @@ -37,10 +37,35 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#ifdef _KERNEL +#ifndef _LOCORE + +struct cpu_info; +struct pcb; +struct pmap; +union descriptor; + +void gdt_alloc_cpu(struct cpu_info *); +int gdt_get_slot(void); void gdt_init(void); -void tss_alloc(struct pcb *); -void tss_free(struct pcb *); +void gdt_init_cpu(struct cpu_info *); +void gdt_reload_cpu(/* XXX struct cpu_info * */ void); void ldt_alloc(struct pmap *, union descriptor *, size_t); void ldt_free(struct pmap *); +int tss_alloc(struct pcb *); +void tss_free(int); +void setgdt(int, void *, size_t, int, int, int, int); #endif + +/* + * The initial GDT size (as a descriptor count), and the maximum + * GDT size possible. + * + * These are actually not arbitrary. To start with, they have to be + * multiples of 512 and at least 512, in order to work with the + * allocation strategy set forth by gdt_init and gdt_grow. Then, the + * max cannot exceed 65536 since the selector field of a descriptor is + * just 16 bits, and used as free list link. + */ + +#define MINGDTSIZ 512 +#define MAXGDTSIZ 8192 |