Fix AmigaOS calls : a6 is required to point to the library base, but our gcc uses it as frame pointer, so we must save it before calling.

Fix the console and remove test panics. We now display the menu, although not in the best colors :
http://revolf.free.fr/beos/shots/shot_haiku_loader_amiga_m68k_002.png
(Yes, the mouse moves too :p)
Amiga !!!!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39074 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol 2010-10-23 15:53:51 +00:00
parent f55ffb1a8e
commit bf6cf21094
3 changed files with 105 additions and 123 deletions

View File

@ -70,9 +70,10 @@ ConsoleHandle::WriteAt(void */*cookie*/, off_t /*pos*/, const void *buffer,
break;
if (string[i] == '\n') {
//Text(&sScreen->RastPort, &string[i - len], len);
fY = 0;
fX++;
fX = 0;
fY++;
len = 0;
console_set_cursor(fX, fY);
continue;
}
Text(&sScreen->RastPort, &string[i], 1);
@ -130,28 +131,10 @@ console_init(void)
sFontHeight = sScreen->Font->ta_YSize;
sFontWidth = font->tf_XSize;
ClearScreen(&sScreen->RastPort);
//CloseScreen(sScreen);
//TODO
dbgerr = stdout = stderr = (FILE *)&sOutput;
//XXX: testing
Move(&sScreen->RastPort, 30, 30);
Text(&sScreen->RastPort, "kikou", 5);
// those crash for the moment. Stack alignment issue ?
// sOutput.WriteAt(NULL, 0LL, "abcdefgh", 10);
// dprintf("kk\nbb\n");
//XXX
while (true) {}
//panic("console_init done\n");
return B_OK;
}

View File

