From a66ff906bdce53a9d444008299582956d5f08890 Mon Sep 17 00:00:00 2001 From: Gregor Haas Date: Mon, 24 Feb 2020 15:02:05 -0500 Subject: [PATCH] added to the bootrom libraries --- c8_remote/include/bootrom_addr.h | 1 + c8_remote/include/bootrom_type.h | 24 ++++++++++++++++++++ c8_remote/lib/payload/include/bootrom_func.h | 12 +++++++--- c8_remote/lib/payload/include/cacheutil.h | 4 ++-- 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 c8_remote/include/bootrom_type.h diff --git a/c8_remote/include/bootrom_addr.h b/c8_remote/include/bootrom_addr.h index e68ccc0..0321c2a 100644 --- a/c8_remote/include/bootrom_addr.h +++ b/c8_remote/include/bootrom_addr.h @@ -25,6 +25,7 @@ #define ADDR_EVENT_NEW 0x10000aed4 #define ADDR_EVENT_NOTIFY 0x10000aee8 #define ADDR_EVENT_WAIT 0x10000af3c +#define ADDR_EVENT_TRY 0x10000af7c /* Heap */ #define ADDR_CALC_CHKSUM 0x10000ee20 diff --git a/c8_remote/include/bootrom_type.h b/c8_remote/include/bootrom_type.h new file mode 100644 index 0000000..1619a43 --- /dev/null +++ b/c8_remote/include/bootrom_type.h @@ -0,0 +1,24 @@ +#ifndef CHECKM8_TOOL_BOOTROM_TYPE_H +#define CHECKM8_TOOL_BOOTROM_TYPE_H + +struct event +{ + unsigned long long dat0; + unsigned long long dat1; + unsigned long long dat2; +} __attribute__ ((packed)); + +struct aes_sw_bernstein_data +{ + double t[16][256]; + double tsq[16][256]; + double tnum[16][256]; + + unsigned long long count; + double ttotal; + + struct event ev_data; + struct event ev_done; +} __attribute__ ((packed)); + +#endif //CHECKM8_TOOL_BOOTROM_TYPE_H diff --git a/c8_remote/lib/payload/include/bootrom_func.h b/c8_remote/lib/payload/include/bootrom_func.h index 1bcde39..1151b93 100644 --- a/c8_remote/lib/payload/include/bootrom_func.h +++ b/c8_remote/lib/payload/include/bootrom_func.h @@ -2,6 +2,7 @@ #define CHECKM8_TOOL_BOOTROM_FUNC_H #include "bootrom_addr.h" +#include "bootrom_type.h" #include "dev_util.h" /* Crypto */ @@ -65,21 +66,26 @@ static inline void task_free(void *task) ((BOOTROM_FUNC_V) ADDR_TASK_FREE)(task); } -static inline void event_new(void *dst, int flags, int state) +static inline void event_new(struct event *dst, int flags, int state) { ((BOOTROM_FUNC_V) ADDR_EVENT_NEW)(dst, flags, state); } -static inline void event_notify(void *ev) +static inline void event_notify(struct event *ev) { ((BOOTROM_FUNC_V) ADDR_EVENT_NOTIFY)(ev); } -static inline void event_wait(void *ev) +static inline void event_wait(struct event *ev) { ((BOOTROM_FUNC_V) ADDR_EVENT_WAIT)(ev); } +static inline int event_try(struct event *ev, int timeout) +{ + return ((BOOTROM_FUNC_I) ADDR_EVENT_TRY)(ev, timeout); +} + /* Heap */ static inline void calc_chksum(unsigned long long *dst, unsigned long long *src, int len, unsigned long long *cookie) diff --git a/c8_remote/lib/payload/include/cacheutil.h b/c8_remote/lib/payload/include/cacheutil.h index f1e126d..363eb54 100644 --- a/c8_remote/lib/payload/include/cacheutil.h +++ b/c8_remote/lib/payload/include/cacheutil.h @@ -48,13 +48,13 @@ static inline void clean_inv_l1_setway(unsigned int set, unsigned int way) } PAYLOAD_SECTION -static inline void inv_l1_va(unsigned long long *addr) +static inline void inv_va(void *addr) { __asm__ volatile ("dc ivac, %0"::"r" (addr)); } PAYLOAD_SECTION -static inline void clean_inv_l1_va(unsigned long long *addr) +static inline void clean_inv_va(void *addr) { __asm__ volatile ("dc ivac, %0"::"r" (addr)); }