summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k
diff options
context:
space:
mode:
authorEric Norum <WENorum@lbl.gov>2005-02-10 22:22:59 +0000
committerEric Norum <WENorum@lbl.gov>2005-02-10 22:22:59 +0000
commit16ae480f42df804b0a03901fd7a3be287e7d3c9a (patch)
tree491a35b86bd6901198ce8292d7adec93df68c033 /c/src/lib/libbsp/m68k
parent2005-02-10 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-16ae480f42df804b0a03901fd7a3be287e7d3c9a.tar.bz2
Name changes.
Add some more system calls.
Diffstat (limited to 'c/src/lib/libbsp/m68k')
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/include/bsp.h16
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/network/network.c2
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c23
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