Changeset 12993b3 in rtems


Ignore:
Timestamp:
Feb 2, 2005, 2:17:26 PM (15 years ago)
Author:
Eric Norum <WENorum@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
98653c6
Parents:
dd2f891
Message:

Clean up bootloader syscall handling.

Location:
c/src/lib/libbsp/m68k/uC5282
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/uC5282/include/bsp.h

    rdd2f891 r12993b3  
    7070unsigned32 get_CPU_clock_speed(void);
    7171unsigned const char *uC5282_gethwaddr(int a);
    72 char *uC5282_getbenv(const char *a);
     72const char *uC5282_getbenv(const char *a);
    7373
    7474void bsp_cleanup(void);
  • c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c

    rdd2f891 r12993b3  
    254254
    255255/*
    256  * Arcturus routines for getting value from bootloader
    257  */
    258 #define __bsc_return(type, res) \
    259 do { \
    260    if ((unsigned long)(res) >= (unsigned long)(-64)) { \
    261       errno = -(res); \
    262       res = -1; \
    263    } \
    264    return (type)(res); \
     256 * Arcturus bootloader system calls
     257 */
     258#define syscall_return(type, ret)                      \
     259do {                                                   \
     260   if ((unsigned long)(ret) >= (unsigned long)(-64)) { \
     261      errno = -(ret);                                  \
     262      ret = -1;                                        \
     263   }                                                   \
     264   return (type)(ret);                                \
    265265} while (0)
    266 #define _bsc1(type,name,atype,a) \
    267 type uC5282_##name(atype a) \
    268 { \
    269    long __res; \
    270    register long __a __asm__ ("%d1") = (long)a; \
    271    __asm__ __volatile__ ("move.l %0,%%d0\n\t"   \
    272                          "trap #2\n\t"          \
    273                          "move.l %%d0,%0"       \
    274                          : "=d" (__res)         \
    275                          : "0" (__BN_##name), "d" (__a) \
    276                          : "d0" ); \
    277    __bsc_return(type,__res); \
    278 }
    279 #define __BN_gethwaddr    12 /* get the hardware address of my interfaces */
    280 #define __BN_getbenv      14 /* get a bootloader envvar */
    281 #define __BN_setbenv      15 /* get a bootloader envvar */
    282 _bsc1(unsigned const char *, gethwaddr, int, a)
    283 _bsc1(char *, getbenv, const char *, a)
     266#define syscall_1(type,name,d1type,d1)                      \
     267type uC5282_##name(d1type d1)                              \
     268{                                                           \
     269   long ret;                                                \
     270   register long __d1 __asm__ ("%d1") = (long)d1;          \
     271   __asm__ __volatile__ ("move.l %0,%%d0\n\t"               \
     272                         "trap #2\n\t"                      \
     273                         "move.l %%d0,%0"                   \
     274                         : "=g" (ret)                       \
     275                         : "d" (SysCode_##name), "d" (__d1) \
     276                         : "d0" );                          \
     277   syscall_return(type,ret);                                \
     278}
     279#define SysCode_gethwaddr    12 /* get hardware address */
     280#define SysCode_getbenv      14 /* get bootloader environment variable */
     281#define SysCode_setbenv      15 /* get bootloader environment variable */
     282syscall_1(unsigned const char *, gethwaddr, int, a)
     283syscall_1(const char *, getbenv, const char *, a)
Note: See TracChangeset for help on using the changeset viewer.