12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #define __MIPS_NO_IMPLICIT_EHB
- #include <mips/cpu.h>
- #include <mips/cm3.h>
- #include <mips/m32c0.h>
- #include <mips/m64c0.h>
- #include <mips/hal.h>
- #if defined(__mips64) || (__mips == 64)
- #define mips_getentryhi() mips64_getentryhi()
- #define mips_setentryhi(v) mips64_setentryhi(v)
- #define mips_getentrylo0() mips64_getentrylo0()
- #define mips_setentrylo0(v) mips64_setentrylo0(v)
- #define mips_getentrylo1() mips64_getentrylo1()
- #define mips_setentrylo1(v) mips64_setentrylo1(v)
- #define mips_getpagemask() mips64_getpagemask()
- #define mips_setpagemask(v) mips64_setpagemask(v)
- #define mips_getindex() mips64_getindex()
- #define mips_setindex(v) mips64_setindex(v)
- #define mips_getcmgcrbase() mips64_get_c0(C0_CMGCRBASE)
- #else
- #define mips_getentryhi() mips32_getentryhi()
- #define mips_setentryhi(v) mips32_setentryhi(v)
- #define mips_getentrylo0() mips32_getentrylo0()
- #define mips_setentrylo0(v) mips32_setentrylo0(v)
- #define mips_getentrylo1() mips32_getentrylo1()
- #define mips_setentrylo1(v) mips32_setentrylo1(v)
- #define mips_getpagemask() mips32_getpagemask()
- #define mips_setpagemask(v) mips32_setpagemask(v)
- #define mips_getindex() mips32_getindex()
- #define mips_setindex(v) mips32_setindex(v)
- #define mips_getcmgcrbase() mips32_get_c0(C0_CMGCRBASE)
- #endif
- static inline __attribute__((always_inline)) _MIPS_HAL_NOMIPS16
- void mips_cache_op (vaddr_t kva, size_t n, int lsize, const int op)
- {
- vaddr_t addr, maxaddr, mask;
- if (n <= 0)
- return;
- mask = ~ (lsize - 1);
- addr = (kva & mask) - lsize;
- maxaddr = ((kva + n) - 1) & mask;
- do
- {
- addr = addr + lsize;
- mips_cache (op, addr);
- }
- while (addr != maxaddr);
- return;
- }
|