|
|
|
@ -1,4 +1,3 @@
|
|
|
|
|
|
|
|
|
|
#define TEXT_IO_ADDR 0xff0000
|
|
|
|
|
#define TEXT_IO_BUFLEN 64
|
|
|
|
|
|
|
|
|
@ -7,7 +6,8 @@ char* itoa (int value, char* str, int base);
|
|
|
|
|
|
|
|
|
|
int thread(void* args);
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
dbgln("main", 4);
|
|
|
|
|
|
|
|
|
|
int arg = 144;
|
|
|
|
@ -19,7 +19,8 @@ int main() {
|
|
|
|
|
"ecall" :: "r"(thread), "r"(&arg)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
while (arg == 144) {}
|
|
|
|
|
while (arg == 144) {
|
|
|
|
|
}
|
|
|
|
|
__asm__ ("ebreak");
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
@ -30,6 +31,7 @@ int thread(void* args)
|
|
|
|
|
int arg = *((int*) args);
|
|
|
|
|
char buff[32] = "the magic number is: ";
|
|
|
|
|
char* end = itoa(arg, &buff[21], 10);
|
|
|
|
|
|
|
|
|
|
dbgln(buff, (int) (end - buff));
|
|
|
|
|
|
|
|
|
|
// *((int*) args) = 0;
|
|
|
|
@ -75,6 +77,7 @@ char* itoa (int value, char* str, int base)
|
|
|
|
|
|
|
|
|
|
int digits = 0;
|
|
|
|
|
int num = 0;
|
|
|
|
|
|
|
|
|
|
// reverse number
|
|
|
|
|
do {
|
|
|
|
|
num = num * base;
|
|
|
|
@ -89,13 +92,13 @@ char* itoa (int value, char* str, int base)
|
|
|
|
|
value = value / base;
|
|
|
|
|
*str++ = alpha[num];
|
|
|
|
|
digits--;
|
|
|
|
|
}
|
|
|
|
|
while (digits > 0);
|
|
|
|
|
}while (digits > 0);
|
|
|
|
|
|
|
|
|
|
return str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void _start() {
|
|
|
|
|
void _start()
|
|
|
|
|
{
|
|
|
|
|
__asm__ (
|
|
|
|
|
".option push\n"
|
|
|
|
|
".option norelax\n"
|
|
|
|
@ -105,6 +108,7 @@ void _start() {
|
|
|
|
|
|
|
|
|
|
dbgln("start", 5);
|
|
|
|
|
int exit_code = main();
|
|
|
|
|
|
|
|
|
|
dbgln("end", 3);
|
|
|
|
|
|
|
|
|
|
__asm__ (
|
|
|
|
|