cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

arch_timer.c (926B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 *  linux/arch/arm/kernel/arch_timer.c
      4 *
      5 *  Copyright (C) 2011 ARM Ltd.
      6 *  All Rights Reserved
      7 */
      8#include <linux/init.h>
      9#include <linux/types.h>
     10#include <linux/errno.h>
     11
     12#include <asm/delay.h>
     13#include <asm/arch_timer.h>
     14
     15#include <clocksource/arm_arch_timer.h>
     16
     17static unsigned long arch_timer_read_counter_long(void)
     18{
     19	return arch_timer_read_counter();
     20}
     21
     22static struct delay_timer arch_delay_timer;
     23
     24static void __init arch_timer_delay_timer_register(void)
     25{
     26	/* Use the architected timer for the delay loop. */
     27	arch_delay_timer.read_current_timer = arch_timer_read_counter_long;
     28	arch_delay_timer.freq = arch_timer_get_rate();
     29	register_current_timer_delay(&arch_delay_timer);
     30}
     31
     32int __init arch_timer_arch_init(void)
     33{
     34        u32 arch_timer_rate = arch_timer_get_rate();
     35
     36	if (arch_timer_rate == 0)
     37		return -ENXIO;
     38
     39	arch_timer_delay_timer_register();
     40
     41	return 0;
     42}