Switch to using the common m68k stuff for a couple of things:
. cache control functions <m68k/cacheops.h> . sigreturn code <m68k/m68k/sigreturn.s> Also a few of other things found while scouting around for vm_offset_t changes.
This commit is contained in:
parent
573f3aee5c
commit
445aefc354
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: db_memrw.c,v 1.2 1997/10/09 08:40:04 jtc Exp $ */
|
/* $NetBSD: db_memrw.c,v 1.3 1998/08/16 15:33:48 scw Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
||||||
@ -64,6 +64,7 @@
|
|||||||
#include <machine/pte.h>
|
#include <machine/pte.h>
|
||||||
#include <machine/db_machdep.h>
|
#include <machine/db_machdep.h>
|
||||||
#include <machine/cpu.h>
|
#include <machine/cpu.h>
|
||||||
|
#include <m68k/cacheops.h>
|
||||||
|
|
||||||
#include <ddb/db_access.h>
|
#include <ddb/db_access.h>
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: locore.s,v 1.37 1998/07/04 22:18:32 jonathan Exp $ */
|
/* $NetBSD: locore.s,v 1.38 1998/08/16 15:33:48 scw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988 University of Utah.
|
* Copyright (c) 1988 University of Utah.
|
||||||
@ -401,8 +401,10 @@ Lenab1:
|
|||||||
jbsr _m68881_restore | restore it (does not kill a1)
|
jbsr _m68881_restore | restore it (does not kill a1)
|
||||||
addql #4,sp
|
addql #4,sp
|
||||||
Lenab2:
|
Lenab2:
|
||||||
|
#if (defined(M68020)||defined(M68040)||defined(M68060))
|
||||||
/* flush TLB and turn on caches */
|
/* flush TLB and turn on caches */
|
||||||
jbsr _TBIA | invalidate TLB
|
jbsr _TBIA | invalidate TLB
|
||||||
|
#endif
|
||||||
cmpl #MMU_68040,_mmutype | 68040?
|
cmpl #MMU_68040,_mmutype | 68040?
|
||||||
jeq Lnocache0 | yes, cache already on
|
jeq Lnocache0 | yes, cache already on
|
||||||
movl #CACHE_ON,d0
|
movl #CACHE_ON,d0
|
||||||
@ -769,42 +771,12 @@ _trace:
|
|||||||
moveq #T_TRACE,d0
|
moveq #T_TRACE,d0
|
||||||
jra fault
|
jra fault
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The sigreturn() syscall comes here. It requires special handling
|
* Use common m68k sigreturn routine.
|
||||||
* because we must open a hole in the stack to fill in the (possibly much
|
|
||||||
* larger) original stack frame.
|
|
||||||
*/
|
*/
|
||||||
sigreturn:
|
#include <m68k/m68k/sigreturn.s>
|
||||||
lea sp@(-84),sp | leave enough space for largest frame
|
|
||||||
movl sp@(84),sp@ | move up current 8 byte frame
|
|
||||||
movl sp@(88),sp@(4)
|
|
||||||
movl #84,sp@- | default: adjust by 84 bytes
|
|
||||||
moveml #0xFFFF,sp@- | save user registers
|
|
||||||
movl usp,a0 | save the user SP
|
|
||||||
movl a0,sp@(FR_SP) | in the savearea
|
|
||||||
movl #SYS_sigreturn,sp@- | push syscall number
|
|
||||||
jbsr _syscall | handle it
|
|
||||||
addql #4,sp | pop syscall#
|
|
||||||
movl sp@(FR_SP),a0 | grab and restore
|
|
||||||
movl a0,usp | user SP
|
|
||||||
lea sp@(FR_HW),a1 | pointer to HW frame
|
|
||||||
movw sp@(FR_ADJ),d0 | do we need to adjust the stack?
|
|
||||||
jeq Lsigr1 | no, just continue
|
|
||||||
moveq #92,d1 | total size
|
|
||||||
subw d0,d1 | - hole size = frame size
|
|
||||||
lea a1@(92),a0 | destination
|
|
||||||
addw d1,a1 | source
|
|
||||||
lsrw #1,d1 | convert to word count
|
|
||||||
subqw #1,d1 | minus 1 for dbf
|
|
||||||
Lsigrlp:
|
|
||||||
movw a1@-,a0@- | copy a word
|
|
||||||
dbf d1,Lsigrlp | continue
|
|
||||||
movl a0,a1 | new HW frame base
|
|
||||||
Lsigr1:
|
|
||||||
movl a1,sp@(FR_SP) | new SP value
|
|
||||||
moveml sp@+,#0x7FFF | restore user registers
|
|
||||||
movl sp@,sp | and our SP
|
|
||||||
jra rei | all done
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interrupt handlers.
|
* Interrupt handlers.
|
||||||
@ -1261,197 +1233,6 @@ Lsldone:
|
|||||||
rts
|
rts
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* Invalidate entire TLB.
|
|
||||||
*/
|
|
||||||
ENTRY(TBIA)
|
|
||||||
__TBIA:
|
|
||||||
#if defined(M68040)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040?
|
|
||||||
jne Lmotommu3 | no, skip
|
|
||||||
.word 0xf518 | yes, pflusha
|
|
||||||
rts
|
|
||||||
Lmotommu3:
|
|
||||||
#endif
|
|
||||||
tstl _mmutype | what mmu?
|
|
||||||
jpl Lmc68851a | 68851 implies no d-cache
|
|
||||||
movl #DC_CLEAR,d0
|
|
||||||
movc d0,cacr | invalidate on-chip d-cache
|
|
||||||
Lmc68851a:
|
|
||||||
rts
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Invalidate any TLB entry for given VA (TB Invalidate Single)
|
|
||||||
*/
|
|
||||||
ENTRY(TBIS)
|
|
||||||
#ifdef DEBUG
|
|
||||||
tstl fulltflush | being conservative?
|
|
||||||
jne __TBIA | yes, flush entire TLB
|
|
||||||
#endif
|
|
||||||
#if defined(M68040)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040?
|
|
||||||
jne Lmotommu4 | no, skip
|
|
||||||
movl sp@(4),a0
|
|
||||||
movc dfc,d1
|
|
||||||
moveq #1,d0 | user space
|
|
||||||
movc d0,dfc
|
|
||||||
.word 0xf508 | pflush a0@
|
|
||||||
moveq #5,d0 | super space
|
|
||||||
movc d0,dfc
|
|
||||||
.word 0xf508 | pflush a0@
|
|
||||||
movc d1,dfc
|
|
||||||
rts
|
|
||||||
Lmotommu4:
|
|
||||||
#endif
|
|
||||||
tstl _mmutype | is 68851?
|
|
||||||
jpl Lmc68851b |
|
|
||||||
movl sp@(4),a0 | get addr to flush
|
|
||||||
pflush #0,#0,a0@ | flush address from both sides
|
|
||||||
movl #DC_CLEAR,d0
|
|
||||||
movc d0,cacr | invalidate on-chip data cache
|
|
||||||
rts
|
|
||||||
Lmc68851b:
|
|
||||||
pflushs #0,#0,a0@ | flush address from both sides
|
|
||||||
rts
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Invalidate supervisor side of TLB
|
|
||||||
*/
|
|
||||||
ENTRY(TBIAS)
|
|
||||||
#ifdef DEBUG
|
|
||||||
tstl fulltflush | being conservative?
|
|
||||||
jne __TBIA | yes, flush everything
|
|
||||||
#endif
|
|
||||||
#if defined(M68040)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040?
|
|
||||||
jne Lmotommu5 | no, skip
|
|
||||||
.word 0xf518 | yes, pflusha (for now) XXX
|
|
||||||
rts
|
|
||||||
Lmotommu5:
|
|
||||||
#endif
|
|
||||||
pflush #4,#4 | flush supervisor TLB entries
|
|
||||||
movl #DC_CLEAR,d0
|
|
||||||
movc d0,cacr | invalidate on-chip d-cache
|
|
||||||
rts
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Invalidate user side of TLB
|
|
||||||
*/
|
|
||||||
ENTRY(TBIAU)
|
|
||||||
#ifdef DEBUG
|
|
||||||
tstl fulltflush | being conservative?
|
|
||||||
jne __TBIA | yes, flush everything
|
|
||||||
#endif
|
|
||||||
#if defined(M68040)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040?
|
|
||||||
jne Lmotommu6 | no, skip
|
|
||||||
.word 0xf518 | yes, pflusha (for now) XXX
|
|
||||||
rts
|
|
||||||
Lmotommu6:
|
|
||||||
#endif
|
|
||||||
pflush #0,#4 | flush user TLB entries
|
|
||||||
movl #DC_CLEAR,d0
|
|
||||||
movc d0,cacr | invalidate on-chip d-cache
|
|
||||||
rts
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Invalidate instruction cache
|
|
||||||
*/
|
|
||||||
ENTRY(ICIA)
|
|
||||||
#if defined(M68040)
|
|
||||||
ENTRY(ICPA)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040
|
|
||||||
jne Lmotommu7 | no, skip
|
|
||||||
.word 0xf498 | cinva ic
|
|
||||||
rts
|
|
||||||
Lmotommu7:
|
|
||||||
#endif
|
|
||||||
movl #IC_CLEAR,d0
|
|
||||||
movc d0,cacr | invalidate i-cache
|
|
||||||
rts
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Invalidate data cache.
|
|
||||||
* NOTE: we do not flush 68030 on-chip cache as there are no aliasing
|
|
||||||
* problems with DC_WA. The only cases we have to worry about are context
|
|
||||||
* switch and TLB changes, both of which are handled "in-line" in resume
|
|
||||||
* and TBI*.
|
|
||||||
*/
|
|
||||||
ENTRY(DCIA)
|
|
||||||
__DCIA:
|
|
||||||
#if defined(M68040)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040
|
|
||||||
jne Lmotommu8 | no, skip
|
|
||||||
/* XXX implement */
|
|
||||||
rts
|
|
||||||
Lmotommu8:
|
|
||||||
#endif
|
|
||||||
rts
|
|
||||||
|
|
||||||
ENTRY(DCIS)
|
|
||||||
__DCIS:
|
|
||||||
#if defined(M68040)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040
|
|
||||||
jne Lmotommu9 | no, skip
|
|
||||||
/* XXX implement */
|
|
||||||
rts
|
|
||||||
Lmotommu9:
|
|
||||||
#endif
|
|
||||||
rts
|
|
||||||
|
|
||||||
ENTRY(DCIU)
|
|
||||||
__DCIU:
|
|
||||||
#if defined(M68040)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040
|
|
||||||
jne LmotommuA | no, skip
|
|
||||||
/* XXX implement */
|
|
||||||
rts
|
|
||||||
LmotommuA:
|
|
||||||
#endif
|
|
||||||
rts
|
|
||||||
|
|
||||||
#if defined(M68040)
|
|
||||||
ENTRY(ICPL)
|
|
||||||
movl sp@(4),a0 | address
|
|
||||||
.word 0xf488 | cinvl ic,a0@
|
|
||||||
rts
|
|
||||||
ENTRY(ICPP)
|
|
||||||
movl sp@(4),a0 | address
|
|
||||||
.word 0xf490 | cinvp ic,a0@
|
|
||||||
rts
|
|
||||||
ENTRY(DCPL)
|
|
||||||
movl sp@(4),a0 | address
|
|
||||||
.word 0xf448 | cinvl dc,a0@
|
|
||||||
rts
|
|
||||||
ENTRY(DCPP)
|
|
||||||
movl sp@(4),a0 | address
|
|
||||||
.word 0xf450 | cinvp dc,a0@
|
|
||||||
rts
|
|
||||||
ENTRY(DCPA)
|
|
||||||
.word 0xf458 | cinva dc
|
|
||||||
rts
|
|
||||||
ENTRY(DCFL)
|
|
||||||
movl sp@(4),a0 | address
|
|
||||||
.word 0xf468 | cpushl dc,a0@
|
|
||||||
rts
|
|
||||||
ENTRY(DCFP)
|
|
||||||
movl sp@(4),a0 | address
|
|
||||||
.word 0xf470 | cpushp dc,a0@
|
|
||||||
rts
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ENTRY(PCIA)
|
|
||||||
#if defined(M68040)
|
|
||||||
ENTRY(DCFA)
|
|
||||||
cmpl #MMU_68040,_mmutype | 68040
|
|
||||||
jne LmotommuB | no, skip
|
|
||||||
.word 0xf478 | cpusha dc
|
|
||||||
rts
|
|
||||||
LmotommuB:
|
|
||||||
#endif
|
|
||||||
movl #DC_CLEAR,d0
|
|
||||||
movc d0,cacr | invalidate on-chip d-cache
|
|
||||||
rts
|
|
||||||
|
|
||||||
ENTRY(ecacheon)
|
ENTRY(ecacheon)
|
||||||
rts
|
rts
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: pmap.c,v 1.20 1998/06/25 23:58:06 thorpej Exp $ */
|
/* $NetBSD: pmap.c,v 1.21 1998/08/16 15:33:48 scw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1991, 1993
|
* Copyright (c) 1991, 1993
|
||||||
@ -115,6 +115,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <machine/cpu.h>
|
#include <machine/cpu.h>
|
||||||
|
#include <m68k/cacheops.h>
|
||||||
|
|
||||||
#ifdef PMAPSTATS
|
#ifdef PMAPSTATS
|
||||||
struct {
|
struct {
|
||||||
@ -196,8 +197,6 @@ int pmapvacflush = 0;
|
|||||||
int dowriteback = 1; /* 68040: enable writeback caching */
|
int dowriteback = 1; /* 68040: enable writeback caching */
|
||||||
int dokwriteback = 1; /* 68040: enable writeback caching of kernel AS */
|
int dokwriteback = 1; /* 68040: enable writeback caching of kernel AS */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern vm_offset_t pager_sva, pager_eva;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1708,7 +1707,9 @@ void pmap_update()
|
|||||||
if (pmapdebug & PDB_FOLLOW)
|
if (pmapdebug & PDB_FOLLOW)
|
||||||
printf("pmap_update()\n");
|
printf("pmap_update()\n");
|
||||||
#endif
|
#endif
|
||||||
|
#if (defined(M68020)||defined(M68040)||defined(M68060))
|
||||||
TBIA();
|
TBIA();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: sys_machdep.c,v 1.10 1998/06/25 23:58:07 thorpej Exp $ */
|
/* $NetBSD: sys_machdep.c,v 1.11 1998/08/16 15:33:48 scw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1982, 1986, 1993
|
* Copyright (c) 1982, 1986, 1993
|
||||||
@ -54,6 +54,9 @@
|
|||||||
|
|
||||||
#include <sys/syscallargs.h>
|
#include <sys/syscallargs.h>
|
||||||
|
|
||||||
|
#include <machine/cpu.h>
|
||||||
|
#include <m68k/cacheops.h>
|
||||||
|
|
||||||
#ifdef TRACE
|
#ifdef TRACE
|
||||||
int nvualarm;
|
int nvualarm;
|
||||||
|
|
||||||
@ -112,8 +115,6 @@ vdoualarm(arg)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <machine/cpu.h>
|
|
||||||
|
|
||||||
/* XXX should be in an include file somewhere */
|
/* XXX should be in an include file somewhere */
|
||||||
#define CC_PURGE 1
|
#define CC_PURGE 1
|
||||||
#define CC_FLUSH 2
|
#define CC_FLUSH 2
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: trap.c,v 1.21 1998/07/04 22:18:33 jonathan Exp $ */
|
/* $NetBSD: trap.c,v 1.22 1998/08/16 15:33:48 scw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988 University of Utah.
|
* Copyright (c) 1988 University of Utah.
|
||||||
@ -83,6 +83,8 @@
|
|||||||
extern struct emul emul_sunos;
|
extern struct emul emul_sunos;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <m68k/cacheops.h>
|
||||||
|
|
||||||
int astpending;
|
int astpending;
|
||||||
|
|
||||||
char *trap_type[] = {
|
char *trap_type[] = {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: vm_machdep.c,v 1.13 1998/07/28 18:34:55 thorpej Exp $ */
|
/* $NetBSD: vm_machdep.c,v 1.14 1998/08/16 15:33:48 scw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988 University of Utah.
|
* Copyright (c) 1988 University of Utah.
|
||||||
@ -65,6 +65,7 @@
|
|||||||
#include <machine/cpu.h>
|
#include <machine/cpu.h>
|
||||||
#include <machine/pte.h>
|
#include <machine/pte.h>
|
||||||
#include <machine/reg.h>
|
#include <machine/reg.h>
|
||||||
|
#include <m68k/cacheops.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finish a fork operation, with process p2 nearly set up.
|
* Finish a fork operation, with process p2 nearly set up.
|
||||||
|
Loading…
Reference in New Issue
Block a user