#pypp 0 #ifndef _ARCH_HH #define _ARCH_HH struct Thread_arch: unsigned at, v0, v1, a0, a1, a2, a3 unsigned t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 unsigned gp, fp, ra, hi, lo, k0, k1 #define Thread_arch_init(thread) do { thread->at = 0; thread->v0 = 0; thread->v1 = 0; thread->a0 = 0; thread->a1 = 0; thread->a2 = 0; thread->a3 = 0; thread->t0 = 0; thread->t1 = 0; thread->t2 = 0; thread->t3 = 0; thread->t4 = 0; thread->t5 = 0; thread->t6 = 0; thread->t7 = 0; thread->t8 = 0; thread->t9 = 0; thread->gp = 0; thread->fp = 0; thread->ra = 0; thread->hi = 0; thread->lo = 0; thread->k0 = 0; thread->k1 = 0; } while (0) struct Memory_arch: unsigned asid Page ***directory EXTERN unsigned g_asid #define Memory_arch_init(mem) do { mem->asid = g_asid++; g_asid &= 0x3f; mem->directory = NULL; } while (0) // Functions which can be called from assembly must not be mangled. extern "C": // Kernel entry points, called from entry.S. Thread *interrupt (Thread *current) Thread *cache_error (Thread *current) Thread *exception (Thread *current) Thread *tlb_refill (Thread *current, unsigned EntryHi) #ifdef INIT // Initialize most things (the rest is done in boot.S) void init () // Start running the idle task for the first time. void run_idle (Thread *self) #endif #endif