2 ** Copyright 2003-2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3 ** Distributed under the terms of the Haiku License.
5 #ifndef _KERNEL_ARCH_ARM_CPU_H
6 #define _KERNEL_ARCH_ARM_CPU_H
9 #define CPU_MAX_CACHE_LEVEL 8
10 #define CACHE_LINE_SIZE 64
11 // TODO: Could be 32-bits sometimes?
16 #include <arch/arm/arch_thread_types.h>
20 /* raw exception frames */
43 /**! Values for arch_cpu_info.arch */
57 typedef struct arch_cpu_info
{
58 /* For a detailed interpretation of these values,
59 see "The System Control coprocessor",
60 "Main ID register" in your ARM ARM */
72 extern addr_t
arm_get_far(void);
73 extern int32
arm_get_fsr(void);
74 extern addr_t
arm_get_fp(void);
76 extern int mmu_read_c1(void);
77 extern int mmu_write_c1(int val
);
83 // TODO: ARM Priority pause call
91 asm volatile("mcr p15, 0, %[c7format], c7, c0, 4"
92 : : [c7format
] "r" (Rd
) );
100 #endif // !_ASSEMBLER
102 #endif /* _KERNEL_ARCH_ARM_CPU_H */