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.

Reply via email to