* armos.c (ARMul_OSHandleSWI): Handle the RedBoot system
authorDaniel Jacobowitz <drow@false.org>
Thu, 2 Feb 2006 01:48:16 +0000 (01:48 +0000)
committerDaniel Jacobowitz <drow@false.org>
Thu, 2 Feb 2006 01:48:16 +0000 (01:48 +0000)
call meminfo. Return ENOSYS for unhandled RedBoot syscalls.

sim/arm/ChangeLog
sim/arm/armos.c

index 84bdf6ecf65360c9d57ca07180c9b97731ea03ca..df88ef1c42ab2514ceb0e041fe097d1821e12935 100644 (file)
@@ -1,3 +1,8 @@
+2006-02-01  Shaun Jackman  <sjackman@gmail.com>
+
+       * armos.c (ARMul_OSHandleSWI): Handle the RedBoot system
+       call meminfo. Return ENOSYS for unhandled RedBoot syscalls.
+
 2005-11-23  Mark Mitchell  <mark@codesourcery.com>
 
        * wrapper.c (gdb/signals.h): Include it.
@@ -7,7 +12,7 @@
 
 2005-11-16  Shaun Jackman  <sjackman@gmail.com>
 
-       * sim/arm/armos.c: Include limits.h
+       * armos.c: Include limits.h
        (unlink): Remove this macro. It is unused in this file and
        conflicts with sim_callback->unlink.
        (PATH_MAX): Define as 1024 if not already defined.
index 5f5ead7e640e1ca8edaeb1a1c8dcec0a79fd24e1..8e346c73784c18eacdfa7d4ac5b227c140a3a69e 100644 (file)
@@ -859,9 +859,26 @@ ARMul_OSHandleSWI (ARMul_State * state, ARMword number)
            case 18: /* Time.  */
              sim_callback->printf_filtered
                (sim_callback,
-                "sim: unhandled RedBoot syscall '%d' encountered - ignoring\n",
+                "sim: unhandled RedBoot syscall `%d' encountered - "
+                "returning ENOSYS\n",
                 state->Reg[0]);
-             return FALSE;
+             state->Reg[0] = -1;
+             OSptr->ErrorNo = cb_host_to_target_errno
+               (sim_callback, ENOSYS);
+             break;
+           case 1001: /* Meminfo. */
+             {
+               ARMword totmem = state->Reg[1],
+                       topmem = state->Reg[2];
+               ARMword stack = state->MemSize > 0
+                 ? state->MemSize : ADDRUSERSTACK;
+               if (totmem != 0)
+                 ARMul_WriteWord (state, totmem, stack);
+               if (topmem != 0)
+                 ARMul_WriteWord (state, topmem, stack);
+               state->Reg[0] = 0;
+               break;
+             }
 
            default:
              sim_callback->printf_filtered
This page took 0.027785 seconds and 4 git commands to generate.