[haiku-commits] r39074 - haiku/trunk/src/system/boot/platform/amiga_m68k

  • From: revol@xxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 23 Oct 2010 17:53:51 +0200 (CEST)

Author: mmu_man
Date: 2010-10-23 17:53:51 +0200 (Sat, 23 Oct 2010)
New Revision: 39074
Changeset: http://dev.haiku-os.org/changeset/39074

Modified:
   haiku/trunk/src/system/boot/platform/amiga_m68k/console.cpp
   haiku/trunk/src/system/boot/platform/amiga_m68k/rom_calls.h
   haiku/trunk/src/system/boot/platform/amiga_m68k/start.cpp
Log:
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 !!!!


Modified: haiku/trunk/src/system/boot/platform/amiga_m68k/console.cpp
===================================================================
--- haiku/trunk/src/system/boot/platform/amiga_m68k/console.cpp 2010-10-23 
15:49:17 UTC (rev 39073)
+++ haiku/trunk/src/system/boot/platform/amiga_m68k/console.cpp 2010-10-23 
15:53:51 UTC (rev 39074)
@@ -70,9 +70,10 @@
                        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 @@
        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;
 }
 

Modified: haiku/trunk/src/system/boot/platform/amiga_m68k/rom_calls.h
===================================================================
--- haiku/trunk/src/system/boot/platform/amiga_m68k/rom_calls.h 2010-10-23 
15:49:17 UTC (rev 39073)
+++ haiku/trunk/src/system/boot/platform/amiga_m68k/rom_calls.h 2010-10-23 
15:53:51 UTC (rev 39074)
@@ -43,10 +43,10 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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 @@
       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;                                            \
    });                                                         \

Modified: haiku/trunk/src/system/boot/platform/amiga_m68k/start.cpp
===================================================================
--- haiku/trunk/src/system/boot/platform/amiga_m68k/start.cpp   2010-10-23 
15:49:17 UTC (rev 39073)
+++ haiku/trunk/src/system/boot/platform/amiga_m68k/start.cpp   2010-10-23 
15:53:51 UTC (rev 39074)
@@ -136,7 +136,6 @@
        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


Other related posts:

  • » [haiku-commits] r39074 - haiku/trunk/src/system/boot/platform/amiga_m68k - revol