/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2021 Andrew Turner4*5* This work was supported by Innovate UK project 105694, "Digital Security6* by Design (DSbD) Technology Platform Prototype".7*8* Redistribution and use in source and binary forms, with or without9* modification, are permitted provided that the following conditions10* are met:11* 1. Redistributions of source code must retain the above copyright12* notice, this list of conditions and the following disclaimer.13* 2. Redistributions in binary form must reproduce the above copyright14* notice, this list of conditions and the following disclaimer in the15* documentation and/or other materials provided with the distribution.16*17* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND18* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE19* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE20* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE21* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL22* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS23* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)24* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT25* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY26* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF27* SUCH DAMAGE.28*/2930#include <efi.h>31#include <efilib.h>3233#include <time.h>34#include <sys/time.h>3536#include <machine/armreg.h>3738static uint64_t timer_freq;3940void41efi_time_init(void)42{43/* Find the timer frequency */44timer_freq = READ_SPECIALREG(cntfrq_el0);45}4647void48efi_time_fini(void)49{50}5152time_t53time(time_t *tloc)54{55time_t t;5657t = READ_SPECIALREG(cntvct_el0) / timer_freq;58if (tloc != NULL)59*tloc = t;6061return (t);62}6364time_t65getsecs(void)66{67return time(NULL);68}697071