xref: /haiku/headers/private/kernel/arch/ppc/arch_int.h (revision 7176dd57e50431181ccd62bdd46fa78def8fdd62)
1 /*
2  * Copyright 2005-2006, Haiku Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  * 		Axel Dörfler <axeld@pinc-software.de>
7  * 		Ingo Weinhold <bonefish@cs.tu-berlin.de>
8  */
9 #ifndef _KERNEL_ARCH_PPC_INT_H
10 #define _KERNEL_ARCH_PPC_INT_H
11 
12 #include <SupportDefs.h>
13 
14 #define NUM_IO_VECTORS	256
15 
16 /* The sprg0 register of each CPU points to the physical address of such
17    a structure. So it is at hand in the early exception handling code.
18 */
19 struct ppc_cpu_exception_context {
20 	void	*kernel_handle_exception;	// exception handler routine in the
21 										// kernel
22 	void	*exception_context;			// the virtual address of this
23 										// structure
24 	void	*kernel_stack;				// kernel stack for the current thread
25 
26 	uint32	scratch[8];					// scratch memory for free use in the
27 										// early exception handling code
28 };
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 
35 struct ppc_cpu_exception_context *ppc_get_cpu_exception_context(int cpu);
36 
37 void ppc_set_current_cpu_exception_context(
38 	struct ppc_cpu_exception_context *context);
39 		// only called once per CPU
40 
41 
42 #ifdef __cplusplus
43 }
44 #endif
45 
46 #endif /* _KERNEL_ARCH_PPC_INT_H */
47