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