]> Joshua Wise's Git repositories - firearm.git/blobdiff - tests/testbench.c
Issue: AUTORESET.
[firearm.git] / tests / testbench.c
index f8366b418301790034af872d82df7b9b8defe459..e708df676b6169b0aa4e116e4b8c298b4e8be0bc 100644 (file)
@@ -1,5 +1,14 @@
 extern void putc(unsigned char c);
 
+int serial_getc (void)
+{
+       int c;
+       do
+               asm volatile("mrc 5, 0, %0, c1, c1, 1" : "=r"(c));
+       while (!(c & 0x100));
+       return c & 0xFF;
+}
+
 void puts(unsigned char *s)
 {
        while (*s)
@@ -19,6 +28,7 @@ void puthex(unsigned int x)
 #include "ack.c"
 #include "j4cbo.c"
 #include "corecurse.c"
+#include "miniblarg.c"
 
 int fact(int n)
 {
@@ -42,8 +52,11 @@ struct tests {
 };
 
 extern int ldm_bonehead();
+
 #ifndef X86
-__asm__(
+int shnasto()
+{
+__asm__ volatile(
 ".globl ldm_bonehead\n"
 "ldm_bonehead:;"
 "mov r3, lr;"
@@ -59,8 +72,9 @@ __asm__(
 "nop;"
 "mov pc, r3\n;"
 "1:\n"
-"ldr r2, =0x00002FE0;"
-"ldr r1, =0x0000004C;"
+"mov r2, #0x00002F00;"
+"orr r2, r2, #0x000000E0;"
+"mov r1, #0x0000004C;"
 "mov ip, sp;"
 "stmdb sp!, {fp, ip, lr, pc};"
 "mov r0, #0x00880000;"
@@ -69,7 +83,9 @@ __asm__(
 "nop;"
 "nop;\n"
 );
+}
 #endif
+
 void ldm_tester()
 {
 #ifdef X86
@@ -91,6 +107,7 @@ struct tests tlist[] = {
        {"fact", facttest},
        {"j4cbo", j4cbo},
        {"ack", acktest},
+       {"miniblarg", testmain},
        {"corecurse", corecurse},
        {0, 0}};
 
@@ -107,7 +124,9 @@ int main()
                puts(": ");
                t->test();
        }
-       puts("Done!\n");
+       puts("Done! Echoing characters.\n");
        
+       while (1)
+               putc(serial_getc());
        return 0;
 }
This page took 0.026741 seconds and 4 git commands to generate.