diff --git a/entry/ofw/interface.c b/entry/ofw/interface.c new file mode 100644 index 0000000..7ac9395 --- /dev/null +++ b/entry/ofw/interface.c @@ -0,0 +1,47 @@ +#include + +extern void (*ofw)(); + +void* interpret(char* cmd, ...) +{ +} + +void* set_callback(void* addr) +{ + struct + { + char* service; + int32_t n_args; + int32_t n_rets; + void* arg; + void* ret; + } ofw_arg; + + SERVICE("set-callback", 13, 1, 1); + + ofw_arg.arg = addr; + + ofw(&ofw_arg); + return ofw_arg.ret; +} + +void set_symbol_lookup(void* sym_to_value, void* value_to_sym) +{ + struct + { + char* service; + int32_t n_args; + int32_t n_rets; + void* arg1; + void* arg2; + } ofw_arg; + + SERVICE("set-symbol-lookup", 17, 2, 0); + + ofw_arg.arg1 = sym_to_value; + ofw_arg.arg2 = value_to_sym; + + ofw(&ofw_arg); +} + + diff --git a/entry/ofw/time.c b/entry/ofw/time.c new file mode 100644 index 0000000..72763d6 --- /dev/null +++ b/entry/ofw/time.c @@ -0,0 +1,20 @@ +#include + +extern void (*ofw)(); + +int32_t milliseconds(void) +{ + struct + { + char* service; + int32_t n_args; + int32_t n_rets; + int32_t ret; + } ofw_arg; + + SERVICE("milliseconds", 13, 0, 1); + + ofw(&ofw_arg); + + return ofw_arg.ret; +}