Return to pmap.h CVS log | Up to [local] / sys / arch / m88k / include |
File: [local] / sys / arch / m88k / include / pmap.h (download)
Revision 1.1.1.1 (vendor branch), Tue Mar 4 16:07:09 2008 UTC (16 years, 4 months ago) by nbrk
Import of OpenBSD 4.2 release kernel tree with initial code to support Jornada 720/728, StrongARM 1110-based handheld PC. At this point kernel roots on NFS and boots into vfs_mountroot() and traps. What is supported: - glass console, Jornada framebuffer (jfb) works in 16bpp direct color mode (needs some palette tweaks for non black/white/blue colors, i think) - saic, SA11x0 interrupt controller (needs cleanup) - sacom, SA11x0 UART (supported only as boot console for now) - SA11x0 GPIO controller fully supported (but can't handle multiple interrupt handlers on one gpio pin) - sassp, SSP port on SA11x0 that attaches spibus - Jornada microcontroller (jmcu) to control kbd, battery, etc throught the SPI bus (wskbd attaches on jmcu, but not tested) - tod functions seem work - initial code for SA-1111 (chip companion) : this is TODO Next important steps, i think: - gpio and intc on sa1111 - pcmcia support for sa11x0 (and sa1111 help logic) - REAL root on nfs when we have PCMCIA support (we may use any of supported pccard NICs) - root on wd0! (using already supported PCMCIA-ATA) |
/* $OpenBSD: pmap.h,v 1.9 2005/12/11 21:45:28 miod Exp $ */ /* * Mach Operating System * Copyright (c) 1991 Carnegie Mellon University * Copyright (c) 1991 OMRON Corporation * All Rights Reserved. * * Permission to use, copy, modify and distribute this software and its * documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. * */ #ifndef _M88K_PMAP_H_ #define _M88K_PMAP_H_ #include <machine/mmu.h> /* * PMAP structure */ struct pmap { sdt_entry_t *pm_stab; /* virtual pointer to sdt */ apr_t pm_apr; int pm_count; /* reference count */ /* cpus using of this pmap; NCPU must be <= 32 */ u_int32_t pm_cpus; #ifdef MULTIPROCESSOR __cpu_simple_lock_t pm_lock; #endif struct pmap_statistics pm_stats; /* pmap statistics */ }; /* The PV (Physical to virtual) List. * * For each vm_page_t, pmap keeps a list of all currently valid virtual * mappings of that page. An entry is a pv_entry_t; the list is the * pv_head_table. This is used by things like pmap_remove, when we must * find and remove all mappings for a particular physical page. */ /* XXX - struct pv_entry moved to vmparam.h because of include ordering issues */ typedef struct pmap *pmap_t; typedef struct pv_entry *pv_entry_t; #ifdef _KERNEL extern pmap_t kernel_pmap; extern struct pmap kernel_pmap_store; extern caddr_t vmmap; #define pmap_kernel() (&kernel_pmap_store) #define pmap_resident_count(pmap) ((pmap)->pm_stats.resident_count) #define pmap_wired_count(pmap) ((pmap)->pm_stats.wired_count) #define pmap_phys_address(frame) ((paddr_t)(ptoa(frame))) #define pmap_copy(dp,sp,d,l,s) do { /* nothing */ } while (0) #define pmap_update(pmap) do { /* nothing (yet) */ } while (0) #define pmap_clear_modify(pg) pmap_unsetbit(pg, PG_M) #define pmap_clear_reference(pg) pmap_unsetbit(pg, PG_U) void pmap_bootstrap(vaddr_t); void pmap_bootstrap_cpu(cpuid_t); void pmap_cache_ctrl(pmap_t, vaddr_t, vaddr_t, u_int); void pmap_proc_iflush(struct proc *, vaddr_t, vsize_t); #define pmap_unuse_final(p) /* nothing */ boolean_t pmap_unsetbit(struct vm_page *, int); #endif /* _KERNEL */ #endif /* _M88K_PMAP_H_ */