xref: /kvm-unit-tests/lib/arm/asm/timer.h (revision 0cc3a351b925928827baa4b69cf0e46ff5837083)
1a4110027SAndrew Jones /*
2a4110027SAndrew Jones  * Copyright (C) 2020, Red Hat Inc, Andrew Jones <drjones@redhat.com>
3a4110027SAndrew Jones  *
4a4110027SAndrew Jones  * This work is licensed under the terms of the GNU LGPL, version 2.
5a4110027SAndrew Jones  */
6a4110027SAndrew Jones #ifndef _ASMARM_TIMER_H_
7a4110027SAndrew Jones #define _ASMARM_TIMER_H_
8a4110027SAndrew Jones 
9a4110027SAndrew Jones #define ARCH_TIMER_CTL_ENABLE  (1 << 0)
10a4110027SAndrew Jones #define ARCH_TIMER_CTL_IMASK   (1 << 1)
11a4110027SAndrew Jones #define ARCH_TIMER_CTL_ISTATUS (1 << 2)
12a4110027SAndrew Jones 
13*0cc3a351SSean Christopherson #ifndef __ASSEMBLER__
14a4110027SAndrew Jones 
15a4110027SAndrew Jones struct timer_state {
16a4110027SAndrew Jones 	struct {
17a4110027SAndrew Jones 		u32 irq;
18a4110027SAndrew Jones 		u32 irq_flags;
19a4110027SAndrew Jones 	} ptimer;
20a4110027SAndrew Jones 	struct {
21a4110027SAndrew Jones 		u32 irq;
22a4110027SAndrew Jones 		u32 irq_flags;
23a4110027SAndrew Jones 	} vtimer;
24a4110027SAndrew Jones };
25a4110027SAndrew Jones extern struct timer_state __timer_state;
26a4110027SAndrew Jones 
27a4110027SAndrew Jones #define TIMER_PTIMER_IRQ (__timer_state.ptimer.irq)
28a4110027SAndrew Jones #define TIMER_VTIMER_IRQ (__timer_state.vtimer.irq)
29a4110027SAndrew Jones 
30bb4c17e3SNikos Nikoleris void timer_save_state(void);
31bb4c17e3SNikos Nikoleris 
32*0cc3a351SSean Christopherson #endif /* !__ASSEMBLER__ */
33a4110027SAndrew Jones #endif /* _ASMARM_TIMER_H_ */
34