summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorEric Norum <WENorum@lbl.gov>2005-02-01 17:16:41 +0000
committerEric Norum <WENorum@lbl.gov>2005-02-01 17:16:41 +0000
commit7eab0f78eccceb55e7d7e3a333c7f946cae68075 (patch)
treebf00705ce36cda53cad222878e28012339ea21c2 /c
parent2005-02-01 Ralf Corsepius <ralf.corsepius@rtems.org> (diff)
downloadrtems-7eab0f78eccceb55e7d7e3a333c7f946cae68075.tar.bz2
Add some bootrom system calls.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/ChangeLog5
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/include/bsp.h3
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/network/network.c18
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c31
4 files changed, 40 insertions, 17 deletions
diff --git a/c/src/lib/libbsp/m68k/uC5282/ChangeLog b/c/src/lib/libbsp/m68k/uC5282/ChangeLog
index 2ff8a3e56b..b880bc1a1b 100644
--- a/c/src/lib/libbsp/m68k/uC5282/ChangeLog
+++ b/c/src/lib/libbsp/m68k/uC5282/ChangeLog
@@ -1,5 +1,10 @@
2005-02-01 Eric Norum <norume@aps.anl.gov>
+ * include/bsp.h, network/network.c, startup/bspstart.c: Add some
+ bootprom system calls.
+
+2005-02-01 Eric Norum <norume@aps.anl.gov>
+
* start/start.S, network/network.c: Place FEC buffer descriptors in SRAM.
No longer need to worry about buffer descriptor caching.
diff --git a/c/src/lib/libbsp/m68k/uC5282/include/bsp.h b/c/src/lib/libbsp/m68k/uC5282/include/bsp.h
index adebee3fc8..9d6f8221f0 100644
--- a/c/src/lib/libbsp/m68k/uC5282/include/bsp.h
+++ b/c/src/lib/libbsp/m68k/uC5282/include/bsp.h
@@ -68,6 +68,9 @@ extern rtems_configuration_table BSP_Configuration;
/* functions */
unsigned32 get_CPU_clock_speed(void);
+unsigned const char *uC5282_gethwaddr(int a);
+char *uC5282_getbenv(const char *a);
+
void bsp_cleanup(void);
m68k_isr_entry set_vector(
diff --git a/c/src/lib/libbsp/m68k/uC5282/network/network.c b/c/src/lib/libbsp/m68k/uC5282/network/network.c
index e25f08ca53..7aa700c75e 100644
--- a/c/src/lib/libbsp/m68k/uC5282/network/network.c
+++ b/c/src/lib/libbsp/m68k/uC5282/network/network.c
@@ -139,22 +139,6 @@ mcf5282_bd_allocate(unsigned int count)
return p;
}
-/*
- * Retrieve MAC address from bootloader environment variable area.
- * Parameter is interface number (0 or 1).
- */
-static unsigned char *
-gethwaddr(int a)
-{
- register long __res __asm__ ("%d2") = 12;
- register long __a __asm__ ("%d1") = (long)a;
- __asm__ __volatile__ ("trap #2" \
- : "=g" (__res) \
- : "0" (__res), "d" (__a) \
- : "%d0");
- return (unsigned char *)(__res);
-}
-
static void
mcf5282_fec_initialize_hardware(struct mcf5282_enet_struct *sc)
{
@@ -794,7 +778,7 @@ rtems_fec_driver_attach(struct rtems_bsdnet_ifconfig *config, int attaching )
if (config->hardware_address)
hwaddr = config->hardware_address;
else
- hwaddr = gethwaddr(unitNumber - 1);
+ hwaddr = uC5282_gethwaddr(unitNumber - 1);
printf("%s%d: Ethernet address: %02x:%02x:%02x:%02x:%02x:%02x\n",
unitName, unitNumber,
hwaddr[0], hwaddr[1], hwaddr[2],
diff --git a/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c b/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
index c179b61497..ae47ae3d9c 100644
--- a/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
+++ b/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
@@ -26,6 +26,7 @@
#include <rtems/libio.h>
#include <rtems/libcsupport.h>
#include <string.h>
+#include <errno.h>
/*
* The original table from the application and our copy of it with
@@ -250,3 +251,33 @@ unsigned32 get_CPU_clock_speed(void)
extern char _CPUClockSpeed[];
return( (unsigned32)_CPUClockSpeed);
}
+
+/*
+ * Arcturus routines for getting value from bootloader
+ */
+#define __bsc_return(type, res) \
+do { \
+ if ((unsigned long)(res) >= (unsigned long)(-64)) { \
+ errno = -(res); \
+ res = -1; \
+ } \
+ return (type)(res); \
+} while (0)
+#define _bsc1(type,name,atype,a) \
+type uC5282_##name(atype a) \
+{ \
+ long __res; \
+ register long __a __asm__ ("%d1") = (long)a; \
+ __asm__ __volatile__ ("move.l %0,%%d0\n\t" \
+ "trap #2\n\t" \
+ "move.l %%d0,%0" \
+ : "=d" (__res) \
+ : "0" (__BN_##name), "d" (__a) \
+ : "d0" ); \
+ __bsc_return(type,__res); \
+}
+#define __BN_gethwaddr 12 /* get the hardware address of my interfaces */
+#define __BN_getbenv 14 /* get a bootloader envvar */
+#define __BN_setbenv 15 /* get a bootloader envvar */
+_bsc1(unsigned const char *, gethwaddr, int, a)
+_bsc1(char *, getbenv, const char *, a)