diff options
Diffstat (limited to 'sys/amd64/include')
-rw-r--r-- | sys/amd64/include/cpufunc.h | 53 | ||||
-rw-r--r-- | sys/amd64/include/frame.h | 4 | ||||
-rw-r--r-- | sys/amd64/include/pmap.h | 28 | ||||
-rw-r--r-- | sys/amd64/include/vmparam.h | 32 |
4 files changed, 83 insertions, 34 deletions
diff --git a/sys/amd64/include/cpufunc.h b/sys/amd64/include/cpufunc.h index adaa70c..2c2b307 100644 --- a/sys/amd64/include/cpufunc.h +++ b/sys/amd64/include/cpufunc.h @@ -2,7 +2,7 @@ * Functions to provide access to special i386 instructions. * XXX - bezillions more are defined in locore.s but are not declared anywhere. * - * $Id: cpufunc.h,v 1.4 1993/11/07 17:42:47 wollman Exp $ + * $Id: cpufunc.h,v 1.5 1993/11/25 01:31:07 wollman Exp $ */ #ifndef _MACHINE_CPUFUNC_H_ @@ -177,7 +177,34 @@ strlen(s1) return (len); } +struct quehead { + struct quehead *qh_link; + struct quehead *qh_rlink; +}; + +static inline void +insque(void *a, void *b) +{ + register struct quehead *element = a, *head = b; + element->qh_link = head->qh_link; + head->qh_link = (struct quehead *)element; + element->qh_rlink = (struct quehead *)head; + ((struct quehead *)(element->qh_link))->qh_rlink + = (struct quehead *)element; +} + +static inline void +remque(void *a) +{ + register struct quehead *element = a; + ((struct quehead *)(element->qh_link))->qh_rlink = element->qh_rlink; + ((struct quehead *)(element->qh_rlink))->qh_link = element->qh_link; + element->qh_rlink = 0; +} + #else /* not __GNUC__ */ +extern void insque __P((void *, void *)); +extern void remque __P((void *)); int bdb __P((void)); void disable_intr __P((void)); @@ -187,17 +214,19 @@ void outb __P((u_int port, u_int data)); /* XXX - incompat */ #endif /* __GNUC__ */ -#define really_u_int int /* XXX */ -#define really_void int /* XXX */ - void load_cr0 __P((u_int cr0)); -really_u_int rcr0 __P((void)); - -#ifdef notyet -really_void setidt __P((int idx, /*XXX*/caddr_t func, int typ, int dpl)); -#endif - -#undef really_u_int -#undef really_void +u_int rcr0 __P((void)); +void load_cr3(u_long); +u_long rcr3(void); +u_long rcr2(void); + +void setidt __P((int, void (*)(), int, int)); +extern u_long kvtop(void *); +extern void tlbflush(void); +extern void outw(int /*u_short*/, int /*u_short*/); /* XXX inline!*/ +extern void outsb(int /*u_short*/, caddr_t, size_t); +extern void outsw(int /*u_short*/, caddr_t, size_t); +extern void insw(int /*u_short*/, caddr_t, size_t); +extern void fillw(int /*u_short*/, caddr_t, size_t); #endif /* _MACHINE_CPUFUNC_H_ */ diff --git a/sys/amd64/include/frame.h b/sys/amd64/include/frame.h index a7455b6..c61d179 100644 --- a/sys/amd64/include/frame.h +++ b/sys/amd64/include/frame.h @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)frame.h 5.2 (Berkeley) 1/18/91 - * $Id: frame.h,v 1.4 1993/11/17 23:25:03 wollman Exp $ + * $Id: frame.h,v 1.5 1993/12/03 05:10:00 alm Exp $ */ #ifndef _MACHINE_FRAME_H_ @@ -72,6 +72,8 @@ struct trapframe { int tf_ss; }; +extern int kdb_trap(int, int, struct trapframe *); + /* Interrupt stack frame */ struct intrframe { diff --git a/sys/amd64/include/pmap.h b/sys/amd64/include/pmap.h index 9feb23c..f71c276 100644 --- a/sys/amd64/include/pmap.h +++ b/sys/amd64/include/pmap.h @@ -42,7 +42,7 @@ * * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 - * $Id: pmap.h,v 1.5 1993/11/07 17:43:02 wollman Exp $ + * $Id: pmap.h,v 1.6 1993/11/13 02:25:16 davidg Exp $ */ #ifndef _PMAP_MACHINE_ @@ -65,8 +65,8 @@ unsigned int pd_pfnum:20; /* physical page frame number of pte's*/ }; -#define PD_MASK 0xffc00000 /* page directory address bits */ -#define PT_MASK 0x003ff000 /* page table address bits */ +#define PD_MASK 0xffc00000UL /* page directory address bits */ +#define PT_MASK 0x003ff000UL /* page table address bits */ #define PD_SHIFT 22 /* page directory address shift */ #define PG_SHIFT 12 /* page table address shift */ @@ -94,7 +94,7 @@ unsigned int #define PG_N 0x00000800 /* Non-cacheable */ #define PG_M 0x00000040 #define PG_U 0x00000020 -#define PG_FRAME 0xfffff000 +#define PG_FRAME 0xfffff000UL #define PG_NOACC 0 #define PG_KR 0x00000000 @@ -199,7 +199,7 @@ extern pmap_t kernel_pmap; #define PMAP_ACTIVATE(pmapp, pcbp) \ if ((pmapp) != NULL /*&& (pmapp)->pm_pdchanged */) { \ (pcbp)->pcb_cr3 = \ - pmap_extract(kernel_pmap, (pmapp)->pm_pdir); \ + pmap_extract(kernel_pmap, (vm_offset_t)(pmapp)->pm_pdir); \ if ((pmapp) == &curproc->p_vmspace->vm_pmap) \ load_cr3((pcbp)->pcb_cr3); \ (pmapp)->pm_pdchanged = FALSE; \ @@ -232,6 +232,24 @@ pv_entry_t pv_table; /* array of entries, one per page */ #define pmap_resident_count(pmap) ((pmap)->pm_stats.resident_count) +extern pmap_t pmap_create(vm_size_t); +extern void pmap_pinit(struct pmap *); +extern void pmap_destroy(pmap_t); +extern void pmap_release(struct pmap *); +extern void pmap_reference(pmap_t); +extern void pmap_remove(struct pmap *, vm_offset_t, vm_offset_t); +extern void pmap_protect(struct pmap *, vm_offset_t, vm_offset_t, vm_prot_t); +extern void pmap_enter(pmap_t, vm_offset_t, vm_offset_t, vm_prot_t, boolean_t); +extern void pmap_change_wiring(pmap_t, vm_offset_t, boolean_t); +extern struct pte *pmap_pte(pmap_t, vm_offset_t); +extern vm_offset_t pmap_extract(pmap_t, vm_offset_t); +extern void pmap_copy(pmap_t, pmap_t, vm_offset_t, vm_size_t, vm_offset_t); +extern void pmap_collect(pmap_t); +struct pcb; extern void pmap_activate(pmap_t, struct pcb *); +extern pmap_t pmap_kernel(void); +extern void pmap_pageable(pmap_t, vm_offset_t, vm_offset_t, boolean_t); + + #endif /* KERNEL */ #endif /* _PMAP_MACHINE_ */ diff --git a/sys/amd64/include/vmparam.h b/sys/amd64/include/vmparam.h index a43615d..b7a3561 100644 --- a/sys/amd64/include/vmparam.h +++ b/sys/amd64/include/vmparam.h @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91 - * $Id: vmparam.h,v 1.7 1993/10/15 10:07:45 rgrimes Exp $ + * $Id: vmparam.h,v 1.8 1993/11/07 17:43:17 wollman Exp $ */ @@ -56,27 +56,27 @@ * Immediately after the user structure is the page table map, and then * kernal address space. */ -#define USRTEXT 0 -#define USRSTACK 0xFDBFE000 +#define USRTEXT 0UL +#define USRSTACK 0xFDBFE000UL #define BTOPUSRSTACK (0xFDC00-(UPAGES)) /* btop(USRSTACK) */ -#define LOWPAGES 0 +#define LOWPAGES 0UL #define HIGHPAGES UPAGES /* * Virtual memory related constants, all in bytes */ -#define MAXTSIZ (6*1024*1024) /* max text size */ +#define MAXTSIZ (6UL*1024*1024) /* max text size */ #ifndef DFLDSIZ -#define DFLDSIZ (16*1024*1024) /* initial data size limit */ +#define DFLDSIZ (16UL*1024*1024) /* initial data size limit */ #endif #ifndef MAXDSIZ -#define MAXDSIZ (32*1024*1024) /* max data size */ +#define MAXDSIZ (32UL*1024*1024) /* max data size */ #endif #ifndef DFLSSIZ -#define DFLSSIZ (512*1024) /* initial stack size limit */ +#define DFLSSIZ (512UL*1024) /* initial stack size limit */ #endif #ifndef MAXSSIZ -#define MAXSSIZ (8*1024*1024) /* max stack size */ +#define MAXSSIZ (8UL*1024*1024) /* max stack size */ #endif /* @@ -211,15 +211,15 @@ /* user/kernel map constants */ #define VM_MIN_ADDRESS ((vm_offset_t)0) -#define VM_MAXUSER_ADDRESS ((vm_offset_t)0xFDBFE000) -#define UPT_MIN_ADDRESS ((vm_offset_t)0xFDC00000) -#define UPT_MAX_ADDRESS ((vm_offset_t)0xFDFF7000) +#define VM_MAXUSER_ADDRESS ((vm_offset_t)0xFDBFE000UL) +#define UPT_MIN_ADDRESS ((vm_offset_t)0xFDC00000UL) +#define UPT_MAX_ADDRESS ((vm_offset_t)0xFDFF7000UL) #define VM_MAX_ADDRESS UPT_MAX_ADDRESS -#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)0xFDFF7000) +#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)0xFDFF7000UL) #define UPDT VM_MIN_KERNEL_ADDRESS -#define KPT_MIN_ADDRESS ((vm_offset_t)0xFDFF8000) -#define KPT_MAX_ADDRESS ((vm_offset_t)0xFDFFF000) -#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)0xFF7FF000) +#define KPT_MIN_ADDRESS ((vm_offset_t)0xFDFF8000UL) +#define KPT_MAX_ADDRESS ((vm_offset_t)0xFDFFF000UL) +#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)0xFF7FF000UL) /* virtual sizes (bytes) for various kernel submaps */ #define VM_MBUF_SIZE (NMBCLUSTERS*MCLBYTES) |