WIP
This commit is contained in:
40
runner.c
40
runner.c
@@ -2,28 +2,46 @@
|
||||
#include <platform/printf.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define RAM_START 0x20000000
|
||||
#define RAM_END RAM_START + 0x00400000
|
||||
#define LIB_MAGIC 0xDEADBEEFu
|
||||
#define RAM_START 0x00300000
|
||||
#define RAM_END RAM_START + 0x00800000
|
||||
#define LIB_MAGIC 0x88DAD0F2
|
||||
|
||||
typedef int (*func_t)(void);
|
||||
typedef int (*func_t)();
|
||||
|
||||
void execute_library_function() {
|
||||
printf("Scanning RAM...\n");
|
||||
volatile uint32_t *ptr = (uint32_t *)RAM_START;
|
||||
uint32_t *ptr = (uint32_t *)RAM_START;
|
||||
|
||||
while ((uint32_t)ptr < RAM_END) {
|
||||
if (*ptr == LIB_MAGIC) {
|
||||
printf("Found libpqscheme_test!\n");
|
||||
uint32_t entry_point = *(ptr + 4);
|
||||
printf("%X\n", entry_point);
|
||||
entry_point += 4;
|
||||
printf("%X\n", entry_point);
|
||||
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");
|
||||
|
||||
func_t test_func = (func_t)entry_point;
|
||||
if (test_func) {
|
||||
printf("Try exec...%X\n", entry_point);
|
||||
printf("Try exec...0x%X 0x%X\n", entry_point,
|
||||
0x20000034 + 0x10);
|
||||
printf(">> %d\n", test_func());
|
||||
}
|
||||
*/
|
||||
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);
|
||||
return;
|
||||
}
|
||||
ptr++;
|
||||
|
||||
Reference in New Issue
Block a user