forked from Imagelibrary/rtems
Compare commits
1 Commits
4.5.1-pre2
...
4.5.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
14f1218480 |
@@ -15,10 +15,6 @@ AC_ARG_WITH(target-subdir,
|
||||
TARGET_SUBDIR="$withval",
|
||||
TARGET_SUBDIR=".")
|
||||
|
||||
## HACK to allow gnu-make conditionals in automake-Makefiles.
|
||||
ENDIF=endif
|
||||
AC_SUBST(ENDIF)
|
||||
|
||||
RTEMS_TOPdir="$1";
|
||||
AC_SUBST(RTEMS_TOPdir)
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
## $Id$
|
||||
|
||||
## NOTE: This is a temporary work-around to keep
|
||||
## RTEMS's non automake standard make targets working.
|
||||
## Once automake is fully integrated these make targets
|
||||
## and this file will probably be removed
|
||||
|
||||
debug:
|
||||
@echo
|
||||
@echo "\"make debug\" is obsolete, instead use:"
|
||||
@echo " make VARIANT=DEBUG"
|
||||
@echo
|
||||
|
||||
.PHONY: debug
|
||||
|
||||
profile:
|
||||
@echo
|
||||
@echo "\"make profile\" is obsolete, instead use:"
|
||||
@echo " make VARIANT=PROFILE"
|
||||
@echo
|
||||
|
||||
preinstall-am: $(PREINSTALL_FILES)
|
||||
preinstall: preinstall-am
|
||||
.PHONY: preinstall preinstall-am
|
||||
|
||||
depend-am:
|
||||
depend: depend-am
|
||||
.PHONY: depend depend-am
|
||||
@@ -1,9 +0,0 @@
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
ifndef make-cxx-exe
|
||||
define make-cxx-exe
|
||||
$(LINK.cc) $(AM_CFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDLIBS) -o $@ \
|
||||
$(LINK_OBJS) $(LINK_LIBS)
|
||||
endef
|
||||
@ENDIF@
|
||||
@@ -1,18 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
define make-library
|
||||
$(RM) $@
|
||||
$(AR) $(ARFLAGS) $@ $^
|
||||
$(RANLIB) $@
|
||||
endef
|
||||
|
||||
$(PROJECT_RELEASE)/lib:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
TMPINSTALL_FILES = $(PROJECT_RELEASE)/lib
|
||||
|
||||
.PRECIOUS: $(LIB)
|
||||
@@ -1,80 +0,0 @@
|
||||
## $Id$
|
||||
|
||||
## NOTE: This is a temporary work-around to keep
|
||||
## RTEMS's non automake standard make targets working.
|
||||
## Once automake is fully integrated these make targets
|
||||
## and this file will probably be removed
|
||||
|
||||
## translate VARIANT into VARIANT_V
|
||||
VARIANT = OPTIMIZE
|
||||
|
||||
VARIANT_OPTIMIZE_V = OPTIMIZE
|
||||
VARIANT_DEBUG_V = DEBUG
|
||||
VARIANT_PROFILE_V = PROFILE
|
||||
VARIANT_optimize_V = OPTIMIZE
|
||||
VARIANT_debug_V = DEBUG
|
||||
VARIANT_profile_V = PROFILE
|
||||
|
||||
VARIANT_V = $(VARIANT_$(VARIANT)_V)
|
||||
|
||||
## Setup the variant build subdirectory
|
||||
ARCH_OPTIMIZE_V = o-optimize
|
||||
ARCH_DEBUG_V = o-debug
|
||||
ARCH_PROFILE_V = o-profile
|
||||
|
||||
ARCH__V = $(ARCH_OPTIMIZE_V)
|
||||
ARCH = $(ARCH_$(VARIANT_V)_V)
|
||||
|
||||
## Setup the library suffix
|
||||
LIBSUFFIX_OPTIMIZE_V =
|
||||
LIBSUFFIX_DEBUG_V = _g
|
||||
LIBSUFFIX_PROFILE_V = _p
|
||||
|
||||
LIBSUFFIX__V = $(LIBSUFFIX_OPTIMIZE_V)
|
||||
LIB_VARIANT = $(LIBSUFFIX_$(VARIANT_V)_V)
|
||||
|
||||
LIBSUFFIX_VA = $(LIB_VARIANT).a
|
||||
|
||||
## These are supposed to be set in make/custom/<bsp>.cfg
|
||||
## CFLAGS_OPTIMIZE_V =
|
||||
## CFLAGS_DEBUG_V =
|
||||
## CFLAGS_PROFILE_V =
|
||||
|
||||
CFLAGS__V = $(CFLAGS_OPTIMIZE_V)
|
||||
AM_CFLAGS += $(CFLAGS_$(VARIANT_V)_V)
|
||||
|
||||
debug:
|
||||
@echo
|
||||
@echo "\"make debug\" is obsolete, instead use:"
|
||||
@echo " make VARIANT=DEBUG"
|
||||
@echo
|
||||
|
||||
.PHONY: debug
|
||||
|
||||
profile:
|
||||
@echo
|
||||
@echo "\"make profile\" is obsolete, instead use:"
|
||||
@echo " make VARIANT=PROFILE"
|
||||
@echo
|
||||
|
||||
.PHONY: profile
|
||||
|
||||
preinstall-am: $(PREINSTALL_FILES)
|
||||
preinstall: preinstall-am
|
||||
.PHONY: preinstall preinstall-am
|
||||
|
||||
depend-am:
|
||||
depend: depend-am
|
||||
.PHONY: depend depend-am
|
||||
|
||||
${ARCH}:
|
||||
mkdir ${ARCH}
|
||||
|
||||
clean-local:
|
||||
$(RM) -r o-optimize o-debug o-profile $(CLEANDIRS)
|
||||
$(RM) Depends-o-optimize.tmp Depends-o-debug.tmp Depends-o-profile.tmp
|
||||
|
||||
distclean-local:
|
||||
$(RM) Depends-o-optimize Depends-o-debug Depends-o-profile
|
||||
|
||||
PROJECT_TOOLS = $(PROJECT_RELEASE)/build-tools
|
||||
@@ -1,36 +0,0 @@
|
||||
## $Id$
|
||||
|
||||
## Borrowed from automake-1.4 and adapted to RTEMS
|
||||
|
||||
## NOTE: This is a temporary work-around to keep
|
||||
## RTEMS's non automake standard make targets working.
|
||||
## Once automake is fully integrated these make targets
|
||||
## and this file will probably be removed
|
||||
|
||||
depend-recursive \
|
||||
preinstall-recursive:
|
||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
## This trick allows "-k" to keep its natural meaning when running a
|
||||
## recursive rule.
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
preinstall: preinstall-recursive
|
||||
.PHONY: preinstall-recursive
|
||||
|
||||
depend: depend-recursive
|
||||
.PHONY: depend-recursive
|
||||
@@ -29,7 +29,6 @@ ER snd_msg(
|
||||
Objects_Locations location;
|
||||
unsigned32 message_priority;
|
||||
void *message_contents;
|
||||
CORE_message_queue_Status msg_status;
|
||||
|
||||
if ( !pk_msg )
|
||||
return E_PAR;
|
||||
@@ -47,7 +46,7 @@ ER snd_msg(
|
||||
message_priority = CORE_MESSAGE_QUEUE_SEND_REQUEST;
|
||||
|
||||
message_contents = pk_msg;
|
||||
msg_status = _CORE_message_queue_Submit(
|
||||
_CORE_message_queue_Submit(
|
||||
&the_mailbox->message_queue,
|
||||
&message_contents,
|
||||
sizeof(T_MSG *),
|
||||
@@ -61,6 +60,8 @@ ER snd_msg(
|
||||
}
|
||||
|
||||
_ITRON_return_errorno(
|
||||
_ITRON_Mailbox_Translate_core_message_queue_return_code( msg_status )
|
||||
_ITRON_Mailbox_Translate_core_message_queue_return_code(
|
||||
_Thread_Executing->Wait.return_code
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@ ER tsnd_mbf(
|
||||
Objects_Locations location;
|
||||
Watchdog_Interval interval;
|
||||
boolean wait;
|
||||
CORE_message_queue_Status msg_status;
|
||||
|
||||
if (msgsz <= 0 || !msg)
|
||||
return E_PAR;
|
||||
@@ -58,7 +57,7 @@ ER tsnd_mbf(
|
||||
|
||||
case OBJECTS_LOCAL:
|
||||
/* XXX Submit needs to take into account blocking */
|
||||
msg_status = _CORE_message_queue_Submit(
|
||||
_CORE_message_queue_Submit(
|
||||
&the_message_buffer->message_queue,
|
||||
msg,
|
||||
msgsz,
|
||||
@@ -70,7 +69,7 @@ ER tsnd_mbf(
|
||||
);
|
||||
_Thread_Enable_dispatch();
|
||||
return _ITRON_Message_buffer_Translate_core_message_buffer_return_code(
|
||||
msg_status
|
||||
_Thread_Executing->Wait.return_code
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,11 +36,8 @@ int clock_getres(
|
||||
case CLOCK_REALTIME:
|
||||
case CLOCK_PROCESS_CPUTIME:
|
||||
case CLOCK_THREAD_CPUTIME:
|
||||
if ( res ) {
|
||||
res->tv_sec = _TOD_Microseconds_per_tick / 1000000;
|
||||
res->tv_nsec = _TOD_Microseconds_per_tick * 1000;
|
||||
/* _POSIX_Interval_to_timespec( _TOD_Microseconds_per_tick, res ); */
|
||||
}
|
||||
if ( res )
|
||||
_POSIX_Interval_to_timespec( _TOD_Microseconds_per_tick, res );
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -44,7 +44,6 @@ int _POSIX_Message_queue_Send_support(
|
||||
{
|
||||
register POSIX_Message_queue_Control *the_mq;
|
||||
Objects_Locations location;
|
||||
CORE_message_queue_Status msg_status;
|
||||
|
||||
/*
|
||||
* Validate the priority.
|
||||
@@ -71,7 +70,7 @@ int _POSIX_Message_queue_Send_support(
|
||||
set_errno_and_return_minus_one( EBADF );
|
||||
}
|
||||
|
||||
msg_status = _CORE_message_queue_Submit(
|
||||
_CORE_message_queue_Submit(
|
||||
&the_mq->Message_queue,
|
||||
(void *) msg_ptr,
|
||||
msg_len,
|
||||
@@ -87,23 +86,12 @@ int _POSIX_Message_queue_Send_support(
|
||||
);
|
||||
|
||||
_Thread_Enable_dispatch();
|
||||
|
||||
/*
|
||||
* If we had to block, then this is where the task returns
|
||||
* after it wakes up. The returned status is correct for
|
||||
* non-blocking operations but if we blocked, then we need
|
||||
* to look at the status in our TCB.
|
||||
*/
|
||||
|
||||
if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT )
|
||||
msg_status = _Thread_Executing->Wait.return_code;
|
||||
|
||||
if ( !msg_status )
|
||||
return msg_status;
|
||||
if ( !_Thread_Executing->Wait.return_code )
|
||||
return 0;
|
||||
|
||||
set_errno_and_return_minus_one(
|
||||
_POSIX_Message_queue_Translate_core_message_queue_return_code(
|
||||
msg_status
|
||||
_Thread_Executing->Wait.return_code
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_system_task(
|
||||
rtems_attribute attribute_set
|
||||
)
|
||||
{
|
||||
return ( attribute_set & RTEMS_SYSTEM_TASK );
|
||||
return ( attribute_set & RTEMS_PRIORITY_CEILING );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -65,7 +65,6 @@ void _Event_Surrender(
|
||||
api->pending_events =
|
||||
_Event_sets_Clear( pending_events, seized_events );
|
||||
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
|
||||
(rtems_event_set) the_thread->Wait.count = 0; /* FIX 26MAR01 */
|
||||
|
||||
_ISR_Flash( level );
|
||||
|
||||
|
||||
@@ -61,7 +61,6 @@ rtems_status_code _Message_queue_Submit(
|
||||
{
|
||||
register Message_queue_Control *the_message_queue;
|
||||
Objects_Locations location;
|
||||
CORE_message_queue_Status msg_status;
|
||||
|
||||
the_message_queue = _Message_queue_Get( id, &location );
|
||||
switch ( location )
|
||||
@@ -98,7 +97,7 @@ rtems_status_code _Message_queue_Submit(
|
||||
case OBJECTS_LOCAL:
|
||||
switch ( submit_type ) {
|
||||
case MESSAGE_QUEUE_SEND_REQUEST:
|
||||
msg_status = _CORE_message_queue_Send(
|
||||
_CORE_message_queue_Send(
|
||||
&the_message_queue->message_queue,
|
||||
buffer,
|
||||
size,
|
||||
@@ -113,7 +112,7 @@ rtems_status_code _Message_queue_Submit(
|
||||
);
|
||||
break;
|
||||
case MESSAGE_QUEUE_URGENT_REQUEST:
|
||||
msg_status = _CORE_message_queue_Urgent(
|
||||
_CORE_message_queue_Urgent(
|
||||
&the_message_queue->message_queue,
|
||||
buffer,
|
||||
size,
|
||||
@@ -132,13 +131,9 @@ rtems_status_code _Message_queue_Submit(
|
||||
}
|
||||
|
||||
_Thread_Enable_dispatch();
|
||||
/*
|
||||
* Since this API does not allow for blocking sends, we can directly
|
||||
* return the returned msg_status.
|
||||
*/
|
||||
|
||||
return
|
||||
_Message_queue_Translate_core_message_queue_return_code( msg_status );
|
||||
return _Message_queue_Translate_core_message_queue_return_code(
|
||||
_Thread_Executing->Wait.return_code
|
||||
);
|
||||
|
||||
}
|
||||
return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* This file contains all assembly code for the MC68020 implementation
|
||||
* of RTEMS.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2001.
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -68,7 +68,7 @@ SYM (_CPU_Context_save_fp):
|
||||
moval a1@,a0 | a0 = Save context area
|
||||
fsave a0@- | save 68881/68882 state frame
|
||||
tstb a0@ | check for a null frame
|
||||
beq.b nosv | Yes, skip save of user model
|
||||
beq nosv | Yes, skip save of user model
|
||||
fmovem fp0-fp7,a0@- | save data registers (fp0-fp7)
|
||||
fmovem fpc/fps/fpi,a0@- | and save control registers
|
||||
movl #-1,a0@- | place not-null flag on stack
|
||||
@@ -83,7 +83,7 @@ SYM (_CPU_Context_restore_fp):
|
||||
moval a7@(FPCONTEXT_ARG),a1 | a1 = &ptr to context area
|
||||
moval a1@,a0 | a0 = address of saved context
|
||||
tstb a0@ | Null context frame?
|
||||
beq.b norst | Yes, skip fp restore
|
||||
beq norst | Yes, skip fp restore
|
||||
addql #4,a0 | throwaway non-null flag
|
||||
fmovem a0@+,fpc/fps/fpi | restore control registers
|
||||
fmovem a0@+,fp0-fp7 | restore data regs (fp0-fp7)
|
||||
@@ -101,12 +101,24 @@ norst: frestore a0@+ | restore the fp state frame
|
||||
* NOTE:
|
||||
* Upon entry, the master stack will contain an interrupt stack frame
|
||||
* back to the interrupted thread and the interrupt stack will contain
|
||||
* a throwaway interrupt stack frame. If dispatching is enabled, and this
|
||||
* is the outer most interrupt, and a context switch is necessary or
|
||||
* the current thread has pending signals, then set up the master stack to
|
||||
* a throwaway interrupt stack frame. If dispatching is enabled, this
|
||||
* is the outer most interrupt, and (a context switch is necessary or
|
||||
* the current thread has signals), then set up the master stack to
|
||||
* transfer control to the interrupt dispatcher.
|
||||
*/
|
||||
|
||||
/*
|
||||
* With this approach, lower priority interrupts may
|
||||
* execute twice if a higher priority interrupt is
|
||||
* acknowledged before _Thread_Dispatch_disable is
|
||||
* incremented and the higher priority interrupt
|
||||
* performs a context switch after executing. The lower
|
||||
* priority interrupt will execute (1) at the end of the
|
||||
* higher priority interrupt in the new context if
|
||||
* permitted by the new interrupt level mask, and (2) when
|
||||
* the original context regains the cpu.
|
||||
*/
|
||||
|
||||
#if ( M68K_COLDFIRE_ARCH == 1 )
|
||||
.set SR_OFFSET, 2 | Status register offset
|
||||
.set PC_OFFSET, 4 | Program Counter offset
|
||||
@@ -130,31 +142,45 @@ SYM (_ISR_Handler):
|
||||
addql #1,SYM (_Thread_Dispatch_disable_level) | disable multitasking
|
||||
#if ( M68K_COLDFIRE_ARCH == 0 )
|
||||
moveml d0-d1/a0-a1,a7@- | save d0-d1,a0-a1
|
||||
movew a7@(SAVED+FVO_OFFSET),d0 | d0 = F/VO
|
||||
andl #0x0fff,d0 | d0 = vector offset in vbr
|
||||
#else
|
||||
lea a7@(-SAVED),a7
|
||||
movm.l d0-d1/a0-a1,a7@ | save d0-d1,a0-a1
|
||||
#endif
|
||||
movew a7@(SAVED+FVO_OFFSET),d0 | d0 = F/VO
|
||||
andl #0x0ffc,d0 | d0 = vector offset in vbr
|
||||
#endif
|
||||
|
||||
|
||||
#if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1 )
|
||||
movel _CPU_Interrupt_stack_high,a0 | a0 now point just above interrupt stack
|
||||
cmpl _CPU_Interrupt_stack_low,a7 | stack below interrupt stack?
|
||||
bcs.b 1f | yes, switch to interrupt stack
|
||||
cmpl a0,a7 | stack above interrupt stack?
|
||||
bcs.b 2f | no, do not switch stacks
|
||||
#if ( M68K_COLDFIRE_ARCH == 0 )
|
||||
movew sr,d1 | Save status register
|
||||
oriw #0x700,sr | Disable interrupts
|
||||
#else
|
||||
move.l d0,a7@- | Save d0 value
|
||||
move.l #0x700,d0 | Load in disable ints value
|
||||
move.w sr,d1 | Grab SR
|
||||
or.l d1,d0 | Create new SR
|
||||
move.w d0,sr | Disable interrupts
|
||||
move.l a7@+,d0 | Restore d0 value
|
||||
#endif
|
||||
|
||||
tstl SYM (_ISR_Nest_level) | Interrupting an interrupt handler?
|
||||
bne 1f | Yes, just skip over stack switch code
|
||||
movel SYM(_CPU_Interrupt_stack_high),a0 | End of interrupt stack
|
||||
movel a7,a0@- | Save task stack pointer
|
||||
movel a0,a7 | Switch to interrupt stack
|
||||
1:
|
||||
movel a7,a1 | copy task stack pointer
|
||||
movel a0,a7 | switch to interrupt stack
|
||||
movel a1,a7@- | store task stack pointer on interrupt stack
|
||||
2:
|
||||
addql #1,SYM(_ISR_Nest_level) | one nest level deeper
|
||||
movew d1,sr | Restore status register
|
||||
#else
|
||||
addql #1,SYM (_ISR_Nest_level) | one nest level deeper
|
||||
#endif /* CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1 */
|
||||
|
||||
#if ( M68K_HAS_PREINDEXING == 1 )
|
||||
movel @( SYM (_ISR_Vector_table),d0:w:1),a0| fetch the ISR
|
||||
#else
|
||||
movel # SYM (_ISR_Vector_table),a0 | a0 = base of RTEMS table
|
||||
movel # SYM (_ISR_Vector_table),a0 | a0 = base of RTEMS table
|
||||
addal d0,a0 | a0 = address of vector
|
||||
movel (a0),a0 | a0 = address of user routine
|
||||
#endif
|
||||
@@ -165,44 +191,45 @@ SYM (_ISR_Handler):
|
||||
addql #4,a7 | remove vector number
|
||||
|
||||
#if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1 )
|
||||
movel _CPU_Interrupt_stack_high,a0
|
||||
subql #4,a0
|
||||
cmpl a0,a7 | At top of interrupt stack?
|
||||
bne.b 1f | No, do not restore task stack pointer
|
||||
#if ( M68K_COLDFIRE_ARCH == 0 )
|
||||
movew sr,d0 | Save status register
|
||||
oriw #0x700,sr | Disable interrupts
|
||||
#else
|
||||
move.l #0x700,d1 | Load in disable int value
|
||||
move.w sr,d0 | Grab SR
|
||||
or.l d0,d1 | Create new SR
|
||||
move.w d1,sr | Load to disable interrupts
|
||||
#endif
|
||||
|
||||
subql #1,SYM(_ISR_Nest_level) | Reduce interrupt-nesting count
|
||||
bne 1f | Skip if return to interrupt
|
||||
movel (a7),a7 | Restore task stack pointer
|
||||
1:
|
||||
movew d0,sr | Restore status register
|
||||
#else
|
||||
subql #1,SYM (_ISR_Nest_level) | one less nest level
|
||||
#endif /* CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1 */
|
||||
|
||||
subql #1,SYM (_Thread_Dispatch_disable_level)
|
||||
| unnest multitasking
|
||||
bne.b exit | If dispatch disabled, exit
|
||||
bne exit | If dispatch disabled, exit
|
||||
|
||||
#if ( M68K_HAS_SEPARATE_STACKS == 1 )
|
||||
movew #0xf000,d0 | isolate format nibble
|
||||
andw a7@(SAVED+FVO_OFFSET),d0 | get F/VO
|
||||
cmpiw #0x1000,d0 | is it a throwaway isf?
|
||||
bne.b exit | NOT outer level, so branch
|
||||
#else
|
||||
/*
|
||||
* If we have a CPU which allows a higher-priority interrupt to preempt a
|
||||
* lower priority handler before the lower-priority handler can increment
|
||||
* _Thread_Dispatch_disable_level then we must check the PC on the stack to
|
||||
* see if it is _ISR_Handler. If it is we have the case of nesting interrupts
|
||||
* without the dispatch level being incremented.
|
||||
*/
|
||||
#if ( M68K_COLDFIRE_ARCH == 0 && M68K_MC68060_ARCH == 0 )
|
||||
cmpl #_ISR_Handler,a7@(SAVED+PC_OFFSET)
|
||||
beq.b exit
|
||||
#endif
|
||||
bne exit | NOT outer level, so branch
|
||||
#endif
|
||||
|
||||
tstl SYM (_Context_Switch_necessary)
|
||||
| Is thread switch necessary?
|
||||
bne.b bframe | Yes, invoke dispatcher
|
||||
bne bframe | Yes, invoke dispatcher
|
||||
|
||||
tstl SYM (_ISR_Signals_to_thread_executing)
|
||||
| signals sent to Run_thread
|
||||
| while in interrupt handler?
|
||||
beq.b exit | No, then exit
|
||||
beq exit | No, then exit
|
||||
|
||||
|
||||
bframe: clrl SYM (_ISR_Signals_to_thread_executing)
|
||||
| If sent, will be processed
|
||||
|
||||
@@ -52,8 +52,8 @@ SYM(_CPU_Context_save_fp):
|
||||
or %l1, %lo(SPARC_PSR_EF_MASK), %l1
|
||||
or %l0, %l1, %l0
|
||||
mov %l0, %psr ! **** ENABLE FLOAT ACCESS ****
|
||||
nop; nop; nop; ! Need three nops before EF is
|
||||
ld [%i0], %l0 ! active due to pipeline delay!!!
|
||||
|
||||
ld [%i0], %l0
|
||||
std %f0, [%l0 + FO_F1_OFFSET]
|
||||
std %f2, [%l0 + F2_F3_OFFSET]
|
||||
std %f4, [%l0 + F4_F5_OFFSET]
|
||||
@@ -101,8 +101,8 @@ SYM(_CPU_Context_restore_fp):
|
||||
or %l1, %lo(SPARC_PSR_EF_MASK), %l1
|
||||
or %l0, %l1, %l0
|
||||
mov %l0, %psr ! **** ENABLE FLOAT ACCESS ****
|
||||
nop; nop; nop; ! Need three nops before EF is
|
||||
ld [%i0], %l0 ! active due to pipeline delay!!!
|
||||
|
||||
ld [%i0], %l0
|
||||
ldd [%l0 + FO_F1_OFFSET], %f0
|
||||
ldd [%l0 + F2_F3_OFFSET], %f2
|
||||
ldd [%l0 + F4_F5_OFFSET], %f4
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
# We only build multiprocessing related files if HAS_MP was defined
|
||||
MP_H_FILES = mpci.h mppkt.h objectmp.h threadmp.h
|
||||
|
||||
@@ -95,8 +95,7 @@ typedef enum {
|
||||
CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED,
|
||||
CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT,
|
||||
CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED,
|
||||
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT,
|
||||
CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT
|
||||
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
|
||||
} CORE_message_queue_Status;
|
||||
|
||||
/*
|
||||
@@ -240,7 +239,7 @@ CORE_message_queue_Status _CORE_message_queue_Broadcast(
|
||||
*
|
||||
*/
|
||||
|
||||
CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
void _CORE_message_queue_Submit(
|
||||
CORE_message_queue_Control *the_message_queue,
|
||||
void *buffer,
|
||||
unsigned32 size,
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
* This routine sends a message to the end of the specified message queue.
|
||||
*/
|
||||
|
||||
RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send(
|
||||
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Send(
|
||||
CORE_message_queue_Control *the_message_queue,
|
||||
void *buffer,
|
||||
unsigned32 size,
|
||||
@@ -37,7 +37,7 @@ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send(
|
||||
Watchdog_Interval timeout
|
||||
)
|
||||
{
|
||||
return _CORE_message_queue_Submit(
|
||||
_CORE_message_queue_Submit(
|
||||
the_message_queue,
|
||||
buffer,
|
||||
size,
|
||||
@@ -62,7 +62,7 @@ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send(
|
||||
* This routine sends a message to the front of the specified message queue.
|
||||
*/
|
||||
|
||||
RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Urgent(
|
||||
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Urgent(
|
||||
CORE_message_queue_Control *the_message_queue,
|
||||
void *buffer,
|
||||
unsigned32 size,
|
||||
@@ -72,7 +72,7 @@ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Urgent(
|
||||
Watchdog_Interval timeout
|
||||
)
|
||||
{
|
||||
return _CORE_message_queue_Submit(
|
||||
_CORE_message_queue_Submit(
|
||||
the_message_queue,
|
||||
buffer,
|
||||
size,
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
* error code - if unsuccessful
|
||||
*/
|
||||
|
||||
CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
void _CORE_message_queue_Submit(
|
||||
CORE_message_queue_Control *the_message_queue,
|
||||
void *buffer,
|
||||
unsigned32 size,
|
||||
@@ -67,9 +67,14 @@ CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
ISR_Level level;
|
||||
CORE_message_queue_Buffer_control *the_message;
|
||||
Thread_Control *the_thread;
|
||||
Thread_Control *executing;
|
||||
|
||||
_Thread_Executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
|
||||
|
||||
if ( size > the_message_queue->maximum_message_size ) {
|
||||
return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
|
||||
_Thread_Executing->Wait.return_code =
|
||||
CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -91,7 +96,7 @@ CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
|
||||
(*api_message_queue_mp_support) ( the_thread, id );
|
||||
#endif
|
||||
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,9 +114,10 @@ CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
/*
|
||||
* NOTE: If the system is consistent, this error should never occur.
|
||||
*/
|
||||
|
||||
if ( !the_message ) {
|
||||
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
|
||||
_Thread_Executing->Wait.return_code =
|
||||
CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
|
||||
return;
|
||||
}
|
||||
|
||||
_CORE_message_queue_Copy_buffer(
|
||||
@@ -127,7 +133,7 @@ CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
the_message,
|
||||
submit_type
|
||||
);
|
||||
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -137,39 +143,20 @@ CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
*/
|
||||
|
||||
if ( !wait ) {
|
||||
return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
|
||||
_Thread_Executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Do NOT block on a send if the caller is in an ISR. It is
|
||||
* deadly to block in an ISR.
|
||||
*/
|
||||
executing = _Thread_Executing;
|
||||
|
||||
if ( _ISR_Is_in_progress() ) {
|
||||
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
|
||||
}
|
||||
_ISR_Disable( level );
|
||||
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
|
||||
executing->Wait.queue = &the_message_queue->Wait_queue;
|
||||
executing->Wait.id = id;
|
||||
executing->Wait.return_argument = (void *)buffer;
|
||||
executing->Wait.return_argument_1 = (void *)size;
|
||||
executing->Wait.count = submit_type;
|
||||
_ISR_Enable( level );
|
||||
|
||||
/*
|
||||
* WARNING!! executing should NOT be used prior to this point.
|
||||
* Thus the unusual choice to open a new scope and declare
|
||||
* it as a variable. Doing this emphasizes how dangerous it
|
||||
* would be to use this variable prior to here.
|
||||
*/
|
||||
|
||||
{
|
||||
Thread_Control *executing = _Thread_Executing;
|
||||
|
||||
_ISR_Disable( level );
|
||||
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
|
||||
executing->Wait.queue = &the_message_queue->Wait_queue;
|
||||
executing->Wait.id = id;
|
||||
executing->Wait.return_argument = (void *)buffer;
|
||||
executing->Wait.return_argument_1 = (void *)size;
|
||||
executing->Wait.count = submit_type;
|
||||
_ISR_Enable( level );
|
||||
|
||||
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
|
||||
}
|
||||
|
||||
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
|
||||
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
|
||||
}
|
||||
|
||||
@@ -72,9 +72,7 @@ void _CORE_mutex_Initialize(
|
||||
the_mutex->nest_count = 1;
|
||||
the_mutex->holder = _Thread_Executing;
|
||||
the_mutex->holder_id = _Thread_Executing->Object.id;
|
||||
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
|
||||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) )
|
||||
_Thread_Executing->resource_count++;
|
||||
_Thread_Executing->resource_count++;
|
||||
} else {
|
||||
the_mutex->nest_count = 0;
|
||||
the_mutex->holder = NULL;
|
||||
|
||||
@@ -53,11 +53,17 @@ void _CORE_mutex_Seize(
|
||||
ISR_Level level;
|
||||
|
||||
executing = _Thread_Executing;
|
||||
if ( _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
|
||||
if ( executing->current_priority < the_mutex->Attributes.priority_ceiling) {
|
||||
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
|
||||
return;
|
||||
}
|
||||
switch ( the_mutex->Attributes.discipline ) {
|
||||
case CORE_MUTEX_DISCIPLINES_FIFO:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT:
|
||||
break;
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
|
||||
if ( executing->current_priority <
|
||||
the_mutex->Attributes.priority_ceiling) {
|
||||
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
|
||||
return;
|
||||
}
|
||||
}
|
||||
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
|
||||
_ISR_Disable( level );
|
||||
@@ -66,17 +72,17 @@ void _CORE_mutex_Seize(
|
||||
the_mutex->holder = executing;
|
||||
the_mutex->holder_id = executing->Object.id;
|
||||
the_mutex->nest_count = 1;
|
||||
if ( _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ||
|
||||
_CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) )
|
||||
executing->resource_count++;
|
||||
executing->resource_count++;
|
||||
_ISR_Enable( level );
|
||||
/*
|
||||
* if CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT then nothing to do
|
||||
* because this task is already the highest priority.
|
||||
*/
|
||||
|
||||
if ( _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
|
||||
if (the_mutex->Attributes.priority_ceiling < executing->current_priority){
|
||||
switch ( the_mutex->Attributes.discipline ) {
|
||||
case CORE_MUTEX_DISCIPLINES_FIFO:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT:
|
||||
/* already the highest priority */
|
||||
break;
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
|
||||
if ( the_mutex->Attributes.priority_ceiling <
|
||||
executing->current_priority ) {
|
||||
_Thread_Change_priority(
|
||||
the_mutex->holder,
|
||||
the_mutex->Attributes.priority_ceiling,
|
||||
@@ -114,27 +120,40 @@ void _CORE_mutex_Seize(
|
||||
executing->Wait.id = id;
|
||||
_ISR_Enable( level );
|
||||
|
||||
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
|
||||
if ( the_mutex->holder->current_priority > executing->current_priority ) {
|
||||
_Thread_Change_priority(
|
||||
the_mutex->holder,
|
||||
executing->current_priority,
|
||||
FALSE
|
||||
);
|
||||
}
|
||||
switch ( the_mutex->Attributes.discipline ) {
|
||||
case CORE_MUTEX_DISCIPLINES_FIFO:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
|
||||
break;
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT:
|
||||
if ( the_mutex->holder->current_priority > executing->current_priority ) {
|
||||
_Thread_Change_priority(
|
||||
the_mutex->holder,
|
||||
executing->current_priority,
|
||||
FALSE
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
|
||||
|
||||
if ( _Thread_Executing->Wait.return_code == CORE_MUTEX_STATUS_SUCCESSFUL ) {
|
||||
if ( _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
|
||||
if (the_mutex->Attributes.priority_ceiling < executing->current_priority){
|
||||
_Thread_Change_priority(
|
||||
executing,
|
||||
the_mutex->Attributes.priority_ceiling,
|
||||
FALSE
|
||||
);
|
||||
}
|
||||
switch ( the_mutex->Attributes.discipline ) {
|
||||
case CORE_MUTEX_DISCIPLINES_FIFO:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT:
|
||||
break;
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
|
||||
if ( the_mutex->Attributes.priority_ceiling <
|
||||
executing->current_priority ) {
|
||||
_Thread_Change_priority(
|
||||
executing,
|
||||
the_mutex->Attributes.priority_ceiling,
|
||||
FALSE
|
||||
);
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,9 +86,7 @@ CORE_mutex_Status _CORE_mutex_Surrender(
|
||||
}
|
||||
}
|
||||
|
||||
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
|
||||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) )
|
||||
holder->resource_count--;
|
||||
_Thread_Executing->resource_count--;
|
||||
the_mutex->holder = NULL;
|
||||
the_mutex->holder_id = 0;
|
||||
|
||||
@@ -98,14 +96,20 @@ CORE_mutex_Status _CORE_mutex_Surrender(
|
||||
* mutex (i.e. resource) this task has.
|
||||
*/
|
||||
|
||||
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
|
||||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
|
||||
if ( holder->resource_count == 0 &&
|
||||
holder->real_priority != holder->current_priority ) {
|
||||
_Thread_Change_priority( holder, holder->real_priority, TRUE );
|
||||
}
|
||||
switch ( the_mutex->Attributes.discipline ) {
|
||||
case CORE_MUTEX_DISCIPLINES_FIFO:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY:
|
||||
break;
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
|
||||
case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT:
|
||||
if ( holder->resource_count == 0 &&
|
||||
holder->real_priority != holder->current_priority ) {
|
||||
_Thread_Change_priority( holder, holder->real_priority, TRUE );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if ( ( the_thread = _Thread_queue_Dequeue( &the_mutex->Wait_queue ) ) ) {
|
||||
|
||||
#if defined(RTEMS_MULTIPROCESSING)
|
||||
|
||||
@@ -43,15 +43,7 @@ void *_Heap_Allocate(
|
||||
Heap_Block *temporary_block;
|
||||
void *ptr;
|
||||
unsigned32 offset;
|
||||
|
||||
/*
|
||||
* Catch the case of a user allocating close to the limit of the
|
||||
* unsigned32.
|
||||
*/
|
||||
|
||||
if ( size >= (-1 - HEAP_BLOCK_USED_OVERHEAD) )
|
||||
return( NULL );
|
||||
|
||||
|
||||
excess = size % the_heap->page_size;
|
||||
the_size = size + the_heap->page_size + HEAP_BLOCK_USED_OVERHEAD;
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ Objects_Control *_Objects_Get_by_index(
|
||||
* With just an index, you can't access a remote object.
|
||||
*/
|
||||
|
||||
_Thread_Enable_dispatch();
|
||||
*location = OBJECTS_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ SECTIONS
|
||||
*(.dtors)
|
||||
LONG(0)
|
||||
__DTOR_END__ = .;
|
||||
_rodata_start = . ;
|
||||
_rodata_start 5 . ;
|
||||
*(.rodata)
|
||||
*(.gnu.linkonce.r*)
|
||||
_erodata = ALIGN( 0x10 ) ;
|
||||
|
||||
@@ -8,15 +8,14 @@
|
||||
%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded)
|
||||
|
||||
*lib:
|
||||
%{!qrtems: %(old_lib)} %{qrtems: --start-group \
|
||||
%{!qrtems_debug: -lrtemsall} %{qrtems_debug: -lrtemsall_g} \
|
||||
-lc -lgcc --end-group \
|
||||
%{!qnolinkcmds: -T linkcmds%s}}
|
||||
%{!qrtems: %(old_lib)} \
|
||||
%{qrtems: --start-group -lc \
|
||||
%{!qrtems_debug: -lrtemsall } %{qrtems_debug: -lrtemsall_g} \
|
||||
-lgcc --end-group}
|
||||
|
||||
*startfile:
|
||||
%{!qrtems: %(old_startfile)} %{qrtems: \
|
||||
%{!qrtems_debug: } \
|
||||
%{qrtems_debug: }}
|
||||
%{!qrtems: %(old_startfile)} \
|
||||
%{qrtems: %{qrtems_debug: start_g.o%s} %{!qrtems_debug: start.o%s}
|
||||
|
||||
*link:
|
||||
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start}
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -25,9 +25,7 @@ $(PGM): $(OBJS)
|
||||
|
||||
# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
|
||||
|
||||
if HAS_NETWORKING
|
||||
all-local: $(ARCH) $(OBJS) $(PGM)
|
||||
endif
|
||||
|
||||
.PRECIOUS: $(PGM)
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../../../automake/lib.am
|
||||
anclude $(top_srcdir)/../../../../../../automake/lib.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
|
||||
@@ -64,8 +64,8 @@ SECTIONS
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
*(.gnu.warning)
|
||||
} >RAM
|
||||
.init : { __init = .; *(.init) } >RAM
|
||||
.fini : { __fini = .; *(.fini) } >RAM
|
||||
.init : { *(.init) } >RAM
|
||||
.fini : { *(.fini) } >RAM
|
||||
.rodata : { *(.rodata) *(.gnu.linkonce.r*) } >RAM
|
||||
.rodata1 : { *(.rodata1) } >RAM
|
||||
PROVIDE (_etext = .);
|
||||
|
||||
@@ -78,16 +78,17 @@ __rtems_entry_point:
|
||||
isync
|
||||
|
||||
/*
|
||||
* we now have the 1st 64M of ram mapped with the bats. We are still
|
||||
* running on the bootloader stack and cannot switch to an RTEMS allocated
|
||||
* init stack before copying the residual data that may have been set just after
|
||||
* rtems_end address. This bug has been experienced on MVME2304. Thank to
|
||||
* Till Straumann <strauman@SLAC.Stanford.EDU> for hunting it and suggesting
|
||||
* the appropriate code.
|
||||
* we now have the 1st 64M of ram mapped with the bats.
|
||||
*/
|
||||
|
||||
enter_C_code:
|
||||
bl MMUon
|
||||
/*
|
||||
* stack = &__rtems_end + 4096
|
||||
*/
|
||||
addis r9,r0, __rtems_end+(4096-CPU_MINIMUM_STACK_FRAME_SIZE)@ha
|
||||
addi r9,r9, __rtems_end+(4096-CPU_MINIMUM_STACK_FRAME_SIZE)@l
|
||||
mr r1, r9
|
||||
bl zero_bss
|
||||
/*
|
||||
* restore prep boot params
|
||||
@@ -98,15 +99,6 @@ enter_C_code:
|
||||
mr r6,r28
|
||||
mr r7,r27
|
||||
bl save_boot_params
|
||||
/*
|
||||
* stack = &__rtems_end + 4096
|
||||
*/
|
||||
addis r9,r0, __rtems_end+(4096-CPU_MINIMUM_STACK_FRAME_SIZE)@ha
|
||||
addi r9,r9, __rtems_end+(4096-CPU_MINIMUM_STACK_FRAME_SIZE)@l
|
||||
mr r1, r9
|
||||
/*
|
||||
* We are know in a environment that is totally independent from bootloader setup.
|
||||
*/
|
||||
bl boot_card
|
||||
bl _return_to_ppcbug
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ do
|
||||
TEST_TYPE="single"
|
||||
|
||||
case $tname in
|
||||
monitor*)
|
||||
monitor)
|
||||
if [ $run_to_completion = "yes" ]
|
||||
then
|
||||
warn "Skipping $tname; it is interactive"
|
||||
|
||||
@@ -33,11 +33,6 @@ int chmod(
|
||||
if ( status != 0 )
|
||||
return -1;
|
||||
|
||||
if ( !loc.handlers ){
|
||||
rtems_filesystem_freenode( &loc );
|
||||
set_errno_and_return_minus_one( EBADF );
|
||||
}
|
||||
|
||||
if ( !loc.handlers->fchmod ){
|
||||
rtems_filesystem_freenode( &loc );
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
|
||||
@@ -43,9 +43,6 @@ int rtems_filesystem_evaluate_path(
|
||||
|
||||
rtems_filesystem_get_start_loc( pathname, &i, pathloc );
|
||||
|
||||
if ( !pathloc->ops->evalpath )
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
|
||||
result = (*pathloc->ops->evalpath)( &pathname[i], flags, pathloc );
|
||||
|
||||
/*
|
||||
|
||||
@@ -131,16 +131,10 @@ int fcntl(
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
if (ret >= 0) {
|
||||
if (iop->handlers->fcntl) {
|
||||
int err = (*iop->handlers->fcntl)( cmd, iop );
|
||||
if (err) {
|
||||
errno = err;
|
||||
ret = -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
errno = ENOTSUP;
|
||||
if ((ret >= 0) && iop->handlers->fcntl) {
|
||||
int err = (*iop->handlers->fcntl)( cmd, iop );
|
||||
if (err) {
|
||||
errno = err;
|
||||
ret = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,9 +30,6 @@ int fsync(
|
||||
* Now process the fsync().
|
||||
*/
|
||||
|
||||
if ( !iop->handlers )
|
||||
set_errno_and_return_minus_one( EBADF );
|
||||
|
||||
if ( !iop->handlers->fsync )
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ getcwd (pt, size)
|
||||
size_t size;
|
||||
{
|
||||
register struct dirent *dp;
|
||||
register DIR *dir = 0;
|
||||
register DIR *dir;
|
||||
register dev_t dev;
|
||||
register ino_t ino;
|
||||
register int first;
|
||||
@@ -254,7 +254,6 @@ getcwd (pt, size)
|
||||
bpt -= strlen (dp->d_name);
|
||||
bcopy (dp->d_name, bpt, strlen (dp->d_name));
|
||||
(void) _closedir (dir);
|
||||
dir = 0;
|
||||
|
||||
/* Truncate any file name. */
|
||||
*bup = '\0';
|
||||
@@ -272,8 +271,6 @@ notfound:
|
||||
/* FALLTHROUGH */
|
||||
|
||||
err:
|
||||
if(dir)
|
||||
(void) _closedir (dir);
|
||||
if (ptsize)
|
||||
free (pt);
|
||||
free (up);
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "imfs.h"
|
||||
|
||||
static char dotname[2] = ".";
|
||||
static char dotdotname[3] = "..";
|
||||
static char dotdotname[2] = "..";
|
||||
|
||||
IMFS_jnode_t *IMFS_find_match_in_dir(
|
||||
IMFS_jnode_t *directory,
|
||||
|
||||
@@ -33,9 +33,6 @@ int ioctl(
|
||||
* Now process the ioctl().
|
||||
*/
|
||||
|
||||
if ( !iop->handlers )
|
||||
set_errno_and_return_minus_one( EBADF );
|
||||
|
||||
if ( !iop->handlers->ioctl )
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
|
||||
|
||||
@@ -80,11 +80,6 @@ rtems_status_code rtems_io_lookup_name(
|
||||
result = rtems_filesystem_evaluate_path( name, 0x00, &loc, TRUE );
|
||||
the_jnode = loc.node_access;
|
||||
|
||||
if ( !loc.ops->node_type ) {
|
||||
rtems_filesystem_freenode( &loc );
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
}
|
||||
|
||||
node_type = (*loc.ops->node_type)( &loc );
|
||||
|
||||
if ( (result != 0) || node_type != RTEMS_FILESYSTEM_DEVICE ) {
|
||||
|
||||
@@ -473,16 +473,10 @@ typedef int (*rtems_libio_lseek_t)(
|
||||
#define rtems_filesystem_make_dev_t( _major, _minor ) \
|
||||
((((dev_t)(_major)) << 32) | (dev_t)(_minor))
|
||||
|
||||
#define rtems_filesystem_dev_major_t( _dev ) \
|
||||
(rtems_device_major_number) ((_dev) >> 32)
|
||||
|
||||
#define rtems_filesystem_dev_minor_t( _dev ) \
|
||||
(rtems_device_minor_number) ((_dev) & 0xFFFFFFFF)
|
||||
|
||||
#define rtems_filesystem_split_dev_t( _dev, _major, _minor ) \
|
||||
do { \
|
||||
(_major) = rtems_filesystem_dev_major_t ( _dev ); \
|
||||
(_minor) = rtems_filesystem_dev_minor_t( _dev ); \
|
||||
(_major) = (rtems_device_major_number) ((_dev) >> 32); \
|
||||
(_minor) = (rtems_device_minor_number) ((_dev) & 0xFFFFFFFF); \
|
||||
} while(0)
|
||||
|
||||
/*
|
||||
|
||||
@@ -32,13 +32,6 @@ struct socket *rtems_bsdnet_fdToSocket(
|
||||
return NULL;
|
||||
}
|
||||
iop = &rtems_libio_iops[fd];
|
||||
|
||||
/* same as rtems_libio_check_is_open(iop) but different return */
|
||||
if ((iop->flags & LIBIO_FLAGS_OPEN) == 0) {
|
||||
errno = EBADF;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (iop->data1 == NULL)
|
||||
errno = EBADF;
|
||||
return iop->data1;
|
||||
|
||||
@@ -41,16 +41,8 @@ int link(
|
||||
*/
|
||||
|
||||
rtems_filesystem_get_start_loc( new, &i, &parent_loc );
|
||||
|
||||
if ( !parent_loc.ops->evalformake ) {
|
||||
rtems_filesystem_freenode( &existing_loc );
|
||||
rtems_filesystem_freenode( &parent_loc );
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
}
|
||||
|
||||
result = (*parent_loc.ops->evalformake)( &new[i], &parent_loc, &name_start );
|
||||
if ( result != 0 ) {
|
||||
rtems_filesystem_freenode( &existing_loc );
|
||||
rtems_filesystem_freenode( &parent_loc );
|
||||
set_errno_and_return_minus_one( result );
|
||||
}
|
||||
|
||||
@@ -11,10 +11,6 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "libio_.h"
|
||||
@@ -26,25 +22,15 @@ off_t lseek(
|
||||
)
|
||||
{
|
||||
rtems_libio_t *iop;
|
||||
off_t old_offset;
|
||||
off_t status;
|
||||
|
||||
rtems_libio_check_fd( fd );
|
||||
iop = rtems_libio_iop( fd );
|
||||
rtems_libio_check_is_open(iop);
|
||||
|
||||
/*
|
||||
* Check as many errors as possible before touching iop->offset.
|
||||
*/
|
||||
|
||||
if ( !iop->handlers->lseek )
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
|
||||
/*
|
||||
* Now process the lseek().
|
||||
*/
|
||||
|
||||
old_offset = iop->offset;
|
||||
switch ( whence ) {
|
||||
case SEEK_SET:
|
||||
iop->offset = offset;
|
||||
@@ -55,27 +41,18 @@ off_t lseek(
|
||||
break;
|
||||
|
||||
case SEEK_END:
|
||||
iop->offset = iop->size + offset;
|
||||
iop->offset = iop->size - offset;
|
||||
break;
|
||||
|
||||
default:
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* At this time, handlers assume iop->offset has the desired
|
||||
* new offset.
|
||||
*/
|
||||
if ( !iop->handlers->lseek )
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
|
||||
status = (*iop->handlers->lseek)( iop, offset, whence );
|
||||
if ( status == (off_t) -1 )
|
||||
iop->offset = old_offset;
|
||||
|
||||
/*
|
||||
* So if the operation failed, we have to restore iop->offset.
|
||||
*/
|
||||
|
||||
return status;
|
||||
return (*iop->handlers->lseek)( iop, offset, whence );
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -112,9 +112,6 @@ int memfile_close(
|
||||
|
||||
the_jnode = iop->file_info;
|
||||
|
||||
if (iop->flags & LIBIO_FLAGS_APPEND)
|
||||
iop->offset = the_jnode->info.file.size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -343,6 +340,7 @@ MEMFILE_STATIC int IMFS_memfile_addblock(
|
||||
#endif
|
||||
|
||||
memory = memfile_alloc_block();
|
||||
assert( memory );
|
||||
if ( !memory )
|
||||
return 1;
|
||||
*block_entry_ptr = memory;
|
||||
@@ -499,8 +497,6 @@ int IMFS_memfile_remove(
|
||||
if ( info->triply_indirect ) {
|
||||
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
|
||||
p = (block_p *) info->triply_indirect[i];
|
||||
if (!p) /* ensure we have a valid pointer */
|
||||
break;
|
||||
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
|
||||
if ( p[j] ) {
|
||||
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
|
||||
|
||||
@@ -43,11 +43,6 @@ int mknod(
|
||||
|
||||
rtems_filesystem_get_start_loc( pathname, &i, &temp_loc );
|
||||
|
||||
if ( !temp_loc.ops->evalformake ) {
|
||||
rtems_filesystem_freenode( &temp_loc );
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
}
|
||||
|
||||
result = (*temp_loc.ops->evalformake)(
|
||||
&pathname[i],
|
||||
&temp_loc,
|
||||
|
||||
@@ -95,7 +95,6 @@ int mount(
|
||||
rtems_filesystem_location_info_t loc;
|
||||
rtems_filesystem_mount_table_entry_t *temp_mt_entry;
|
||||
rtems_filesystem_location_info_t *loc_to_free = NULL;
|
||||
size_t size;
|
||||
|
||||
/* XXX add code to check for required operations */
|
||||
|
||||
@@ -122,10 +121,7 @@ int mount(
|
||||
* Allocate a mount table entry
|
||||
*/
|
||||
|
||||
size = sizeof(rtems_filesystem_mount_table_entry_t);
|
||||
if ( device )
|
||||
size += strlen( device ) + 1;
|
||||
temp_mt_entry = malloc( size );
|
||||
temp_mt_entry = malloc( sizeof(rtems_filesystem_mount_table_entry_t) );
|
||||
|
||||
if ( !temp_mt_entry ) {
|
||||
errno = ENOMEM;
|
||||
@@ -134,11 +130,9 @@ int mount(
|
||||
|
||||
temp_mt_entry->mt_fs_root.mt_entry = temp_mt_entry;
|
||||
temp_mt_entry->options = options;
|
||||
if ( device ) {
|
||||
temp_mt_entry->dev =
|
||||
(char *)temp_mt_entry + sizeof( rtems_filesystem_mount_table_entry_t );
|
||||
if ( device )
|
||||
strcpy( temp_mt_entry->dev, device );
|
||||
} else
|
||||
else
|
||||
temp_mt_entry->dev = 0;
|
||||
|
||||
/*
|
||||
|
||||
@@ -112,7 +112,7 @@ scandir(dirname, namelist, select, dcomp)
|
||||
p->d_ino = d->d_ino;
|
||||
p->d_reclen = d->d_reclen;
|
||||
p->d_namlen = d->d_namlen;
|
||||
strncpy(p->d_name, d->d_name, p->d_namlen + 1);
|
||||
strncpy(d->d_name, p->d_name, p->d_namlen + 1);
|
||||
/*
|
||||
* Check to make sure the array has space left and
|
||||
* realloc the maximum size.
|
||||
|
||||
@@ -28,11 +28,6 @@ int symlink(
|
||||
if ( result != 0 )
|
||||
return -1;
|
||||
|
||||
if ( !loc.ops->symlink ) {
|
||||
rtems_filesystem_freenode( &loc );
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
}
|
||||
|
||||
result = (*loc.ops->symlink)( &loc, actualpath, name_start);
|
||||
|
||||
rtems_filesystem_freenode( &loc );
|
||||
|
||||
@@ -324,30 +324,19 @@ rtems_termios_close (void *arg)
|
||||
drainOutput (tty);
|
||||
if (tty->device.lastClose)
|
||||
(*tty->device.lastClose)(tty->major, tty->minor, arg);
|
||||
if (tty->forw == NULL) {
|
||||
if (tty->forw == NULL)
|
||||
rtems_termios_ttyTail = tty->back;
|
||||
if ( rtems_termios_ttyTail != NULL ) {
|
||||
rtems_termios_ttyTail->forw = NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
else
|
||||
tty->forw->back = tty->back;
|
||||
}
|
||||
if (tty->back == NULL) {
|
||||
if (tty->back == NULL)
|
||||
rtems_termios_ttyHead = tty->forw;
|
||||
if ( rtems_termios_ttyHead != NULL ) {
|
||||
rtems_termios_ttyHead->back = NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
else
|
||||
tty->back->forw = tty->forw;
|
||||
}
|
||||
rtems_semaphore_delete (tty->isem);
|
||||
rtems_semaphore_delete (tty->osem);
|
||||
rtems_semaphore_delete (tty->rawOutBufSemaphore);
|
||||
if (!tty->device.pollRead)
|
||||
rtems_semaphore_delete (tty->rawInBufSemaphore);
|
||||
free (tty->cbuf);
|
||||
free (tty);
|
||||
}
|
||||
rtems_semaphore_release (rtems_termios_ttyMutex);
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
/* clock.s
|
||||
*
|
||||
* This file contains the assembly code for the IDT 4650 clock driver.
|
||||
*
|
||||
* Author: Craig Lebakken <craigl@transition.com>
|
||||
*
|
||||
* COPYRIGHT (c) 1996 by Transition Networks Inc.
|
||||
*
|
||||
* To anyone who acknowledges that this file is provided "AS IS"
|
||||
* without any express or implied warranty:
|
||||
* permission to use, copy, modify, and distribute this file
|
||||
* for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice and this notice appears in all
|
||||
* copies, and that the name of Transition Networks not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* Transition Networks makes no representations about the suitability
|
||||
* of this software for any purpose.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
/* @(#)clock.S 08/20/96 1.2 */
|
||||
|
||||
#include <iregdef.h>
|
||||
#include <idtcpu.h>
|
||||
#include <idtmon.h>
|
||||
|
||||
FRAME(mips_set_timer,sp,0,ra)
|
||||
.set noreorder
|
||||
mfc0 t0,C0_COUNT
|
||||
nop
|
||||
addu t0,a0,t0
|
||||
mtc0 t0,C0_COMPARE
|
||||
nop
|
||||
j ra
|
||||
.set reorder
|
||||
ENDFRAME(mips_set_timer)
|
||||
|
||||
FRAME(mips_get_timer,sp,0,ra)
|
||||
.set noreorder
|
||||
mfc0 v0,C0_COUNT
|
||||
nop
|
||||
j ra
|
||||
.set reorder
|
||||
ENDFRAME(mips_get_timer)
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
H_FILES = null.h sci.h sh7_pfc.h sh7_sci.h
|
||||
H_FILES = io_types.h null.h sci.h sh7_pfc.h sh7_sci.h
|
||||
|
||||
# NOTE: Unlike other CPUS, we install into a subdirectory to avoid
|
||||
# file name conflicts
|
||||
|
||||
@@ -728,7 +728,7 @@ ipxcp_rejci(f, p, len)
|
||||
#define REJCINODE(opt,neg,val) REJCICHARS(opt,neg,val,sizeof(val))
|
||||
#define REJCINAME(opt,neg,val) REJCICHARS(opt,neg,val,strlen(val))
|
||||
|
||||
#define REJCIVOID(opt, neg) \
|
||||
#define REJCIVOID(gpt, neg! \
|
||||
if (neg && p[0] == opt) { \
|
||||
if ((len -= CILEN_VOID) < 0) \
|
||||
break; \
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/itrontests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/itrontests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/itrontests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/itrontests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/itrontests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/itrontests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/itrontests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/itrontests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -25,7 +25,7 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -25,7 +25,7 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -26,7 +26,7 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -25,7 +25,7 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -25,18 +25,18 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
if HAS_CXX
|
||||
LD_LIBS += -lrtems++
|
||||
LD_LIBS += $(CPLUS_LD_LIBS)
|
||||
|
||||
if HAS_CXX
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-cxx-exe)
|
||||
$(make-exe)
|
||||
|
||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
||||
else
|
||||
|
||||
@@ -25,7 +25,7 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -25,7 +25,7 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -25,7 +25,7 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -27,7 +27,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -27,7 +27,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -25,7 +25,7 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/psxtests.am
|
||||
|
||||
#
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user