#include "opt_m68k_arch.h"
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: cacheops.c,v 1.16 2026/03/29 20:56:00 thorpej Exp $");
#include <sys/types.h>
#include <machine/cpu.h>
#include <m68k/cacheops.h>
#ifdef M68K_CACHEOPS_MACHDEP
#include <machine/cacheops_machdep.h>
#endif
#if defined(M68K_MMU_MOTOROLA) || defined(M68K_MMU_HP)
void
_TBIA(void)
{
#ifdef M68K_CACHEOPS_MACHDEP_TBIA
if (TBIA_md())
return;
#endif
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
TBIA_20();
break;
#endif
#ifdef M68030
case CPU_68030:
TBIA_30();
break;
#endif
#ifdef M68040
case CPU_68040:
TBIA_40();
break;
#endif
#ifdef M68060
case CPU_68060:
TBIA_60();
break;
#endif
}
}
void
_TBIAS(void)
{
#ifdef M68K_CACHEOPS_MACHDEP_TBIAS
if (TBIAS_md())
return;
#endif
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
TBIAS_20();
break;
#endif
#ifdef M68030
case CPU_68030:
TBIAS_30();
break;
#endif
#ifdef M68040
case CPU_68040:
TBIAS_40();
break;
#endif
#ifdef M68060
case CPU_68060:
TBIAS_60();
break;
#endif
}
}
void
_TBIAU(void)
{
#ifdef M68K_CACHEOPS_MACHDEP_TBIAU
if (TBIAU_md())
return;
#endif
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
TBIAU_20();
break;
#endif
#ifdef M68030
case CPU_68030:
TBIAU_30();
break;
#endif
#ifdef M68040
case CPU_68040:
TBIAU_40();
break;
#endif
#ifdef M68060
case CPU_68060:
TBIAU_60();
break;
#endif
}
}
void
_TBIS(vaddr_t va)
{
#ifdef M68K_CACHEOPS_MACHDEP_TBIS
if (TBIS_md(va))
return;
#endif
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
TBIS_20(va);
break;
#endif
#ifdef M68030
case CPU_68030:
TBIS_30(va);
break;
#endif
#ifdef M68040
case CPU_68040:
TBIS_40(va);
break;
#endif
#ifdef M68060
case CPU_68060:
TBIS_60(va);
break;
#endif
}
}
#endif
void
_ICIA(void)
{
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
ICIA_20();
break;
#endif
#ifdef M68030
case CPU_68030:
ICIA_30();
break;
#endif
#ifdef M68040
case CPU_68040:
ICIA_40();
break;
#endif
#ifdef M68060
case CPU_68060:
ICIA_60();
break;
#endif
}
}
void
_ICPA(void)
{
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
ICPA_20();
break;
#endif
#ifdef M68030
case CPU_68030:
ICPA_30();
break;
#endif
#ifdef M68040
case CPU_68040:
ICPA_40();
break;
#endif
#ifdef M68060
case CPU_68060:
ICPA_60();
break;
#endif
}
}
void
_DCIA(void)
{
#ifdef M68K_CACHEOPS_MACHDEP_DCIA
if (DCIA_md())
return;
#endif
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
DCIA_20();
break;
#endif
#ifdef M68030
case CPU_68030:
DCIA_30();
break;
#endif
#ifdef M68040
case CPU_68040:
DCIA_40();
break;
#endif
#ifdef M68060
case CPU_68060:
DCIA_60();
break;
#endif
}
}
void
_DCIS(void)
{
#ifdef M68K_CACHEOPS_MACHDEP_DCIS
if (DCIS_md())
return;
#endif
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
DCIS_20();
break;
#endif
#ifdef M68030
case CPU_68030:
DCIS_30();
break;
#endif
#ifdef M68040
case CPU_68040:
DCIS_40();
break;
#endif
#ifdef M68060
case CPU_68060:
DCIS_60();
break;
#endif
}
}
void
_DCIU(void)
{
#ifdef M68K_CACHEOPS_MACHDEP_DCIU
if (DCIU_md())
return;
#endif
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
DCIU_20();
break;
#endif
#ifdef M68030
case CPU_68030:
DCIU_30();
break;
#endif
#ifdef M68040
case CPU_68040:
DCIU_40();
break;
#endif
#ifdef M68060
case CPU_68060:
DCIU_60();
break;
#endif
}
}
void
_PCIA(void)
{
#ifdef M68K_CACHEOPS_MACHDEP_PCIA
if (PCIA_md())
return;
#endif
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
PCIA_20();
break;
#endif
#ifdef M68030
case CPU_68030:
PCIA_30();
break;
#endif
#ifdef M68040
case CPU_68040:
PCIA_40();
break;
#endif
#ifdef M68060
case CPU_68060:
PCIA_60();
break;
#endif
}
}
void
_DCIAS(paddr_t pa)
{
switch (cputype) {
default:
#ifdef M68020
case CPU_68020:
DCIAS_20(pa);
break;
#endif
#ifdef M68030
case CPU_68030:
DCIAS_30(pa);
break;
#endif
#ifdef M68040
case CPU_68040:
DCIAS_40(pa);
break;
#endif
#ifdef M68060
case CPU_68060:
DCIAS_60(pa);
break;
#endif
}
}