Changeset 8af3643 in rtems


Ignore:
Timestamp:
Feb 12, 2005, 10:20:28 PM (15 years ago)
Author:
Eric Norum <WENorum@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
008c4b5
Parents:
93646c6a
Message:

Add some more system calls.
Improve in-line assembly.

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

Legend:

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

    r93646c6a r8af3643  
    8484unsigned const char *bsp_gethwaddr(int a);
    8585const char *bsp_getbenv(const char *a);
     86int bsp_flash_erase_range(volatile unsigned short *flashptr, int start, int end);
     87int bsp_flash_write_range(volatile unsigned short *flashptr, bsp_mnode_t *chain, int offset);
    8688
    8789void bsp_cleanup(void);
  • c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c

    r93646c6a r8af3643  
    278278} while (0)
    279279#define syscall_1(type,name,d1type,d1)                      \
    280 type bsp_##name(d1type d1)                               \
     280type bsp_##name(d1type d1)                                  \
    281281{                                                           \
    282282   long ret;                                                \
     
    286286                         "move.l %%d0,%0"                   \
    287287                         : "=g" (ret)                       \
    288                          : "d" (SysCode_##name), "d" (__d1) \
     288                         : "i" (SysCode_##name), "d" (__d1) \
    289289                         : "d0" );                          \
    290290   syscall_return(type,ret);                                \
    291291}
    292292#define syscall_2(type,name,d1type,d1,d2type,d2)            \
    293 type bsp_##name(d1type d1, d2type d2)                    \
     293type bsp_##name(d1type d1, d2type d2)                       \
    294294{                                                           \
    295295   long ret;                                                \
     
    300300                         "move.l %%d0,%0"                   \
    301301                         : "=g" (ret)                       \
    302                          : "d" (SysCode_##name), "d" (__d1),\
     302                         : "i" (SysCode_##name), "d" (__d1),\
    303303                                                 "d" (__d2) \
    304304                         : "d0" );                          \
    305305   syscall_return(type,ret);                                \
    306306}
    307 #define SysCode_reset         0 /* reset */
    308 #define SysCode_program       5 /* program flash memory */
    309 #define SysCode_gethwaddr    12 /* get hardware address */
    310 #define SysCode_getbenv      14 /* get bootloader environment variable */
    311 #define SysCode_setbenv      15 /* get bootloader environment variable */
     307#define syscall_3(type,name,d1type,d1,d2type,d2,d3type,d3)  \
     308type bsp_##name(d1type d1, d2type d2, d3type d3)            \
     309{                                                           \
     310   long ret;                                                \
     311   register long __d1 __asm__ ("%d1") = (long)d1;           \
     312   register long __d2 __asm__ ("%d2") = (long)d2;           \
     313   register long __d3 __asm__ ("%d3") = (long)d3;           \
     314   __asm__ __volatile__ ("move.l %1,%%d0\n\t"               \
     315                         "trap #2\n\t"                      \
     316                         "move.l %%d0,%0"                   \
     317                         : "=g" (ret)                       \
     318                         : "i" (SysCode_##name), "d" (__d1),\
     319                                                 "d" (__d2),\
     320                                                 "d" (__d3) \
     321                         : "d0" );                          \
     322   syscall_return(type,ret);                                \
     323}
     324#define SysCode_reset              0 /* reset */
     325#define SysCode_program            5 /* program flash memory */
     326#define SysCode_gethwaddr         12 /* get hardware address */
     327#define SysCode_getbenv           14 /* get bootloader environment variable */
     328#define SysCode_setbenv           15 /* get bootloader environment variable */
     329#define SysCode_flash_erase_range 19 /* erase a section of flash */
     330#define SysCode_flash_write_range 20 /* write a section of flash */
    312331syscall_1(unsigned const char *, gethwaddr, int, a)
    313332syscall_1(const char *, getbenv, const char *, a)
    314333syscall_2(int, program, bsp_mnode_t *, chain, int, flags)
     334syscall_3(int, flash_erase_range, volatile unsigned short *, flashptr, int, start, int, end);
     335syscall_3(int, flash_write_range, volatile unsigned short *, flashptr, bsp_mnode_t *, chain, int, offset);
    315336
    316337/*
Note: See TracChangeset for help on using the changeset viewer.