From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cristiano Ligieri Pereira To: Ben Elliston Cc: sid@sources.redhat.com Subject: Re: Running the hello.c example Date: Sun, 18 Nov 2001 19:11:00 -0000 Message-ID: References: <15352.18692.574531.668417@scooby.brisbane.redhat.com> X-SW-Source: 2001-q4/msg00035.html Message-ID: <20011118191100.Mdig3Mh1ecLM8mGbnShZDGh1gfQAjz3ry39wo7LIGTM@z> 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 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 >