RTEMS: Drop dependency on bspExt

integrate the polling implementation of bspExt.
This commit is contained in:
Michael Davidsaver
2017-05-06 21:24:17 -04:00
parent 31ade32004
commit c0886b3037
7 changed files with 52 additions and 17 deletions

View File

@ -128,7 +128,7 @@ MOD_SYS_LDFLAGS += $(CPU_CFLAGS) -Wl,-r -nostdlib
# Do not link against libraries which are part of the Generic Image
GESYS_LIBS += -lgcc
GESYS_LIBS += -lc -lm -lrtemscpu -lrtemsbsp -lrtems++ -lbspExt
GESYS_LIBS += -lc -lm -lrtemscpu -lrtemsbsp -lrtems++
GESYS_LIBS += -lcexp -ltecla_r -lspencer_regexp -lpmelf -lpmbfd
GESYS_LIBS += -lnfs -ltelnetd -lrtems-gdb-stub

View File

@ -16,8 +16,6 @@ ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
OP_SYS_LDLIBS += -lbspExt #does not use posix stuff ... want to ignore
MUNCH_SUFFIX = .boot
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
define MUNCH_CMD

View File

@ -11,8 +11,6 @@ GNU_TARGET = powerpc-rtems
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
ARCH_DEP_CFLAGS += -DHAVE_PPCBUG
OP_SYS_LDLIBS += -lbspExt
MUNCH_SUFFIX = .boot
define MUNCH_CMD
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary -R .comment -S $< rtems

View File

@ -20,6 +20,4 @@ define MUNCH_CMD
rm -f rtems.gz
endef
OP_SYS_LDLIBS += -lbspExt
include $(CONFIG)/os/CONFIG.Common.RTEMS

View File

@ -13,8 +13,6 @@ ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
OP_SYS_LDLIBS += -lbspExt
MUNCH_SUFFIX = .boot
define MUNCH_CMD
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@

View File

@ -14,13 +14,9 @@ ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
ARCH_DEP_CFLAGS += -DBSP_NVRAM_BASE_ADDR=0xf1110000
OP_SYS_LDLIBS += -lbspExt
MUNCH_SUFFIX = .boot
define MUNCH_CMD
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@
endef
OP_SYS_LDLIBS += -lbspExt
include $(CONFIG)/os/CONFIG.Common.RTEMS

View File

@ -19,12 +19,12 @@
#include <bsp.h>
#include "devLibVME.h"
#include <epicsInterrupt.h>
#include <epicsMMIO.h>
#if defined(__PPC__) || defined(__mcf528x__)
#if defined(__PPC__)
#include <bsp/VME.h>
#include <bsp/bspExt.h>
#endif
@ -126,8 +126,7 @@ static long
rtemsDevInit(void)
{
/* assume the vme bridge has been initialized by bsp */
/* init BSP extensions [memProbe etc.] */
return bspExtInit();
return 0;
}
/*
@ -245,11 +244,59 @@ static long rtemsDevMapAddr (epicsAddressType addrType, unsigned options,
return 0;
}
static
rtems_status_code bspExtMemProbe(void *addr, int write, int size, void *pval)
{
rtems_interrupt_level flags;
rtems_status_code ret = RTEMS_SUCCESSFUL;
epicsUInt32 val;
/* bspExt allows caller to write uninitialized values, we don't */
if(write && !pval)
return RTEMS_INVALID_NUMBER;
switch(size) {
case 1:
case 2:
case 4:
break;
default:
return RTEMS_INVALID_SIZE;
}
if(write)
memcpy(&val, pval, size);
rtems_interrupt_disable(flags);
_BSP_clear_hostbridge_errors(0,1);
if(!write) {
switch(size) {
case 1: val = ioread8(addr)<<24; break;
case 2: val = nat_ioread16(addr)<<16; break;
case 4: val = nat_ioread32(addr); break;
}
} else {
switch(size) {
case 1: iowrite8(addr, val>>24); break;
case 2: nat_iowrite16(addr, val>>16); break;
case 4: nat_iowrite32(addr, val); break;
}
}
ret = _BSP_clear_hostbridge_errors(0,1);
rtems_interrupt_enable(flags);
if(!write && pval)
memcpy(pval, &val, size);
return ret;
}
/*
* a bus error safe "wordSize" read at the specified address which returns
* unsuccessful status if the device isnt present
*/
rtems_status_code bspExtMemProbe(void *addr, int write, int size, void *pval);
static long rtemsDevReadProbe (unsigned wordSize, volatile const void *ptr, void *pValue)
{
long status;