forked from Imagelibrary/rtems
Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
Please find enclosed a patch which enables me to build the bare-bsp for
sh-rtems.
Changes:
1. Add preinstall to libbsp/bare/include/Makefile.in
2. Removed FORCEIT, add preinstall to
libbsp/sh/gensh1/include/Makefile.in
3. Disabled support of set_vector from sh code (shared/setvec.c is still
present but isn't used anymore), set_vector replaced with standard rtems
functions.
Problems still present:
1. Support of spin-delays in bare bsp
2. Proper support of cpu frequency
To configure I used:
<srcdir>/configure \
--target=sh-rtems \
--prefix=<instdir>/sh-bare \
--enable-bare-cpu-model=sh7032 \
--enable-bare-cpu-cflags='-Wall -m1 -DMHZ=20
-DCPU_CONSOLE_DEVNAME="\"/dev/null\""'
--enable-rtemsbsp=bare \
--disable-networking \
--disable-cxx \
--disable-posix \
--disable-tests
IMO, if there are no objections to this patch, a similar approach should
be applied to all CPUs/BSPs (esp. hppa1.1, mips64orion, ppc403, because
they apply set_vector inside of libcpu).
This commit is contained in:
@@ -28,6 +28,7 @@ include $(RTEMS_ROOT)/make/leaf.cfg
|
|||||||
CLEAN_ADDITIONS +=
|
CLEAN_ADDITIONS +=
|
||||||
CLOBBER_ADDITIONS +=
|
CLOBBER_ADDITIONS +=
|
||||||
|
|
||||||
all: $(SRCS)
|
all: preinstall
|
||||||
$(INSTALL) -m 444 $(H_FILES) $(PROJECT_INCLUDE)
|
|
||||||
$(INSTALL) -m 444 $(EQ_FILES) $(PROJECT_INCLUDE)
|
preinstall: $(SRCS)
|
||||||
|
@INSTALL@ $(INSTINCFLAGS) $(H_FILES) $(PROJECT_INCLUDE)
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ include $(RTEMS_ROOT)/make/leaf.cfg
|
|||||||
CLEAN_ADDITIONS +=
|
CLEAN_ADDITIONS +=
|
||||||
CLOBBER_ADDITIONS +=
|
CLOBBER_ADDITIONS +=
|
||||||
|
|
||||||
all: $(SRCS)
|
all: preinstall
|
||||||
$(INSTALL) -m 444 $(H_FILES) $(PROJECT_INCLUDE)
|
|
||||||
$(INSTALL) -m 444 $(EQ_FILES) $(PROJECT_INCLUDE)
|
|
||||||
|
|
||||||
install: all
|
preinstall: $(SRCS)
|
||||||
|
@INSTALL@ $(INSTINCFLAGS) $(H_FILES) $(PROJECT_INCLUDE)
|
||||||
|
|||||||
@@ -55,7 +55,11 @@ extern "C" {
|
|||||||
|
|
||||||
#define MUST_WAIT_FOR_INTERRUPT 0
|
#define MUST_WAIT_FOR_INTERRUPT 0
|
||||||
|
|
||||||
#define Install_tm27_vector( handler ) set_vector( (handler), 0, 1 )
|
#define Install_tm27_vector( handler ) \
|
||||||
|
{ \
|
||||||
|
rtems_isr_entry ignored ; \
|
||||||
|
rtems_interrupt_catch( (handler), 0, &ignored ) ; \
|
||||||
|
}
|
||||||
|
|
||||||
#define Cause_tm27_intr()
|
#define Cause_tm27_intr()
|
||||||
|
|
||||||
@@ -110,12 +114,14 @@ extern void bsp_cleanup( void );
|
|||||||
/*
|
/*
|
||||||
* FIXME: Should this go to libcpu/sh/sh7032 ?
|
* FIXME: Should this go to libcpu/sh/sh7032 ?
|
||||||
*/
|
*/
|
||||||
|
#if 0
|
||||||
/* functions */
|
/* functions */
|
||||||
sh_isr_entry set_vector( /* returns old vector */
|
sh_isr_entry set_vector( /* returns old vector */
|
||||||
rtems_isr_entry handler, /* isr routine */
|
rtems_isr_entry handler, /* isr routine */
|
||||||
rtems_vector_number vector, /* vector number */
|
rtems_vector_number vector, /* vector number */
|
||||||
int type /* RTEMS or RAW intr */
|
int type /* RTEMS or RAW intr */
|
||||||
);
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ PROJECT_ROOT = @PROJECT_ROOT@
|
|||||||
PGM=${ARCH}/startup.rel
|
PGM=${ARCH}/startup.rel
|
||||||
|
|
||||||
# C source names, if any, go here -- minus the .c
|
# C source names, if any, go here -- minus the .c
|
||||||
C_PIECES=bsplibc bsppost bspstart bspclean sbrk setvec main
|
C_PIECES=bsplibc bsppost bspstart bspclean sbrk main
|
||||||
C_FILES=$(C_PIECES:%=%.c)
|
C_FILES=$(C_PIECES:%=%.c)
|
||||||
C_O_FILES=$(C_PIECES:%=${ARCH}/%.o)
|
C_O_FILES=$(C_PIECES:%=${ARCH}/%.o)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
/* set_vector
|
/* set_vector
|
||||||
|
*
|
||||||
|
* NOTE: This function is considered OBSOLETE and may vanish soon.
|
||||||
|
* Calls to set_vector should be replaced by calls to
|
||||||
|
* rtems_interrupt_catch or _CPU_ISR_install_raw_handler.
|
||||||
*
|
*
|
||||||
* This routine installs an interrupt vector on the target Board/CPU.
|
* This routine installs an interrupt vector on the target Board/CPU.
|
||||||
* This routine is allowed to be as board dependent as necessary.
|
* This routine is allowed to be as board dependent as necessary.
|
||||||
@@ -52,4 +56,3 @@ sh_isr_entry set_vector( /* returns old vector */
|
|||||||
|
|
||||||
return previous_isr;
|
return previous_isr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ void Install_clock(
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if ( BSP_Configuration.ticks_per_timeslice ) {
|
if ( BSP_Configuration.ticks_per_timeslice ) {
|
||||||
Old_ticker = (rtems_isr_entry) set_vector( Clock_isr, CLOCK_VECTOR, 1 );
|
rtems_interrupt_catch( Clock_isr, CLOCK_VECTOR, &Old_ticker );
|
||||||
/*
|
/*
|
||||||
* Hardware specific initialize goes here
|
* Hardware specific initialize goes here
|
||||||
*/
|
*/
|
||||||
@@ -280,8 +280,10 @@ rtems_device_driver Clock_control(
|
|||||||
}
|
}
|
||||||
else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
|
else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
|
||||||
{
|
{
|
||||||
|
rtems_isr_entry ignored ;
|
||||||
rtems_interrupt_disable( isrlevel );
|
rtems_interrupt_disable( isrlevel );
|
||||||
(void) set_vector( args->buffer, CLOCK_VECTOR, 1 );
|
rtems_interrupt_catch( args->buffer, CLOCK_VECTOR, &ignored );
|
||||||
|
|
||||||
rtems_interrupt_enable( isrlevel );
|
rtems_interrupt_enable( isrlevel );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,3 @@ all: install
|
|||||||
install:
|
install:
|
||||||
test -d $(PROJECT_INCLUDE)/sh || $(MKDIR) $(PROJECT_INCLUDE)/sh
|
test -d $(PROJECT_INCLUDE)/sh || $(MKDIR) $(PROJECT_INCLUDE)/sh
|
||||||
$(INSTALL) -m 444 $(H_FILES) $(PROJECT_INCLUDE)/sh
|
$(INSTALL) -m 444 $(H_FILES) $(PROJECT_INCLUDE)/sh
|
||||||
|
|
||||||
all: FORCEIT
|
|
||||||
cd ../../../../libbsp/$(RTEMS_CPU)/$(RTEMS_BSP)/include; $(MAKE) all
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ void Timer_initialize( void )
|
|||||||
rtems_unsigned8 temp8;
|
rtems_unsigned8 temp8;
|
||||||
rtems_unsigned16 temp16;
|
rtems_unsigned16 temp16;
|
||||||
rtems_unsigned32 level;
|
rtems_unsigned32 level;
|
||||||
rtems_isr* ignored;
|
rtems_isr *ignored;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Timer has never overflowed. This may not be necessary on some
|
* Timer has never overflowed. This may not be necessary on some
|
||||||
@@ -117,7 +117,7 @@ void Timer_initialize( void )
|
|||||||
write16( temp16, INTC_IPRC);
|
write16( temp16, INTC_IPRC);
|
||||||
|
|
||||||
/* initialize ISR */
|
/* initialize ISR */
|
||||||
ignored = set_vector( timerisr, ITU1_VECTOR, 0);
|
_CPU_ISR_install_raw_handler( ITU1_VECTOR, timerisr, &ignored );
|
||||||
_CPU_ISR_Enable( level);
|
_CPU_ISR_Enable( level);
|
||||||
|
|
||||||
/* start timer 1 */
|
/* start timer 1 */
|
||||||
|
|||||||
Reference in New Issue
Block a user