hp300 part of the fix for pr 6152
This commit is contained in:
parent
fde637530e
commit
75469a775e
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: locore.s,v 1.91 1998/11/11 06:41:25 thorpej Exp $ */
|
/* $NetBSD: locore.s,v 1.92 1999/02/25 22:34:41 is Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1994, 1995 Gordon W. Ross
|
* Copyright (c) 1994, 1995 Gordon W. Ross
|
||||||
@ -845,11 +845,12 @@ Ltrap1:
|
|||||||
* command in d0, addr in a1, length in d1
|
* command in d0, addr in a1, length in d1
|
||||||
*/
|
*/
|
||||||
ENTRY_NOPROFILE(trap12)
|
ENTRY_NOPROFILE(trap12)
|
||||||
|
movl _curproc,sp@- | push current proc pointer
|
||||||
movl d1,sp@- | push length
|
movl d1,sp@- | push length
|
||||||
movl a1,sp@- | push addr
|
movl a1,sp@- | push addr
|
||||||
movl d0,sp@- | push command
|
movl d0,sp@- | push command
|
||||||
jbsr _C_LABEL(cachectl) | do it
|
jbsr _C_LABEL(cachectl1) | do it
|
||||||
lea sp@(12),sp | pop args
|
lea sp@(16),sp | pop args
|
||||||
jra _ASM_LABEL(rei) | all done
|
jra _ASM_LABEL(rei) | all done
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: pmap.c,v 1.64 1999/02/02 21:06:55 thorpej Exp $ */
|
/* $NetBSD: pmap.c,v 1.65 1999/02/25 22:34:41 is Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1991, 1993
|
* Copyright (c) 1991, 1993
|
||||||
@ -318,6 +318,21 @@ pmap_virtual_space(vstartp, vendp)
|
|||||||
*vendp = virtual_end;
|
*vendp = virtual_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Routine: pmap_procwr
|
||||||
|
*
|
||||||
|
* Function:
|
||||||
|
* Synchronize caches corresponding to [addr, addr+len) in p.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
pmap_procwr(p, va, len)
|
||||||
|
struct proc *p;
|
||||||
|
vaddr_t va;
|
||||||
|
u_long len;
|
||||||
|
{
|
||||||
|
(void)cachectl1(0x80000004, va, len, p);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pmap_init: [ INTERFACE ]
|
* pmap_init: [ INTERFACE ]
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: sys_machdep.c,v 1.23 1999/01/19 18:18:41 thorpej Exp $ */
|
/* $NetBSD: sys_machdep.c,v 1.24 1999/02/25 22:34:41 is Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1982, 1986, 1993
|
* Copyright (c) 1982, 1986, 1993
|
||||||
@ -134,10 +134,11 @@ vdoualarm(arg)
|
|||||||
*/
|
*/
|
||||||
/*ARGSUSED1*/
|
/*ARGSUSED1*/
|
||||||
int
|
int
|
||||||
cachectl(req, addr, len)
|
cachectl1(req, addr, len, p)
|
||||||
int req;
|
int req;
|
||||||
caddr_t addr;
|
vaddr_t addr;
|
||||||
int len;
|
int len;
|
||||||
|
struct proc *p;
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
@ -146,7 +147,7 @@ cachectl(req, addr, len)
|
|||||||
int inc = 0;
|
int inc = 0;
|
||||||
int doall = 0;
|
int doall = 0;
|
||||||
paddr_t pa = 0;
|
paddr_t pa = 0;
|
||||||
caddr_t end = 0;
|
vaddr_t end = 0;
|
||||||
#ifdef COMPAT_HPUX
|
#ifdef COMPAT_HPUX
|
||||||
extern struct emul emul_hpux;
|
extern struct emul emul_hpux;
|
||||||
|
|
||||||
@ -162,10 +163,10 @@ cachectl(req, addr, len)
|
|||||||
if (!doall) {
|
if (!doall) {
|
||||||
end = addr + len;
|
end = addr + len;
|
||||||
if (len <= 1024) {
|
if (len <= 1024) {
|
||||||
addr = (caddr_t)((int)addr & ~0xF);
|
addr = addr & ~0xF;
|
||||||
inc = 16;
|
inc = 16;
|
||||||
} else {
|
} else {
|
||||||
addr = (caddr_t)((int)addr & ~PGOFSET);
|
addr = addr & ~PGOFSET;
|
||||||
inc = NBPG;
|
inc = NBPG;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -177,8 +178,8 @@ cachectl(req, addr, len)
|
|||||||
*/
|
*/
|
||||||
if (!doall &&
|
if (!doall &&
|
||||||
(pa == 0 || ((int)addr & PGOFSET) == 0)) {
|
(pa == 0 || ((int)addr & PGOFSET) == 0)) {
|
||||||
pa = pmap_extract(curproc->p_vmspace->vm_map.pmap,
|
pa = pmap_extract(p->p_vmspace->vm_map.pmap,
|
||||||
(vaddr_t)addr);
|
addr);
|
||||||
if (pa == 0)
|
if (pa == 0)
|
||||||
doall = 1;
|
doall = 1;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: pmap.h,v 1.24 1999/02/02 21:06:55 thorpej Exp $ */
|
/* $NetBSD: pmap.h,v 1.25 1999/02/25 22:34:41 is Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1987 Carnegie-Mellon University
|
* Copyright (c) 1987 Carnegie-Mellon University
|
||||||
@ -151,6 +151,8 @@ extern pt_entry_t *Sysmap;
|
|||||||
extern char *vmmap; /* map for mem, dumps, etc. */
|
extern char *vmmap; /* map for mem, dumps, etc. */
|
||||||
|
|
||||||
vaddr_t pmap_map __P((vaddr_t, paddr_t, paddr_t, int));
|
vaddr_t pmap_map __P((vaddr_t, paddr_t, paddr_t, int));
|
||||||
|
void pmap_procwr __P((struct proc *, vaddr_t, u_long));
|
||||||
|
#define PMAP_NEED_PROCWR
|
||||||
|
|
||||||
#ifdef M68K_MMU_HP
|
#ifdef M68K_MMU_HP
|
||||||
void pmap_prefer __P((vaddr_t, vaddr_t *));
|
void pmap_prefer __P((vaddr_t, vaddr_t *));
|
||||||
|
Loading…
Reference in New Issue
Block a user