Added payload for figuring out sleep function

This commit is contained in:
2020-01-11 17:14:10 -05:00
parent ad9ce8f850
commit 477d7079c8
7 changed files with 37 additions and 22 deletions

View File

@@ -12,26 +12,22 @@ endif()
set(CMAKE_C_FLAGS "-nostdlib -O")
set(PAYLOADS
payload_aes
payload_aes_busy
payload_aes_sw
payload_sync
payload_sysreg)
add_executable(payload_aes src/aes.c)
add_executable(payload_aes_busy src/aes_busy.c)
add_executable(payload_aes_sw src/aes_sw.c)
add_executable(payload_sync src/sync.c)
add_executable(payload_sysreg src/sysreg.c)
aes
aes_busy
aes_sw
sync
sysreg
task_sleep_test)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/)
set_directory_properties(PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_CURRENT_SOURCE_DIR}/bin/")
foreach(BINARY ${PAYLOADS})
add_custom_command(TARGET ${BINARY} POST_BUILD
BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BINARY}.bin
add_executable(payload_${BINARY} src/${BINARY}.c)
add_custom_command(TARGET payload_${BINARY} POST_BUILD
BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/bin/payload_${BINARY}.bin
COMMAND ${CMAKE_OBJCOPY}
ARGS -O binary -j .text -j .payload_text -j .payload_data
${CMAKE_CURRENT_BINARY_DIR}/${BINARY}
${CMAKE_CURRENT_SOURCE_DIR}/bin/${BINARY}.bin)
${CMAKE_CURRENT_BINARY_DIR}/payload_${BINARY}
${CMAKE_CURRENT_SOURCE_DIR}/bin/payload_${BINARY}.bin)
endforeach(BINARY)

Binary file not shown.

View File

@@ -3,7 +3,6 @@
#include "brfunc_common.h"
PAYLOAD_SECTION
int aes_hw_crypto_cmd(unsigned long long cmd,
unsigned char *src, unsigned char *dst,
int len, unsigned long long opts,

View File

@@ -7,10 +7,4 @@
#define SYSTEM_TIME ((BOOTROM_FUNC) ADDR_SYSTEM_TIME)
#define TIME_HAS_ELAPSED ((BOOTROM_FUNC) ADDR_TIME_HAS_ELAPSED)
PAYLOAD_SECTION
void task_sleep(unsigned int usec)
{
((BOOTROM_FUNC) ADDR_TASK_SLEEP)(usec);
}
#endif //CHECKM8_TOOL_BRFUNC_TIMING_H

View File

@@ -0,0 +1,20 @@
#include "util.h"
#include "brfunc_common.h"
PAYLOAD_SECTION
void task_sleep(unsigned int usec)
{
((BOOTROM_FUNC) ADDR_TASK_SLEEP)(usec);
}
TEXT_SECTION
unsigned long long _start(unsigned int usec)
{
unsigned long long start, end;
__asm__ volatile ("mrs %0, cntpct_el0" : "=r" (start));
task_sleep(usec);
__asm__ volatile ("mrs %0, cntpct_el0" : "=r" (end));
return end - start;
}

View File

@@ -8,6 +8,7 @@
#define PAYLOAD_AES_SW_BIN CHECKM8_BIN_BASE "payloads/payload_aes_sw.bin"
#define PAYLOAD_SYNC_BIN CHECKM8_BIN_BASE "payloads/payload_sync.bin"
#define PAYLOAD_SYSREG_BIN CHECKM8_BIN_BASE "payloads/payload_sysreg.bin"
#define PAYLOAD_TASK_SLEEP_TEST_BIN CHECKM8_BIN_BASE "payloads/payload_task_sleep_test.bin"
typedef enum
{
@@ -16,6 +17,7 @@ typedef enum
PAYLOAD_AES_SW,
PAYLOAD_SYNC,
PAYLOAD_SYSREG,
PAYLOAD_TASK_SLEEP_TEST
} PAYLOAD_T;
typedef enum

View File

@@ -47,6 +47,10 @@ struct payload *get_payload(PAYLOAD_T p)
path = PAYLOAD_SYSREG_BIN;
break;
case PAYLOAD_TASK_SLEEP_TEST:
path = PAYLOAD_TASK_SLEEP_TEST_BIN;
break;
default:
return NULL;
}