From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2716 invoked by alias); 14 Dec 2005 18:40:33 -0000 Received: (qmail 2707 invoked by uid 22791); 14 Dec 2005 18:40:32 -0000 X-Spam-Check-By: sourceware.org Received: from zproxy.gmail.com (HELO zproxy.gmail.com) (64.233.162.200) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 14 Dec 2005 18:40:31 +0000 Received: by zproxy.gmail.com with SMTP id l1so203416nzf for ; Wed, 14 Dec 2005 10:40:29 -0800 (PST) Received: by 10.64.10.15 with SMTP id 15mr669609qbj; Wed, 14 Dec 2005 10:40:29 -0800 (PST) Received: by 10.64.253.2 with HTTP; Wed, 14 Dec 2005 10:40:28 -0800 (PST) Message-ID: <7f45d9390512141040m6d43725ag@mail.gmail.com> Date: Sat, 17 Dec 2005 22:46:00 -0000 From: Shaun Jackman Reply-To: Shaun Jackman To: gdb-patches@sources.redhat.com Subject: sim/arm RedBoot meminfo syscall [PATCH] MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2005-12/txt/msg00228.txt.bz2 This patch implements the RedBoot meminfo syscall. In addition, rather than ignoring unhandled syscalls, it sets errno to ENOSYS and returns -1. This makes it possible to run "Hello, world!" compiled using newlib and a RedBoot libgloss. Cheers, Shaun 2005-12-14 Shaun Jackman * sim/arm/armos.c (ARMul_OSHandleSWI): Handle the RedBoot system call meminfo. Return ENOSYS for unhandled RedBoot syscalls. Index: armos.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/sim/arm/armos.c,v retrieving revision 1.23 diff -u -r1.23 armos.c --- armos.c 17 Nov 2005 04:23:03 -0000 1.23 +++ armos.c 14 Dec 2005 18:36:19 -0000 @@ -859,9 +859,26 @@ 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] =3D -1; + OSptr->ErrorNo =3D cb_host_to_target_errno + (sim_callback, ENOSYS); + break; + case 1001: /* Meminfo. */ + { + ARMword totmem =3D state->Reg[1], + topmem =3D state->Reg[2]; + ARMword stack =3D state->MemSize > 0 + ? state->MemSize : ADDRUSERSTACK; + if (totmem !=3D 0) + ARMul_WriteWord (state, totmem, stack); + if (topmem !=3D 0) + ARMul_WriteWord (state, topmem, stack); + state->Reg[0] =3D 0; + break; + } default: sim_callback->printf_filtered