CVSROOT: /cvs Module name: src Changes by: m...@cvs.openbsd.org 2012/09/29 15:37:03
Modified files: sys/arch/mips64/conf: files.mips64 sys/arch/mips64/include: asm.h cache.h cpu.h mips_opcode.h pte.h sys/arch/mips64/mips64: context.S cp0access.S cpu.c db_disasm.c db_machdep.c lcore_access.S mips64_machdep.c pmap.c tlbhandler.S trap.c vm_machdep.c Added files: sys/arch/mips64/mips64: cache_tfp.c cache_tfp_subr.S exception_tfp.S tlb_tfp.S Log message: Basic R8000 processor support. R8000 processors require MMU-specific code, exception-specific code, clock-specific code, and L1 cache-specific code. L2 cache is per-design, of which only two exist: SGI Power Indigo2 (IP26) and SGI Power Challenge (IP21) and are not covered by this commit. R8000 processors also are 64-bit only processors with 64-bit coprocessor 0 registers, and lack so-called ``compatibility'' memory spaces allowing 32-bit code to run with sign-extended addresses and registers. The intrusive changes are covered by #ifdef CPU_R8000 stanzas. However, trap() is split into a high-level wrapper and a new function, itsa(), responsible for the actual trap servicing (which name couldn't be helped because I'm an incorrigible punster). While an R8000 exception may cause (via trap() ) multiple exceptions to be serviced, non-R8000 processors will always service one exception in trap(), but they are nevertheless affected by this code split.