@ -43,10 +43,10 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
void *const _##name##_bn = (bn); \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn) \
: [libbase] "a" (_##name##_bn) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -59,10 +59,10 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
void *const _##name##_bn = (bn); \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn) \
: [libbase] "a" (_##name##_bn) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -75,11 +75,11 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1) \
: [libbase] "a" (_##name##_bn), "rf"(_n1) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -93,11 +93,11 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1) \
: [libbase] "a" (_##name##_bn), "rf"(_n1) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -111,11 +111,11 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
__asm volatile ("exg d7,a5\n\tjsr %%a6@(-"#offs":W)\n\texg d7,a5" \
__asm volatile ("exg d7,a5\n\tmove.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6\n\texg d7,a5" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1) \
: [libbase] "a" (_##name##_bn), "rf"(_n1) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -130,11 +130,11 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
__asm volatile ("exg d7,a5\n\tjsr %%a6@(-"#offs":W)\n\texg d7,a5" \
__asm volatile ("exg d7,a5\n\tmove.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6\n\texg d7,a5" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1) \
: [libbase] "a" (_##name##_bn), "rf"(_n1) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -149,11 +149,11 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
__asm volatile ("exg d7,a5\n\tjsr %%a6@(-"#offs":W)\n\texg d7,a5" \
__asm volatile ("exg d7,a5\n\tmove.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6\n\texg d7,a5" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1) \
: [libbase] "a" (_##name##_bn), "rf"(_n1) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -168,12 +168,12 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -188,12 +188,12 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -210,7 +210,7 @@ extern "C" {
register rt _##name##_re __asm("d0"); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r"(_n1), "rf"(_n2) \
: "fp0", "fp1", "cc", "memory"); \
@ -229,12 +229,12 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -250,13 +250,13 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -272,13 +272,13 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -297,7 +297,7 @@ extern "C" {
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r"(_n1), "rf"(_n2), "rf"(_n3) \
: "fp0", "fp1", "cc", "memory"); \
@ -319,7 +319,7 @@ extern "C" {
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r"(_n1), "rf"(_n2), "rf"(_n3) \
: "fp0", "fp1", "cc", "memory"); \
@ -338,13 +338,13 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -362,13 +362,13 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -384,14 +384,14 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -408,14 +408,14 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -433,14 +433,14 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -458,15 +458,15 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
register t5 _n5 __asm(#r5) = _##name##_v5; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -484,15 +484,15 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
register t5 _n5 __asm(#r5) = _##name##_v5; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -511,15 +511,15 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
register t5 _n5 __asm(#r5) = _##name##_v5; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -538,15 +538,15 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
register t5 _n5 __asm(#r5) = _##name##_v5; \
__asm volatile ("exg d7,a4\n\tjsr %%a6@(-"#offs":W)\n\texg d7,a4" \
__asm volatile ("exg d7,a4\n\tmove.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6\n\texg d7,a4" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -565,16 +565,16 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
register t5 _n5 __asm(#r5) = _##name##_v5; \
register t6 _n6 __asm(#r6) = _##name##_v6; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -593,16 +593,16 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
register t4 _n4 __asm(#r4) = _##name##_v4; \
register t5 _n5 __asm(#r5) = _##name##_v5; \
register t6 _n6 __asm(#r6) = _##name##_v6; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -621,7 +621,7 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -629,9 +629,9 @@ extern "C" {
register t5 _n5 __asm(#r5) = _##name##_v5; \
register t6 _n6 __asm(#r6) = _##name##_v6; \
register t7 _n7 __asm(#r7) = _##name##_v7; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -651,7 +651,7 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -659,9 +659,9 @@ extern "C" {
register t5 _n5 __asm(#r5) = _##name##_v5; \
register t6 _n6 __asm(#r6) = _##name##_v6; \
register t7 _n7 __asm(#r7) = _##name##_v7; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -681,7 +681,7 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -689,9 +689,9 @@ extern "C" {
register t5 _n5 __asm(#r5) = _##name##_v5; \
register t6 _n6 __asm(#r6) = _##name##_v6; \
register t7 _n7 __asm(#r7) = _##name##_v7; \
__asm volatile ("exg d7,a4\n\tjsr %%a6@(-"#offs":W)\n\texg d7,a4" \
__asm volatile ("exg d7,a4\n\tmove.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6\n\texg d7,a4" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -716,7 +716,7 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -725,9 +725,9 @@ extern "C" {
register t6 _n6 __asm(#r6) = _##name##_v6; \
register t7 _n7 __asm(#r7) = _##name##_v7; \
register t8 _n8 __asm(#r8) = _##name##_v8; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -749,7 +749,7 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -758,9 +758,9 @@ extern "C" {
register t6 _n6 __asm(#r6) = _##name##_v6; \
register t7 _n7 __asm(#r7) = _##name##_v7; \
register t8 _n8 __asm(#r8) = _##name##_v8; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -782,7 +782,7 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -792,9 +792,9 @@ extern "C" {
register t7 _n7 __asm(#r7) = _##name##_v7; \
register t8 _n8 __asm(#r8) = _##name##_v8; \
register t9 _n9 __asm(#r9) = _##name##_v9; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -817,7 +817,7 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -827,9 +827,9 @@ extern "C" {
register t7 _n7 __asm(#r7) = _##name##_v7; \
register t8 _n8 __asm(#r8) = _##name##_v8; \
register t9 _n9 __asm(#r9) = _##name##_v9; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -852,7 +852,7 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -863,9 +863,9 @@ extern "C" {
register t8 _n8 __asm(#r8) = _##name##_v8; \
register t9 _n9 __asm(#r9) = _##name##_v9; \
register t10 _n10 __asm(#r10) = _##name##_v10; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9), "rf"(_n10) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9), "rf"(_n10) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \
@ -889,7 +889,7 @@ extern "C" {
register int _d1 __asm("d1"); \
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -900,9 +900,9 @@ extern "C" {
register t8 _n8 __asm(#r8) = _##name##_v8; \
register t9 _n9 __asm(#r9) = _##name##_v9; \
register t10 _n10 __asm(#r10) = _##name##_v10; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_d0), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9), "rf"(_n10) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9), "rf"(_n10) \
: "fp0", "fp1", "cc", "memory"); \
} \
})
@ -926,7 +926,7 @@ extern "C" {
register int _a0 __asm("a0"); \
register int _a1 __asm("a1"); \
register rt _##name##_re __asm("d0"); \
register void *const _##name##_bn __asm("a6") = (bn); \
void *const _##name##_bn = (bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
register t3 _n3 __asm(#r3) = _##name##_v3; \
@ -938,9 +938,9 @@ extern "C" {
register t9 _n9 __asm(#r9) = _##name##_v9; \
register t10 _n10 __asm(#r10) = _##name##_v10; \
register t11 _n11 __asm(#r11) = _##name##_v11; \
__asm volatile ("jsr %%a6@(-"#offs":W)" \
__asm volatile ("move.l %%a6,%%sp@-\n\tmove.l %[libbase],%%a6\n\tjsr %%a6@(-"#offs":W)\n\tmove.l %%sp@+,%%a6" \
: "=r" (_##name##_re), "=r" (_d1), "=r" (_a0), "=r" (_a1) \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9), "rf"(_n10), "rf"(_n11) \
: [libbase] "a" (_##name##_bn), "rf"(_n1), "rf"(_n2), "rf"(_n3), "rf"(_n4), "rf"(_n5), "rf"(_n6), "rf"(_n7), "rf"(_n8), "rf"(_n9), "rf"(_n10), "rf"(_n11) \
: "fp0", "fp1", "cc", "memory"); \
_##name##_re; \
}); \

View File

@ -136,7 +136,6 @@ _start(void)
console_init();
dprintf("ramtop = %p\n", NULL);
cpu_init();
panic("plop %d", 1234);
mmu_init();
// wait a bit to give the user the opportunity to press a key