cpu.h revision 266160
1229970Sadrian/* $NetBSD: cpu.h,v 1.2 2001/02/23 21:23:52 reinoud Exp $ */ 2229970Sadrian/* $FreeBSD: stable/10/sys/arm/include/cpu.h 266160 2014-05-15 17:30:16Z ian $ */ 3229970Sadrian 4229970Sadrian#ifndef MACHINE_CPU_H 5229970Sadrian#define MACHINE_CPU_H 6229970Sadrian 7229970Sadrian#include <machine/armreg.h> 8229970Sadrian#include <machine/frame.h> 9229970Sadrian 10229970Sadrianvoid cpu_halt(void); 11229970Sadrianvoid swi_vm(void *); 12229970Sadrian 13229970Sadrian#ifdef _KERNEL 14229970Sadrianstatic __inline uint64_t 15229970Sadrianget_cyclecount(void) 16229970Sadrian{ 17229970Sadrian struct bintime bt; 18229970Sadrian 19229970Sadrian binuptime(&bt); 20229970Sadrian return ((uint64_t)bt.sec << 56 | bt.frac >> 8); 21229970Sadrian 22229970Sadrian} 23229970Sadrian#endif 24229970Sadrian 25229970Sadrian#define TRAPF_USERMODE(frame) ((frame->tf_spsr & PSR_MODE) == PSR_USR32_MODE) 26229970Sadrian 27229970Sadrian#define TRAPF_PC(tfp) ((tfp)->tf_pc) 28229970Sadrian 29229970Sadrian#define cpu_getstack(td) ((td)->td_frame->tf_usr_sp) 30229970Sadrian#define cpu_setstack(td, sp) ((td)->td_frame->tf_usr_sp = (sp)) 31229970Sadrian#define cpu_spinwait() /* nothing */ 32229970Sadrian 33229970Sadrian#define ARM_NVEC 8 34229970Sadrian#define ARM_VEC_ALL 0xffffffff 35229970Sadrian 36229970Sadrianextern vm_offset_t vector_page; 37229970Sadrian 38229970Sadrianstruct arm_boot_params { 39229970Sadrian register_t abp_size; /* Size of this structure */ 40229970Sadrian register_t abp_r0; /* r0 from the boot loader */ 41229970Sadrian register_t abp_r1; /* r1 from the boot loader */ 42229970Sadrian register_t abp_r2; /* r2 from the boot loader */ 43229970Sadrian register_t abp_r3; /* r3 from the boot loader */ 44229970Sadrian vm_offset_t abp_physaddr; /* The kernel physical address */ 45229970Sadrian}; 46229970Sadrian 47229970Sadrianvoid arm_vector_init(vm_offset_t, int); 48229970Sadrianvoid fork_trampoline(void); 49229970Sadrianvoid identify_arm_cpu(void); 50229970Sadrianvoid *initarm(struct arm_boot_params *); 51229970Sadrian 52229970Sadrianextern char btext[]; 53229970Sadrianextern char etext[]; 54229970Sadrianint badaddr_read(void *, size_t, void *); 55229970Sadrian#endif /* !MACHINE_CPU_H */ 56229970Sadrian