This is the mail archive of the
sid@sources.redhat.com
mailing list for the SID project.
Re: Running the hello.c example
- From: Cristiano Ligieri Pereira <cpereira at ics dot uci dot edu>
- To: Ben Elliston <bje at redhat dot com>
- Cc: sid at sources dot redhat dot com
- Date: Sun, 18 Nov 2001 19:11:17 -0800 (PST)
- Subject: Re: Running the hello.c example
These are the number in the file newlib/arm-elf/newlib/libc/sys/arm/swi.h:
/**************************************************************************\
* SWI numbers *
\**************************************************************************/
#define SWI_WriteC 0x0
#define SWI_Write0 0x2
#define SWI_ReadC 0x4
#define SWI_CLI 0x5
#define SWI_GetEnv 0x10
#define SWI_Exit 0x11
#define SWI_EnterOS 0x16
#define SWI_GetErrno 0x60
#define SWI_Clock 0x61
#define SWI_Time 0x63
#define SWI_Remove 0x64
#define SWI_Rename 0x65
#define SWI_Open 0x66
#define SWI_Close 0x68
#define SWI_Write 0x69
#define SWI_Read 0x6a
#define SWI_Seek 0x6b
#define SWI_Flen 0x6c
#define SWI_IsTTY 0x6e
#define SWI_TmpNam 0x6f
#define SWI_InstallHandler 0x70
and these are the numbers on the file sid/src/sid/component/gloss/angel.h:
enum syscalls /* See also: newlib/libc/sys/arm/swi.h AngelSWI_Reason_*
*/
{
syscall_open = 0x1,
syscall_close = 0x2,
syscall_writec = 0x3,
syscall_write0 = 0x4,
syscall_write = 0x5,
syscall_read = 0x6,
syscall_readc = 0x7,
syscall_iserror,
syscall_istty = 0x9,
syscall_seek = 0xA,
syscall_flen = 0xC,
syscall_tmpnam = 0xD,
syscall_remove = 0xE,
syscall_rename = 0xF,
syscall_clock = 0x10,
syscall_time = 0x11,
syscall_system = 0x12,
syscall_errno = 0x13,
syscall_get_cmdline = 0x15,
syscall_heapinfo = 0x16,
syscall_report_exception = 0x18
};
If I understood well these number should match, but this is not
happening... Am I compiling the wrong verstion of newlib?
Thanks,
Cristiano.
------------------------------------------------------------
Cristiano Ligieri Pereira - http://www.ics.uci.edu/~cpereira
On Mon, 19 Nov 2001, Ben Elliston wrote:
> Hi.
>
> >>>>> "Cristiano" == Cristiano Ligieri Pereira <cpereira@ics.uci.edu> writes:
>
> Cristiano> 0x8764: SWI Fault (software, 0x69) pc=0x8764
>
> Cristiano> and this is the piece of the original code where the error is happening:
>
> Cristiano> 00008758 <_swiwrite>:
> Cristiano> 8758: e1a0c00d mov ip, sp
> Cristiano> 875c: e92dd800 stmdb sp!, {fp, ip, lr, pc}
> Cristiano> 8760: e24cb004 sub fp, ip, #4 ; 0x4
> Cristiano> 8764: ef000069 swi 0x00000069
> Cristiano> 8768: e91ba800 ldmdb fp, {fp, sp, pc}
>
> Cristiano> SWI is software interrupt, right? Looks like I'm trying to execution
> Cristiano> function 0x69 that doesn't exist? is this right?
>
> I think you're on the right track.
>
> Cristiano> Why would this happen? This is such a simple example. And one more
> Cristiano> question..., which configuration is being used (besides ARM processor)
> Cristiano> once I haven't specified any configuration file, let alone created some
> Cristiano> configuration.
>
> The default ARM system configuration in sid uses the ARM Angel monitor
> and its associated syscall conventions. My guess is that your build
> of newlib is targetting some other ARM target where swi 69 is the
> means by which characters are written.
>
> Ben
>