2025-02-17 09:09:14 +00:00
|
|
|
#include <platform/platform.h>
|
|
|
|
#include <platform/printf.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
2025-02-17 23:46:39 +00:00
|
|
|
#define RAM_START 0x00300000
|
|
|
|
#define RAM_END RAM_START + 0x00800000
|
|
|
|
#define LIB_MAGIC 0x88DAD0F2
|
2025-02-17 09:09:14 +00:00
|
|
|
|
2025-02-17 23:46:39 +00:00
|
|
|
typedef int (*func_t)();
|
2025-02-17 09:09:14 +00:00
|
|
|
|
|
|
|
void execute_library_function() {
|
|
|
|
printf("Scanning RAM...\n");
|
2025-02-17 23:46:39 +00:00
|
|
|
uint32_t *ptr = (uint32_t *)RAM_START;
|
2025-02-17 09:09:14 +00:00
|
|
|
|
|
|
|
while ((uint32_t)ptr < RAM_END) {
|
|
|
|
if (*ptr == LIB_MAGIC) {
|
2025-02-17 23:46:39 +00:00
|
|
|
printf("Found libpqscheme_test 0x%X!\n", ptr);
|
|
|
|
|
|
|
|
printf("1>...%X 0x%X\n", ptr + 1, *(ptr + 1));
|
|
|
|
printf("2>...%X 0x%X\n", ptr + 2, *(ptr + 2));
|
|
|
|
printf("3>...%X 0x%X\n", ptr + 3, *(ptr + 3));
|
|
|
|
|
|
|
|
for (size_t i = 0; i < 20; i++) {
|
|
|
|
printf("%X %2X \n", (((uint8_t *)ptr) + i),
|
|
|
|
*(((uint8_t *)ptr) + i));
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
uint32_t entry_point = *((uint32_t *)(ptr + 0x10));
|
|
|
|
uint8_t *p = (uint8_t *)entry_point;
|
|
|
|
printf("\n");
|
|
|
|
|
2025-02-17 09:09:14 +00:00
|
|
|
func_t test_func = (func_t)entry_point;
|
|
|
|
if (test_func) {
|
2025-02-17 23:46:39 +00:00
|
|
|
printf("Try exec...0x%X 0x%X\n", entry_point,
|
|
|
|
0x20000034 + 0x10);
|
2025-02-17 09:09:14 +00:00
|
|
|
printf(">> %d\n", test_func());
|
|
|
|
}
|
2025-02-17 23:46:39 +00:00
|
|
|
*/
|
|
|
|
uint32_t entry_point = 0x300044 | 1;
|
|
|
|
func_t test_func = (func_t)entry_point;
|
|
|
|
printf("> Entry point\n", entry_point);
|
|
|
|
int res = test_func();
|
|
|
|
printf(">> %d\n", res);
|
2025-02-17 09:09:14 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
ptr++;
|
|
|
|
}
|
|
|
|
|
|
|
|
printf("Test binary not found!\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
void main() {
|
|
|
|
platform_init(PLATFORM_CLOCK_MAX);
|
|
|
|
platform_sync();
|
|
|
|
|
|
|
|
printf("Runner started\n");
|
|
|
|
execute_library_function();
|
|
|
|
printf("Execution finished\n");
|
|
|
|
}
|