From 16ae480f42df804b0a03901fd7a3be287e7d3c9a Mon Sep 17 00:00:00 2001 From: Eric Norum Date: Thu, 10 Feb 2005 22:22:59 +0000 Subject: Name changes. Add some more system calls. --- c/src/lib/libbsp/m68k/uC5282/include/bsp.h | 16 ++++++++++++++-- c/src/lib/libbsp/m68k/uC5282/network/network.c | 2 +- c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c | 23 ++++++++++++++++++++--- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/c/src/lib/libbsp/m68k/uC5282/include/bsp.h b/c/src/lib/libbsp/m68k/uC5282/include/bsp.h index 634bfea609..1720bea590 100644 --- a/c/src/lib/libbsp/m68k/uC5282/include/bsp.h +++ b/c/src/lib/libbsp/m68k/uC5282/include/bsp.h @@ -67,10 +67,22 @@ extern rtems_configuration_table BSP_Configuration; /* functions */ +typedef struct { + unsigned int l; + void *v; +} bsp_mnode_t; + +#define RTEMS_BSP_PGM_ERASE_FIRST 0x1 +#define RTEMS_BSP_PGM_RESET_AFTER 0x2 +#define RTEMS_BSP_PGM_EXEC_AFTER 0x4 +#define RTEMS_BSP_PGM_HALT_AFTER 0x8 + uint32_t bsp_get_CPU_clock_speed(void); rtems_status_code bsp_allocate_interrupt(int level, int priority); -unsigned const char *uC5282_gethwaddr(int a); -const char *uC5282_getbenv(const char *a); +int bsp_reset(int flags); +int bsp_program(bsp_mnode_t *chain, int flags); +unsigned const char *bsp_gethwaddr(int a); +const char *bsp_getbenv(const char *a); void bsp_cleanup(void); diff --git a/c/src/lib/libbsp/m68k/uC5282/network/network.c b/c/src/lib/libbsp/m68k/uC5282/network/network.c index 003980d758..f192560eb8 100644 --- a/c/src/lib/libbsp/m68k/uC5282/network/network.c +++ b/c/src/lib/libbsp/m68k/uC5282/network/network.c @@ -808,7 +808,7 @@ rtems_fec_driver_attach(struct rtems_bsdnet_ifconfig *config, int attaching ) if (config->hardware_address) { hwaddr = config->hardware_address; } - else if ((hwaddr = uC5282_gethwaddr(unitNumber - 1)) == NULL) { + else if ((hwaddr = bsp_gethwaddr(unitNumber - 1)) == NULL) { /* Locally-administered address */ static const char defaultAddress[ETHER_ADDR_LEN] = { 0x06, 'R', 'T', 'E', 'M', 'S'}; diff --git a/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c b/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c index e2592444c1..a8af52f63a 100644 --- a/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c @@ -277,11 +277,11 @@ do { \ return (type)(ret); \ } while (0) #define syscall_1(type,name,d1type,d1) \ -type uC5282_##name(d1type d1) \ +type bsp_##name(d1type d1) \ { \ long ret; \ register long __d1 __asm__ ("%d1") = (long)d1; \ - __asm__ __volatile__ ("move.l %0,%%d0\n\t" \ + __asm__ __volatile__ ("move.l %1,%%d0\n\t" \ "trap #2\n\t" \ "move.l %%d0,%0" \ : "=g" (ret) \ @@ -289,12 +289,29 @@ type uC5282_##name(d1type d1) \ : "d0" ); \ syscall_return(type,ret); \ } +#define syscall_2(type,name,d1type,d1,d2type,d2) \ +type bsp_##name(d1type d1, d2type d2) \ +{ \ + long ret; \ + register long __d1 __asm__ ("%d1") = (long)d1; \ + register long __d2 __asm__ ("%d2") = (long)d2; \ + __asm__ __volatile__ ("move.l %1,%%d0\n\t" \ + "trap #2\n\t" \ + "move.l %%d0,%0" \ + : "=g" (ret) \ + : "d" (SysCode_##name), "d" (__d1),\ + "d" (__d2) \ + : "d0" ); \ + syscall_return(type,ret); \ +} +#define SysCode_reset 0 /* reset */ +#define SysCode_program 5 /* program flash memory */ #define SysCode_gethwaddr 12 /* get hardware address */ #define SysCode_getbenv 14 /* get bootloader environment variable */ #define SysCode_setbenv 15 /* get bootloader environment variable */ syscall_1(unsigned const char *, gethwaddr, int, a) syscall_1(const char *, getbenv, const char *, a) - +syscall_2(int, program, bsp_mnode_t *, chain, int, flags) /* * 'Extended BSP' routines -- cgit v1.2.3