xref: /haiku/headers/private/kernel/arch/mipsel/arch_cpu.h (revision 893988af824e65e49e55f517b157db8386e8002b)
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