summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/hppa/hppa/mainbus.c9
-rw-r--r--sys/arch/hppa/hppa/pmap.c36
-rw-r--r--sys/arch/hppa/hppa/vm_machdep.c4
-rw-r--r--sys/arch/hppa/include/pmap.h6
4 files changed, 26 insertions, 29 deletions
diff --git a/sys/arch/hppa/hppa/mainbus.c b/sys/arch/hppa/hppa/mainbus.c
index b15508c8a58..833e5caeb82 100644
--- a/sys/arch/hppa/hppa/mainbus.c
+++ b/sys/arch/hppa/hppa/mainbus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mainbus.c,v 1.25 2002/02/16 02:41:15 mickey Exp $ */
+/* $OpenBSD: mainbus.c,v 1.26 2002/02/21 06:12:30 mickey Exp $ */
/*
* Copyright (c) 1998-2001 Michael Shalayeff
@@ -116,10 +116,9 @@ mbus_add_mapping(bus_addr_t bpa, bus_size_t size, int cachable,
u_int64_t pa;
if (len > pdc_btlb.max_size << PGSHIFT)
len = pdc_btlb.max_size << PGSHIFT;
- if (btlb_insert(kernel_pmap->pmap_space, spa,
- spa, &len,
- kernel_pmap->pmap_pid |
- pmap_prot(kernel_pmap,
+ if (btlb_insert(HPPA_SID_KERNEL, spa, spa, &len,
+ pmap_sid2pid(HPPA_SID_KERNEL) |
+ pmap_prot(pmap_kernel,
VM_PROT_ALL)) < 0)
return -1;
pa = spa + len - 1;
diff --git a/sys/arch/hppa/hppa/pmap.c b/sys/arch/hppa/hppa/pmap.c
index 2f6225cd158..d2d6775d0fb 100644
--- a/sys/arch/hppa/hppa/pmap.c
+++ b/sys/arch/hppa/hppa/pmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.59 2002/02/12 16:28:53 mickey Exp $ */
+/* $OpenBSD: pmap.c,v 1.60 2002/02/21 06:12:30 mickey Exp $ */
/*
* Copyright (c) 1998-2001 Michael Shalayeff
@@ -198,7 +198,7 @@ struct simplelock pmap_lock; /* XXX this is all broken */
struct simplelock sid_pid_lock; /* pids */
u_int pages_per_vm_page;
-u_int pid_counter;
+u_int sid_counter;
TAILQ_HEAD(, pv_page) pv_page_freelist;
u_int pv_nfree;
@@ -642,7 +642,6 @@ pmap_bootstrap(vstart, vend)
kernel_pmap->pmap_refcnt = 1;
kernel_pmap->pmap_space = HPPA_SID_KERNEL;
- kernel_pmap->pmap_pid = HPPA_PID_KERNEL;
/*
* Allocate various tables and structures.
@@ -690,9 +689,9 @@ pmap_bootstrap(vstart, vend)
(sizeof(struct pv_entry) * maxproc / 8 +
sizeof(struct vm_page)));
/* XXX PCXS needs two separate inserts in separate btlbs */
- if (btlb_insert(kernel_pmap->pmap_space, 0, 0, vstart,
- kernel_pmap->pmap_pid |
- pmap_prot(kernel_pmap, VM_PROT_ALL)) < 0)
+ if (btlb_insert(HPPA_SID_KERNEL, 0, 0, vstart,
+ pmap_sid2pid(HPPA_SID_KERNEL) |
+ pmap_prot(kernel_pmap, VM_PROT_ALL)) < 0)
panic("pmap_bootstrap: cannot block map kernel");
virtual_avail = *vstart;
@@ -797,7 +796,7 @@ pmap_init()
pmapdebug = opmapdebug /* | PDB_VA | PDB_PV */;
#endif
TAILQ_INIT(&pmap_freelist);
- pid_counter = HPPA_PID_KERNEL + 2;
+ sid_counter = HPPA_SID_KERNEL + 1;
pmap_initialized = TRUE;
@@ -821,34 +820,33 @@ void
pmap_pinit(pmap)
pmap_t pmap;
{
- register u_int pid;
+ pa_space_t sid;
int s;
- DPRINTF(PDB_FOLLOW, ("pmap_pinit(%p), pid=%x\n", pmap, pmap->pmap_pid));
+ DPRINTF(PDB_FOLLOW, ("pmap_pinit(%p)\n", pmap));
- if (!(pid = pmap->pmap_pid)) {
+ if (!(sid = pmap->pmap_space)) {
/*
* Allocate space and protection IDs for the pmap.
* If all are allocated, there is nothing we can do.
*/
s = splimp();
- if (pid_counter < HPPA_MAX_PID) {
- pid = pid_counter;
- pid_counter += 2;
+ if (sid_counter < HPPA_SID_MAX) {
+ sid = sid_counter;
+ sid_counter++;
} else
- pid = 0;
+ sid = 0;
splx(s);
- if (pid == 0)
- panic ("no more pmap ids\n");
+ if (sid == 0)
+ panic("no more space ids\n");
simple_lock_init(&pmap->pmap_lock);
}
s = splimp();
- pmap->pmap_pid = pid;
- pmap->pmap_space = (pid >> 1) - 1;
+ pmap->pmap_space = sid;
pmap->pmap_refcnt = 1;
pmap->pmap_stats.resident_count = 0;
pmap->pmap_stats.wired_count = 0;
@@ -967,7 +965,7 @@ pmap_enter(pmap, va, pa, prot, flags)
panic("pmap_enter: pmap_find_pv failed");
tlbpage = tlbbtop(pa);
- tlbprot = TLB_UNCACHEABLE | pmap_prot(pmap, prot) | pmap->pmap_pid;
+ tlbprot = TLB_UNCACHEABLE | pmap_prot(pmap, prot) | pmap_sid2pid(space);
if (!(ppv = pmap_find_va(space, va))) {
/*
diff --git a/sys/arch/hppa/hppa/vm_machdep.c b/sys/arch/hppa/hppa/vm_machdep.c
index 368170a2b21..90293feb08e 100644
--- a/sys/arch/hppa/hppa/vm_machdep.c
+++ b/sys/arch/hppa/hppa/vm_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vm_machdep.c,v 1.32 2002/02/11 21:16:32 mickey Exp $ */
+/* $OpenBSD: vm_machdep.c,v 1.33 2002/02/21 06:12:30 mickey Exp $ */
/*
* Copyright (c) 1999-2002 Michael Shalayeff
@@ -217,7 +217,7 @@ cpu_fork(p1, p2, stack, stacksize, func, arg)
p2->p_vmspace->vm_map.pmap->pmap_space;
tf->tf_iisq_head = tf->tf_iisq_tail =
p2->p_vmspace->vm_map.pmap->pmap_space;
- tf->tf_pidr1 = tf->tf_pidr2 = p2->p_vmspace->vm_map.pmap->pmap_pid;
+ tf->tf_pidr1 = tf->tf_pidr2 = pmap_sid2pid(tf->tf_sr0);
/*
* theoretically these could be inherited from the father,
diff --git a/sys/arch/hppa/include/pmap.h b/sys/arch/hppa/include/pmap.h
index 935473902fa..b9924dbda60 100644
--- a/sys/arch/hppa/include/pmap.h
+++ b/sys/arch/hppa/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.16 2002/01/10 01:23:08 mickey Exp $ */
+/* $OpenBSD: pmap.h,v 1.17 2002/02/21 06:12:31 mickey Exp $ */
/*
* Copyright (c) 1998,1999 Michael Shalayeff
@@ -88,7 +88,6 @@ struct pmap {
struct simplelock pmap_lock; /* lock on map */
int pmap_refcnt; /* reference count */
pa_space_t pmap_space; /* space for this pmap */
- u_int pmap_pid; /* protection id for pmap */
struct pmap_statistics pmap_stats; /* statistics */
} *pmap_t;
extern pmap_t kernel_pmap; /* The kernel's map */
@@ -140,7 +139,7 @@ struct pv_page {
struct pv_entry pvp_pv[NPVPPG];
};
-#define HPPA_MAX_PID 0xfffa
+#define HPPA_SID_MAX 0x7fff
#define HPPA_SID_KERNEL 0
#define HPPA_PID_KERNEL 2
@@ -169,6 +168,7 @@ extern void gateway_page __P((void));
#define pmap_kernel_va(VA) \
(((VA) >= VM_MIN_KERNEL_ADDRESS) && ((VA) <= VM_MAX_KERNEL_ADDRESS))
+#define pmap_sid2pid(s) (((s) + 1) << 1)
#define pmap_kernel() (kernel_pmap)
#define pmap_resident_count(pmap) ((pmap)->pmap_stats.resident_count)
#define pmap_reference(pmap) \