aboutsummaryrefslogtreecommitdiff
path: root/core/arch/arm32/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'core/arch/arm32/kernel')
-rw-r--r--core/arch/arm32/kernel/sub.mk8
-rw-r--r--core/arch/arm32/kernel/tee_time.c13
-rw-r--r--core/arch/arm32/kernel/tee_time_arm_generic_timer.c (renamed from core/arch/arm32/kernel/tee_time_arm_cntpct.c)12
3 files changed, 24 insertions, 9 deletions
diff --git a/core/arch/arm32/kernel/sub.mk b/core/arch/arm32/kernel/sub.mk
index 7f3190e..07258fc 100644
--- a/core/arch/arm32/kernel/sub.mk
+++ b/core/arch/arm32/kernel/sub.mk
@@ -1,14 +1,14 @@
srcs-y += tee_ta_manager.c
srcs-y += tee_time.c
-srcs-$(WITH_SECURE_TIME_SOURCE_CNTPCT) += tee_time_arm_cntpct.c
-srcs-$(WITH_SECURE_TIME_SOURCE_RTT) += tee_time_rtt.c
-srcs-$(WITH_SECURE_TIME_SOURCE_REE) += tee_time_ree.c
+srcs-$(CFG_SECURE_TIME_SOURCE_ARM_GENERIC_TIMER) += tee_time_arm_generic_timer.c
+srcs-$(CFG_SECURE_TIME_SOURCE_RTT) += tee_time_rtt.c
+srcs-$(CFG_SECURE_TIME_SOURCE_REE) += tee_time_ree.c
srcs-y += tee_time_unpg.c
srcs-y += tz_proc.S
srcs-y += tz_ssvce.S
-srcs-$(WITH_PL310) += tz_ssvce_pl310.S
+srcs-$(CFG_WITH_PL310) += tz_ssvce_pl310.S
srcs-y += tee_l2cc_mutex.c
srcs-y += thread_asm.S
diff --git a/core/arch/arm32/kernel/tee_time.c b/core/arch/arm32/kernel/tee_time.c
index e343bda..1005736 100644
--- a/core/arch/arm32/kernel/tee_time.c
+++ b/core/arch/arm32/kernel/tee_time.c
@@ -34,6 +34,7 @@
#include <sm/teesmc.h>
#include <kernel/tee_rpc.h>
#include <mm/core_mmu.h>
+#include <arm32.h>
struct time_source _time_source;
@@ -146,3 +147,15 @@ exit:
tee_ta_set_current_session(sess);
return res;
}
+
+int tee_time_get_generic_timer_info(struct generic_timer_info *timer_info)
+{
+ if (timer_info == NULL)
+ return -1;
+
+ timer_info->counter_frequency = read_cntfrq();
+ timer_info->counter_value = read_cntvct();
+
+ return 0;
+}
+
diff --git a/core/arch/arm32/kernel/tee_time_arm_cntpct.c b/core/arch/arm32/kernel/tee_time_arm_generic_timer.c
index 4f6aef3..be9df40 100644
--- a/core/arch/arm32/kernel/tee_time_arm_cntpct.c
+++ b/core/arch/arm32/kernel/tee_time_arm_generic_timer.c
@@ -31,6 +31,7 @@
#include <kernel/time_source.h>
#include <mm/core_mmu.h>
#include <utee_defines.h>
+#include <arm32.h>
#include <assert.h>
#include <stdint.h>
@@ -40,13 +41,14 @@
static uint32_t do_div(uint64_t *dividend, uint32_t divisor)
{
mpa_word_t remainder = 0, n0, n1;
+
n0 = (*dividend) & UINT_MAX;
n1 = ((*dividend) >> WORD_SIZE) & UINT_MAX;
*dividend = __mpa_div_dword(n0, n1, divisor, &remainder);
return remainder;
}
-static TEE_Result arm_cntpct_get_sys_time(TEE_Time *time)
+static TEE_Result arm_generic_timer_get_sys_time(TEE_Time *time)
{
uint64_t cntpct = read_cntpct();
uint32_t cntfrq = read_cntfrq();
@@ -60,9 +62,9 @@ static TEE_Result arm_cntpct_get_sys_time(TEE_Time *time)
return TEE_SUCCESS;
}
-static const struct time_source arm_cntpct_time_source = {
- .name = "arm cntpct",
- .get_sys_time = arm_cntpct_get_sys_time,
+static const struct time_source arm_generic_timer_time_source = {
+ .name = "arm generic timer",
+ .get_sys_time = arm_generic_timer_get_sys_time,
};
-REGISTER_TIME_SOURCE(arm_cntpct_time_source)
+REGISTER_TIME_SOURCE(arm_generic_timer_time_source)