1*893988afSJonas Sundström /* 2*893988afSJonas Sundström * Copyright 2009 Haiku Inc. 3*893988afSJonas Sundström * All rights reserved. Distributed under the terms of the MIT License. 4*893988afSJonas Sundström */ 5*893988afSJonas Sundström #ifndef _KERNEL_ARCH_MIPSEL_CPU_H 6*893988afSJonas Sundström #define _KERNEL_ARCH_MIPSEL_CPU_H 7*893988afSJonas Sundström 8*893988afSJonas Sundström 9*893988afSJonas Sundström #warning IMPLEMENT arch_cpu.h 10*893988afSJonas Sundström 11*893988afSJonas Sundström 12*893988afSJonas Sundström #include <arch/mipsel/arch_thread_types.h> 13*893988afSJonas Sundström #include <kernel.h> 14*893988afSJonas Sundström 15*893988afSJonas Sundström 16*893988afSJonas Sundström struct iframe { 17*893988afSJonas Sundström #warning struct iframe 18*893988afSJonas Sundström uint32 r31; 19*893988afSJonas Sundström uint32 r30; 20*893988afSJonas Sundström uint32 r29; 21*893988afSJonas Sundström uint32 r28; 22*893988afSJonas Sundström uint32 r27; 23*893988afSJonas Sundström uint32 r26; 24*893988afSJonas Sundström uint32 r25; 25*893988afSJonas Sundström uint32 r24; 26*893988afSJonas Sundström uint32 r23; 27*893988afSJonas Sundström uint32 r22; 28*893988afSJonas Sundström uint32 r21; 29*893988afSJonas Sundström uint32 r20; 30*893988afSJonas Sundström uint32 r19; 31*893988afSJonas Sundström uint32 r18; 32*893988afSJonas Sundström uint32 r17; 33*893988afSJonas Sundström uint32 r16; 34*893988afSJonas Sundström uint32 r15; 35*893988afSJonas Sundström uint32 r14; 36*893988afSJonas Sundström uint32 r13; 37*893988afSJonas Sundström uint32 r12; 38*893988afSJonas Sundström uint32 r11; 39*893988afSJonas Sundström uint32 r10; 40*893988afSJonas Sundström uint32 r9; 41*893988afSJonas Sundström uint32 r8; 42*893988afSJonas Sundström uint32 r7; 43*893988afSJonas Sundström uint32 r6; 44*893988afSJonas Sundström uint32 r5; 45*893988afSJonas Sundström uint32 r4; 46*893988afSJonas Sundström uint32 r3; 47*893988afSJonas Sundström uint32 r2; 48*893988afSJonas Sundström uint32 r1; 49*893988afSJonas Sundström uint32 r0; 50*893988afSJonas Sundström }; 51*893988afSJonas Sundström 52*893988afSJonas Sundström typedef struct arch_cpu_info { 53*893988afSJonas Sundström int null; 54*893988afSJonas Sundström } arch_cpu_info; 55*893988afSJonas Sundström 56*893988afSJonas Sundström 57*893988afSJonas Sundström #ifdef __cplusplus 58*893988afSJonas Sundström extern "C" { 59*893988afSJonas Sundström #endif 60*893988afSJonas Sundström 61*893988afSJonas Sundström 62*893988afSJonas Sundström extern long long get_time_base(void); 63*893988afSJonas Sundström 64*893988afSJonas Sundström void __mipsel_setup_system_time(vint32 *cvFactor); 65*893988afSJonas Sundström // defined in libroot: os/arch/system_time.c 66*893988afSJonas Sundström 67*893988afSJonas Sundström int64 __mipsel_get_time_base(void); 68*893988afSJonas Sundström // defined in libroot: os/arch/system_time_asm.S 69*893988afSJonas Sundström 70*893988afSJonas Sundström extern void mipsel_context_switch(void **_oldStackPointer, 71*893988afSJonas Sundström void *newStackPointer); 72*893988afSJonas Sundström 73*893988afSJonas Sundström extern bool mipsel_set_fault_handler(addr_t *handlerLocation, addr_t handler) 74*893988afSJonas Sundström __attribute__((noinline)); 75*893988afSJonas Sundström 76*893988afSJonas Sundström #ifdef __cplusplus 77*893988afSJonas Sundström } 78*893988afSJonas Sundström #endif 79*893988afSJonas Sundström 80*893988afSJonas Sundström 81*893988afSJonas Sundström /* TODO */ 82*893988afSJonas Sundström enum mipsel_processor_version { 83*893988afSJonas Sundström FAKE1 = 0x0001, 84*893988afSJonas Sundström FAKE2 = 0x0002, 85*893988afSJonas Sundström FAKE3 = 0x0003, 86*893988afSJonas Sundström }; 87*893988afSJonas Sundström 88*893988afSJonas Sundström 89*893988afSJonas Sundström #endif /* _KERNEL_ARCH_MIPSEL_CPU_H */ 90*893988afSJonas Sundström 91