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


Cristiano Ligieri Pereira wrote:
> 
> 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
>

Christiano,  

  You likely have built newlib incorrectly.  See newlib/configure.host.  The
default
is to define ARM_RDI_MONITOR which activates the Angel code. 

#       newlib_cflags="${newlib_cflags} -DARM_RDP_MONITOR"
        newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR"
        ;;

This means that instead of the SWI codes you are quoting above, you will get the
AngelSWI_Reason_xxx codes which follow.  The value for write is 0x5 which
matches
what sid is expecting.

  You should verify that you have not changed these lines and if so, you should
clean your newlib build and reconfigure/build again.

-- Jeff J.
 
> 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]