This is the mail archive of the sid@sources.redhat.com mailing list for the SID project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]