2 * This confidential and proprietary software may be used only as
3 * authorised by a licensing agreement from ARM Limited
4 * (C) COPYRIGHT 2010-2011, 2013 ARM Limited
6 * The entire notice above must be reproduced on all authorised
7 * copies and copies may only be made to the extent permitted
8 * by a licensing agreement from ARM Limited.
11 #ifndef __MALI_TIMESTAMP_H__
12 #define __MALI_TIMESTAMP_H__
16 MALI_STATIC_INLINE _mali_osk_errcode_t
_mali_timestamp_reset(void)
19 * reset counters and overflow flags
22 u32 mask
= (1 << 0) | /* enable all three counters */
23 (0 << 1) | /* reset both Count Registers to 0x0 */
24 (1 << 2) | /* reset the Cycle Counter Register to 0x0 */
25 (0 << 3) | /* 1 = Cycle Counter Register counts every 64th processor clock cycle */
26 (0 << 4) | /* Count Register 0 interrupt enable */
27 (0 << 5) | /* Count Register 1 interrupt enable */
28 (0 << 6) | /* Cycle Counter interrupt enable */
29 (0 << 8) | /* Count Register 0 overflow flag (clear or write, flag on read) */
30 (0 << 9) | /* Count Register 1 overflow flag (clear or write, flag on read) */
31 (1 << 10); /* Cycle Counter Register overflow flag (clear or write, flag on read) */
33 __asm__
__volatile__ ("MCR p15, 0, %0, c15, c12, 0" : : "r" (mask
) );
35 return _MALI_OSK_ERR_OK
;
38 MALI_STATIC_INLINE u64
_mali_timestamp_get(void)
42 /* this is for the clock cycles */
43 __asm__
__volatile__ ("MRC p15, 0, %0, c15, c12, 1" : "=r" (result
));
48 #endif /* __MALI_TIMESTAMP_H__ */