mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-11-16 12:34:45 +00:00
Compare commits
52 Commits
4.5.0
...
4.5.1-pre3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b5b5deffe | ||
|
|
636ef9a103 | ||
|
|
b09580859c | ||
|
|
09b3a2facd | ||
|
|
f3dc8e62bc | ||
|
|
21766bd609 | ||
|
|
1fd366130f | ||
|
|
a637c087f4 | ||
|
|
3fe8f44b92 | ||
|
|
ec1e4f4f87 | ||
|
|
f883132802 | ||
|
|
410b18c1f3 | ||
|
|
7d573e9e15 | ||
|
|
e7585ed517 | ||
|
|
2b1d6de02c | ||
|
|
7f62220428 | ||
|
|
7307d94354 | ||
|
|
fda1996850 | ||
|
|
710b4e09b4 | ||
|
|
7ec48c0511 | ||
|
|
a0ef1069ca | ||
|
|
6343f19b5b | ||
|
|
b9adf9b180 | ||
|
|
a3ab6ab6de | ||
|
|
c48d648576 | ||
|
|
388cf1286f | ||
|
|
7a5dbdd33d | ||
|
|
09b663b38c | ||
|
|
a7b8de0589 | ||
|
|
3efa52954d | ||
|
|
36d90eec36 | ||
|
|
2b31cc882c | ||
|
|
b68cc333d3 | ||
|
|
6f1118a0c5 | ||
|
|
ca739de315 | ||
|
|
770f6e99fb | ||
|
|
45e1417c51 | ||
|
|
cbdb14497c | ||
|
|
b3a6713265 | ||
|
|
5ccb03b887 | ||
|
|
6559511b4e | ||
|
|
256226b87e | ||
|
|
3bb9542cd6 | ||
|
|
b748fff9c5 | ||
|
|
ca4c387054 | ||
|
|
079b1f4c2c | ||
|
|
99cfdc2dea | ||
|
|
e5aeae7b30 | ||
|
|
0b18036afc | ||
|
|
74835d7880 | ||
|
|
289f822131 | ||
|
|
d7d1096c78 |
@@ -15,6 +15,10 @@ 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)
|
||||
|
||||
|
||||
9
automake/leaf.am
Normal file
9
automake/leaf.am
Normal file
@@ -0,0 +1,9 @@
|
||||
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@
|
||||
@@ -109,7 +109,7 @@ typedef Objects_Control ITRON_Objects_Control;
|
||||
*/
|
||||
|
||||
#define _ITRON_Objects_Get( _the_information, _id, _the_object ) \
|
||||
_Objects_Get( (_the_information), (_id), (_the_object) )
|
||||
_Objects_Get_by_index( (_the_information), (_id), (_the_object) )
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ ER snd_msg(
|
||||
Objects_Locations location;
|
||||
unsigned32 message_priority;
|
||||
void *message_contents;
|
||||
CORE_message_queue_Status msg_status;
|
||||
|
||||
if ( !pk_msg )
|
||||
return E_PAR;
|
||||
@@ -46,7 +47,7 @@ ER snd_msg(
|
||||
message_priority = CORE_MESSAGE_QUEUE_SEND_REQUEST;
|
||||
|
||||
message_contents = pk_msg;
|
||||
_CORE_message_queue_Submit(
|
||||
msg_status = _CORE_message_queue_Submit(
|
||||
&the_mailbox->message_queue,
|
||||
&message_contents,
|
||||
sizeof(T_MSG *),
|
||||
@@ -60,8 +61,6 @@ ER snd_msg(
|
||||
}
|
||||
|
||||
_ITRON_return_errorno(
|
||||
_ITRON_Mailbox_Translate_core_message_queue_return_code(
|
||||
_Thread_Executing->Wait.return_code
|
||||
)
|
||||
_ITRON_Mailbox_Translate_core_message_queue_return_code( msg_status )
|
||||
);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ ER tsnd_mbf(
|
||||
Objects_Locations location;
|
||||
Watchdog_Interval interval;
|
||||
boolean wait;
|
||||
CORE_message_queue_Status msg_status;
|
||||
|
||||
if (msgsz <= 0 || !msg)
|
||||
return E_PAR;
|
||||
@@ -57,7 +58,7 @@ ER tsnd_mbf(
|
||||
|
||||
case OBJECTS_LOCAL:
|
||||
/* XXX Submit needs to take into account blocking */
|
||||
_CORE_message_queue_Submit(
|
||||
msg_status = _CORE_message_queue_Submit(
|
||||
&the_message_buffer->message_queue,
|
||||
msg,
|
||||
msgsz,
|
||||
@@ -69,7 +70,7 @@ ER tsnd_mbf(
|
||||
);
|
||||
_Thread_Enable_dispatch();
|
||||
return _ITRON_Message_buffer_Translate_core_message_buffer_return_code(
|
||||
_Thread_Executing->Wait.return_code
|
||||
msg_status
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,8 +36,11 @@ int clock_getres(
|
||||
case CLOCK_REALTIME:
|
||||
case CLOCK_PROCESS_CPUTIME:
|
||||
case CLOCK_THREAD_CPUTIME:
|
||||
if ( res )
|
||||
_POSIX_Interval_to_timespec( _TOD_Microseconds_per_tick, res );
|
||||
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 ); */
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -44,6 +44,7 @@ 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.
|
||||
@@ -70,7 +71,7 @@ int _POSIX_Message_queue_Send_support(
|
||||
set_errno_and_return_minus_one( EBADF );
|
||||
}
|
||||
|
||||
_CORE_message_queue_Submit(
|
||||
msg_status = _CORE_message_queue_Submit(
|
||||
&the_mq->Message_queue,
|
||||
(void *) msg_ptr,
|
||||
msg_len,
|
||||
@@ -86,12 +87,23 @@ int _POSIX_Message_queue_Send_support(
|
||||
);
|
||||
|
||||
_Thread_Enable_dispatch();
|
||||
if ( !_Thread_Executing->Wait.return_code )
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* 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;
|
||||
|
||||
set_errno_and_return_minus_one(
|
||||
_POSIX_Message_queue_Translate_core_message_queue_return_code(
|
||||
_Thread_Executing->Wait.return_code
|
||||
msg_status
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_system_task(
|
||||
rtems_attribute attribute_set
|
||||
)
|
||||
{
|
||||
return ( attribute_set & RTEMS_PRIORITY_CEILING );
|
||||
return ( attribute_set & RTEMS_SYSTEM_TASK );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -65,6 +65,7 @@ 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,6 +61,7 @@ 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 )
|
||||
@@ -97,7 +98,7 @@ rtems_status_code _Message_queue_Submit(
|
||||
case OBJECTS_LOCAL:
|
||||
switch ( submit_type ) {
|
||||
case MESSAGE_QUEUE_SEND_REQUEST:
|
||||
_CORE_message_queue_Send(
|
||||
msg_status = _CORE_message_queue_Send(
|
||||
&the_message_queue->message_queue,
|
||||
buffer,
|
||||
size,
|
||||
@@ -112,7 +113,7 @@ rtems_status_code _Message_queue_Submit(
|
||||
);
|
||||
break;
|
||||
case MESSAGE_QUEUE_URGENT_REQUEST:
|
||||
_CORE_message_queue_Urgent(
|
||||
msg_status = _CORE_message_queue_Urgent(
|
||||
&the_message_queue->message_queue,
|
||||
buffer,
|
||||
size,
|
||||
@@ -131,9 +132,13 @@ rtems_status_code _Message_queue_Submit(
|
||||
}
|
||||
|
||||
_Thread_Enable_dispatch();
|
||||
return _Message_queue_Translate_core_message_queue_return_code(
|
||||
_Thread_Executing->Wait.return_code
|
||||
);
|
||||
/*
|
||||
* 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 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-1999.
|
||||
* COPYRIGHT (c) 1989-2001.
|
||||
* 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 nosv | Yes, skip save of user model
|
||||
beq.b 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 norst | Yes, skip fp restore
|
||||
beq.b 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,24 +101,12 @@ 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, 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
|
||||
* 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
|
||||
* 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
|
||||
@@ -142,45 +130,31 @@ 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 )
|
||||
#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
|
||||
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
|
||||
1:
|
||||
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
|
||||
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:
|
||||
#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
|
||||
@@ -191,45 +165,44 @@ SYM (_ISR_Handler):
|
||||
addql #4,a7 | remove vector number
|
||||
|
||||
#if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1 )
|
||||
#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 _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
|
||||
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 exit | If dispatch disabled, exit
|
||||
bne.b 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 exit | NOT outer level, so branch
|
||||
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
|
||||
#endif
|
||||
|
||||
tstl SYM (_Context_Switch_necessary)
|
||||
| Is thread switch necessary?
|
||||
bne bframe | Yes, invoke dispatcher
|
||||
bne.b bframe | Yes, invoke dispatcher
|
||||
|
||||
tstl SYM (_ISR_Signals_to_thread_executing)
|
||||
| signals sent to Run_thread
|
||||
| while in interrupt handler?
|
||||
beq exit | No, then exit
|
||||
|
||||
beq.b exit | No, then exit
|
||||
|
||||
bframe: clrl SYM (_ISR_Signals_to_thread_executing)
|
||||
| If sent, will be processed
|
||||
|
||||
@@ -67,39 +67,49 @@
|
||||
.set GP_PC, (GP_CR + 4)
|
||||
.set GP_MSR, (GP_PC + 4)
|
||||
|
||||
#if (PPC_HAS_DOUBLE==1)
|
||||
.set FP_SIZE, 8
|
||||
#define LDF lfd
|
||||
#define STF stfd
|
||||
#else
|
||||
.set FP_SIZE, 4
|
||||
#define LDF lfs
|
||||
#define STF stfs
|
||||
#endif
|
||||
|
||||
.set FP_0, 0
|
||||
.set FP_1, (FP_0 + 4)
|
||||
.set FP_2, (FP_1 + 4)
|
||||
.set FP_3, (FP_2 + 4)
|
||||
.set FP_4, (FP_3 + 4)
|
||||
.set FP_5, (FP_4 + 4)
|
||||
.set FP_6, (FP_5 + 4)
|
||||
.set FP_7, (FP_6 + 4)
|
||||
.set FP_8, (FP_7 + 4)
|
||||
.set FP_9, (FP_8 + 4)
|
||||
.set FP_10, (FP_9 + 4)
|
||||
.set FP_11, (FP_10 + 4)
|
||||
.set FP_12, (FP_11 + 4)
|
||||
.set FP_13, (FP_12 + 4)
|
||||
.set FP_14, (FP_13 + 4)
|
||||
.set FP_15, (FP_14 + 4)
|
||||
.set FP_16, (FP_15 + 4)
|
||||
.set FP_17, (FP_16 + 4)
|
||||
.set FP_18, (FP_17 + 4)
|
||||
.set FP_19, (FP_18 + 4)
|
||||
.set FP_20, (FP_19 + 4)
|
||||
.set FP_21, (FP_20 + 4)
|
||||
.set FP_22, (FP_21 + 4)
|
||||
.set FP_23, (FP_22 + 4)
|
||||
.set FP_24, (FP_23 + 4)
|
||||
.set FP_25, (FP_24 + 4)
|
||||
.set FP_26, (FP_25 + 4)
|
||||
.set FP_27, (FP_26 + 4)
|
||||
.set FP_28, (FP_27 + 4)
|
||||
.set FP_29, (FP_28 + 4)
|
||||
.set FP_30, (FP_29 + 4)
|
||||
.set FP_31, (FP_30 + 4)
|
||||
.set FP_FPSCR, (FP_31 + 4)
|
||||
.set FP_1, (FP_0 + FP_SIZE)
|
||||
.set FP_2, (FP_1 + FP_SIZE)
|
||||
.set FP_3, (FP_2 + FP_SIZE)
|
||||
.set FP_4, (FP_3 + FP_SIZE)
|
||||
.set FP_5, (FP_4 + FP_SIZE)
|
||||
.set FP_6, (FP_5 + FP_SIZE)
|
||||
.set FP_7, (FP_6 + FP_SIZE)
|
||||
.set FP_8, (FP_7 + FP_SIZE)
|
||||
.set FP_9, (FP_8 + FP_SIZE)
|
||||
.set FP_10, (FP_9 + FP_SIZE)
|
||||
.set FP_11, (FP_10 + FP_SIZE)
|
||||
.set FP_12, (FP_11 + FP_SIZE)
|
||||
.set FP_13, (FP_12 + FP_SIZE)
|
||||
.set FP_14, (FP_13 + FP_SIZE)
|
||||
.set FP_15, (FP_14 + FP_SIZE)
|
||||
.set FP_16, (FP_15 + FP_SIZE)
|
||||
.set FP_17, (FP_16 + FP_SIZE)
|
||||
.set FP_18, (FP_17 + FP_SIZE)
|
||||
.set FP_19, (FP_18 + FP_SIZE)
|
||||
.set FP_20, (FP_19 + FP_SIZE)
|
||||
.set FP_21, (FP_20 + FP_SIZE)
|
||||
.set FP_22, (FP_21 + FP_SIZE)
|
||||
.set FP_23, (FP_22 + FP_SIZE)
|
||||
.set FP_24, (FP_23 + FP_SIZE)
|
||||
.set FP_25, (FP_24 + FP_SIZE)
|
||||
.set FP_26, (FP_25 + FP_SIZE)
|
||||
.set FP_27, (FP_26 + FP_SIZE)
|
||||
.set FP_28, (FP_27 + FP_SIZE)
|
||||
.set FP_29, (FP_28 + FP_SIZE)
|
||||
.set FP_30, (FP_29 + FP_SIZE)
|
||||
.set FP_31, (FP_30 + FP_SIZE)
|
||||
.set FP_FPSCR, (FP_31 + FP_SIZE)
|
||||
|
||||
.set IP_LINK, 0
|
||||
.set IP_0, (IP_LINK + 8)
|
||||
@@ -152,40 +162,40 @@
|
||||
PROC (_CPU_Context_save_fp):
|
||||
#if (PPC_HAS_FPU == 1)
|
||||
lwz r3, 0(r3)
|
||||
stfs f0, FP_0(r3)
|
||||
stfs f1, FP_1(r3)
|
||||
stfs f2, FP_2(r3)
|
||||
stfs f3, FP_3(r3)
|
||||
stfs f4, FP_4(r3)
|
||||
stfs f5, FP_5(r3)
|
||||
stfs f6, FP_6(r3)
|
||||
stfs f7, FP_7(r3)
|
||||
stfs f8, FP_8(r3)
|
||||
stfs f9, FP_9(r3)
|
||||
stfs f10, FP_10(r3)
|
||||
stfs f11, FP_11(r3)
|
||||
stfs f12, FP_12(r3)
|
||||
stfs f13, FP_13(r3)
|
||||
stfs f14, FP_14(r3)
|
||||
stfs f15, FP_15(r3)
|
||||
stfs f16, FP_16(r3)
|
||||
stfs f17, FP_17(r3)
|
||||
stfs f18, FP_18(r3)
|
||||
stfs f19, FP_19(r3)
|
||||
stfs f20, FP_20(r3)
|
||||
stfs f21, FP_21(r3)
|
||||
stfs f22, FP_22(r3)
|
||||
stfs f23, FP_23(r3)
|
||||
stfs f24, FP_24(r3)
|
||||
stfs f25, FP_25(r3)
|
||||
stfs f26, FP_26(r3)
|
||||
stfs f27, FP_27(r3)
|
||||
stfs f28, FP_28(r3)
|
||||
stfs f29, FP_29(r3)
|
||||
stfs f30, FP_30(r3)
|
||||
stfs f31, FP_31(r3)
|
||||
STF f0, FP_0(r3)
|
||||
STF f1, FP_1(r3)
|
||||
STF f2, FP_2(r3)
|
||||
STF f3, FP_3(r3)
|
||||
STF f4, FP_4(r3)
|
||||
STF f5, FP_5(r3)
|
||||
STF f6, FP_6(r3)
|
||||
STF f7, FP_7(r3)
|
||||
STF f8, FP_8(r3)
|
||||
STF f9, FP_9(r3)
|
||||
STF f10, FP_10(r3)
|
||||
STF f11, FP_11(r3)
|
||||
STF f12, FP_12(r3)
|
||||
STF f13, FP_13(r3)
|
||||
STF f14, FP_14(r3)
|
||||
STF f15, FP_15(r3)
|
||||
STF f16, FP_16(r3)
|
||||
STF f17, FP_17(r3)
|
||||
STF f18, FP_18(r3)
|
||||
STF f19, FP_19(r3)
|
||||
STF f20, FP_20(r3)
|
||||
STF f21, FP_21(r3)
|
||||
STF f22, FP_22(r3)
|
||||
STF f23, FP_23(r3)
|
||||
STF f24, FP_24(r3)
|
||||
STF f25, FP_25(r3)
|
||||
STF f26, FP_26(r3)
|
||||
STF f27, FP_27(r3)
|
||||
STF f28, FP_28(r3)
|
||||
STF f29, FP_29(r3)
|
||||
STF f30, FP_30(r3)
|
||||
STF f31, FP_31(r3)
|
||||
mffs f2
|
||||
stfs f2, FP_FPSCR(r3)
|
||||
STF f2, FP_FPSCR(r3)
|
||||
#endif
|
||||
blr
|
||||
|
||||
@@ -207,40 +217,40 @@ PROC (_CPU_Context_save_fp):
|
||||
PROC (_CPU_Context_restore_fp):
|
||||
#if (PPC_HAS_FPU == 1)
|
||||
lwz r3, 0(r3)
|
||||
lfs f2, FP_FPSCR(r3)
|
||||
LDF f2, FP_FPSCR(r3)
|
||||
mtfsf 255, f2
|
||||
lfs f0, FP_0(r3)
|
||||
lfs f1, FP_1(r3)
|
||||
lfs f2, FP_2(r3)
|
||||
lfs f3, FP_3(r3)
|
||||
lfs f4, FP_4(r3)
|
||||
lfs f5, FP_5(r3)
|
||||
lfs f6, FP_6(r3)
|
||||
lfs f7, FP_7(r3)
|
||||
lfs f8, FP_8(r3)
|
||||
lfs f9, FP_9(r3)
|
||||
lfs f10, FP_10(r3)
|
||||
lfs f11, FP_11(r3)
|
||||
lfs f12, FP_12(r3)
|
||||
lfs f13, FP_13(r3)
|
||||
lfs f14, FP_14(r3)
|
||||
lfs f15, FP_15(r3)
|
||||
lfs f16, FP_16(r3)
|
||||
lfs f17, FP_17(r3)
|
||||
lfs f18, FP_18(r3)
|
||||
lfs f19, FP_19(r3)
|
||||
lfs f20, FP_20(r3)
|
||||
lfs f21, FP_21(r3)
|
||||
lfs f22, FP_22(r3)
|
||||
lfs f23, FP_23(r3)
|
||||
lfs f24, FP_24(r3)
|
||||
lfs f25, FP_25(r3)
|
||||
lfs f26, FP_26(r3)
|
||||
lfs f27, FP_27(r3)
|
||||
lfs f28, FP_28(r3)
|
||||
lfs f29, FP_29(r3)
|
||||
lfs f30, FP_30(r3)
|
||||
lfs f31, FP_31(r3)
|
||||
LDF f0, FP_0(r3)
|
||||
LDF f1, FP_1(r3)
|
||||
LDF f2, FP_2(r3)
|
||||
LDF f3, FP_3(r3)
|
||||
LDF f4, FP_4(r3)
|
||||
LDF f5, FP_5(r3)
|
||||
LDF f6, FP_6(r3)
|
||||
LDF f7, FP_7(r3)
|
||||
LDF f8, FP_8(r3)
|
||||
LDF f9, FP_9(r3)
|
||||
LDF f10, FP_10(r3)
|
||||
LDF f11, FP_11(r3)
|
||||
LDF f12, FP_12(r3)
|
||||
LDF f13, FP_13(r3)
|
||||
LDF f14, FP_14(r3)
|
||||
LDF f15, FP_15(r3)
|
||||
LDF f16, FP_16(r3)
|
||||
LDF f17, FP_17(r3)
|
||||
LDF f18, FP_18(r3)
|
||||
LDF f19, FP_19(r3)
|
||||
LDF f20, FP_20(r3)
|
||||
LDF f21, FP_21(r3)
|
||||
LDF f22, FP_22(r3)
|
||||
LDF f23, FP_23(r3)
|
||||
LDF f24, FP_24(r3)
|
||||
LDF f25, FP_25(r3)
|
||||
LDF f26, FP_26(r3)
|
||||
LDF f27, FP_27(r3)
|
||||
LDF f28, FP_28(r3)
|
||||
LDF f29, FP_29(r3)
|
||||
LDF f30, FP_30(r3)
|
||||
LDF f31, FP_31(r3)
|
||||
#endif
|
||||
blr
|
||||
|
||||
|
||||
@@ -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 ****
|
||||
|
||||
ld [%i0], %l0
|
||||
nop; nop; nop; ! Need three nops before EF is
|
||||
ld [%i0], %l0 ! active due to pipeline delay!!!
|
||||
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 ****
|
||||
|
||||
ld [%i0], %l0
|
||||
nop; nop; nop; ! Need three nops before EF is
|
||||
ld [%i0], %l0 ! active due to pipeline delay!!!
|
||||
ldd [%l0 + FO_F1_OFFSET], %f0
|
||||
ldd [%l0 + F2_F3_OFFSET], %f2
|
||||
ldd [%l0 + F4_F5_OFFSET], %f4
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
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,7 +95,8 @@ 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_TIMEOUT,
|
||||
CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT
|
||||
} CORE_message_queue_Status;
|
||||
|
||||
/*
|
||||
@@ -239,7 +240,7 @@ CORE_message_queue_Status _CORE_message_queue_Broadcast(
|
||||
*
|
||||
*/
|
||||
|
||||
void _CORE_message_queue_Submit(
|
||||
CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
CORE_message_queue_Control *the_message_queue,
|
||||
void *buffer,
|
||||
unsigned32 size,
|
||||
|
||||
@@ -443,6 +443,12 @@ Objects_Control *_Objects_Get (
|
||||
Objects_Locations *location
|
||||
);
|
||||
|
||||
Objects_Control *_Objects_Get_by_index (
|
||||
Objects_Information *information,
|
||||
Objects_Id id,
|
||||
Objects_Locations *location
|
||||
);
|
||||
|
||||
/*
|
||||
* _Objects_Get_next
|
||||
*
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
* This routine sends a message to the end of the specified message queue.
|
||||
*/
|
||||
|
||||
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Send(
|
||||
RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send(
|
||||
CORE_message_queue_Control *the_message_queue,
|
||||
void *buffer,
|
||||
unsigned32 size,
|
||||
@@ -37,7 +37,7 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Send(
|
||||
Watchdog_Interval timeout
|
||||
)
|
||||
{
|
||||
_CORE_message_queue_Submit(
|
||||
return _CORE_message_queue_Submit(
|
||||
the_message_queue,
|
||||
buffer,
|
||||
size,
|
||||
@@ -62,7 +62,7 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Send(
|
||||
* This routine sends a message to the front of the specified message queue.
|
||||
*/
|
||||
|
||||
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Urgent(
|
||||
RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Urgent(
|
||||
CORE_message_queue_Control *the_message_queue,
|
||||
void *buffer,
|
||||
unsigned32 size,
|
||||
@@ -72,7 +72,7 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Urgent(
|
||||
Watchdog_Interval timeout
|
||||
)
|
||||
{
|
||||
_CORE_message_queue_Submit(
|
||||
return _CORE_message_queue_Submit(
|
||||
the_message_queue,
|
||||
buffer,
|
||||
size,
|
||||
|
||||
@@ -111,8 +111,10 @@ RTEMS_INLINE_ROUTINE void _Thread_Unblock (
|
||||
|
||||
RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void )
|
||||
{
|
||||
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
|
||||
if ( _Thread_Executing->fp_context != NULL )
|
||||
_Context_Restore_fp( &_Thread_Executing->fp_context );
|
||||
#endif
|
||||
|
||||
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
|
||||
}
|
||||
@@ -144,12 +146,14 @@ RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
|
||||
* FALSE otherwise.
|
||||
*/
|
||||
|
||||
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
|
||||
RTEMS_INLINE_ROUTINE boolean _Thread_Is_allocated_fp (
|
||||
Thread_Control *the_thread
|
||||
)
|
||||
{
|
||||
return ( the_thread == _Thread_Allocated_fp );
|
||||
}
|
||||
#endif
|
||||
|
||||
/*PAGE
|
||||
*
|
||||
@@ -161,10 +165,12 @@ RTEMS_INLINE_ROUTINE boolean _Thread_Is_allocated_fp (
|
||||
* point context is now longer associated with an active thread.
|
||||
*/
|
||||
|
||||
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
|
||||
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
|
||||
{
|
||||
_Thread_Allocated_fp = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*PAGE
|
||||
*
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
|
||||
#define _Thread_Restart_self() \
|
||||
{ \
|
||||
if ( _Thread_Executing->fp_context != NULL ) \
|
||||
@@ -74,6 +75,12 @@
|
||||
\
|
||||
_CPU_Context_Restart_self( &_Thread_Executing->Registers ); \
|
||||
}
|
||||
#else
|
||||
#define _Thread_Restart_self() \
|
||||
{ \
|
||||
_CPU_Context_Restart_self( &_Thread_Executing->Registers ); \
|
||||
}
|
||||
#endif
|
||||
|
||||
/*PAGE
|
||||
*
|
||||
@@ -96,8 +103,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
|
||||
#define _Thread_Is_allocated_fp( _the_thread ) \
|
||||
( (_the_thread) == _Thread_Allocated_fp )
|
||||
#endif
|
||||
|
||||
/*PAGE
|
||||
*
|
||||
@@ -105,8 +114,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
|
||||
#define _Thread_Deallocate_fp() \
|
||||
_Thread_Allocated_fp = NULL
|
||||
#endif
|
||||
|
||||
/*PAGE
|
||||
*
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
* error code - if unsuccessful
|
||||
*/
|
||||
|
||||
void _CORE_message_queue_Submit(
|
||||
CORE_message_queue_Status _CORE_message_queue_Submit(
|
||||
CORE_message_queue_Control *the_message_queue,
|
||||
void *buffer,
|
||||
unsigned32 size,
|
||||
@@ -67,14 +67,9 @@ void _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 ) {
|
||||
_Thread_Executing->Wait.return_code =
|
||||
CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
|
||||
return;
|
||||
return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -96,7 +91,7 @@ void _CORE_message_queue_Submit(
|
||||
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
|
||||
(*api_message_queue_mp_support) ( the_thread, id );
|
||||
#endif
|
||||
return;
|
||||
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,10 +109,9 @@ void _CORE_message_queue_Submit(
|
||||
/*
|
||||
* NOTE: If the system is consistent, this error should never occur.
|
||||
*/
|
||||
|
||||
if ( !the_message ) {
|
||||
_Thread_Executing->Wait.return_code =
|
||||
CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
|
||||
return;
|
||||
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
|
||||
}
|
||||
|
||||
_CORE_message_queue_Copy_buffer(
|
||||
@@ -133,7 +127,7 @@ void _CORE_message_queue_Submit(
|
||||
the_message,
|
||||
submit_type
|
||||
);
|
||||
return;
|
||||
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -143,20 +137,39 @@ void _CORE_message_queue_Submit(
|
||||
*/
|
||||
|
||||
if ( !wait ) {
|
||||
_Thread_Executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
|
||||
return;
|
||||
return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
|
||||
}
|
||||
|
||||
executing = _Thread_Executing;
|
||||
/*
|
||||
* Do NOT block on a send if the caller is in an ISR. It is
|
||||
* deadly to block in an ISR.
|
||||
*/
|
||||
|
||||
_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 );
|
||||
if ( _ISR_Is_in_progress() ) {
|
||||
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
|
||||
}
|
||||
|
||||
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
@@ -72,7 +72,9 @@ void _CORE_mutex_Initialize(
|
||||
the_mutex->nest_count = 1;
|
||||
the_mutex->holder = _Thread_Executing;
|
||||
the_mutex->holder_id = _Thread_Executing->Object.id;
|
||||
_Thread_Executing->resource_count++;
|
||||
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
|
||||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) )
|
||||
_Thread_Executing->resource_count++;
|
||||
} else {
|
||||
the_mutex->nest_count = 0;
|
||||
the_mutex->holder = NULL;
|
||||
|
||||
@@ -53,17 +53,11 @@ void _CORE_mutex_Seize(
|
||||
ISR_Level level;
|
||||
|
||||
executing = _Thread_Executing;
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
|
||||
_ISR_Disable( level );
|
||||
@@ -72,17 +66,17 @@ void _CORE_mutex_Seize(
|
||||
the_mutex->holder = executing;
|
||||
the_mutex->holder_id = executing->Object.id;
|
||||
the_mutex->nest_count = 1;
|
||||
executing->resource_count++;
|
||||
if ( _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ||
|
||||
_CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) )
|
||||
executing->resource_count++;
|
||||
_ISR_Enable( level );
|
||||
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 ) {
|
||||
/*
|
||||
* 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){
|
||||
_Thread_Change_priority(
|
||||
the_mutex->holder,
|
||||
the_mutex->Attributes.priority_ceiling,
|
||||
@@ -120,40 +114,27 @@ void _CORE_mutex_Seize(
|
||||
executing->Wait.id = id;
|
||||
_ISR_Enable( level );
|
||||
|
||||
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;
|
||||
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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
|
||||
|
||||
if ( _Thread_Executing->Wait.return_code == CORE_MUTEX_STATUS_SUCCESSFUL ) {
|
||||
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;
|
||||
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
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,7 +86,9 @@ CORE_mutex_Status _CORE_mutex_Surrender(
|
||||
}
|
||||
}
|
||||
|
||||
_Thread_Executing->resource_count--;
|
||||
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
|
||||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) )
|
||||
holder->resource_count--;
|
||||
the_mutex->holder = NULL;
|
||||
the_mutex->holder_id = 0;
|
||||
|
||||
@@ -96,20 +98,14 @@ CORE_mutex_Status _CORE_mutex_Surrender(
|
||||
* mutex (i.e. resource) this task has.
|
||||
*/
|
||||
|
||||
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 ( _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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( ( the_thread = _Thread_queue_Dequeue( &the_mutex->Wait_queue ) ) ) {
|
||||
|
||||
#if defined(RTEMS_MULTIPROCESSING)
|
||||
|
||||
@@ -43,7 +43,15 @@ 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;
|
||||
|
||||
|
||||
@@ -53,11 +53,18 @@ Objects_Control *_Objects_Get(
|
||||
Objects_Control *the_object;
|
||||
unsigned32 index;
|
||||
|
||||
index = _Objects_Get_index( id );
|
||||
#if defined(RTEMS_MULTIPROCESSING)
|
||||
index = id - information->minimum_id + 1;
|
||||
#else
|
||||
/* index = _Objects_Get_index( id ); */
|
||||
index = id & 0x0000ffff;
|
||||
/* This should work but doesn't always :( */
|
||||
/* index = (unsigned16) id; */
|
||||
#endif
|
||||
|
||||
if ( information->maximum >= index ) {
|
||||
_Thread_Disable_dispatch();
|
||||
if ( (the_object = _Objects_Get_local_object( information, index )) != NULL ) {
|
||||
if ( (the_object = information->local_table[ index ]) != NULL ) {
|
||||
*location = OBJECTS_LOCAL;
|
||||
return( the_object );
|
||||
}
|
||||
@@ -67,12 +74,7 @@ Objects_Control *_Objects_Get(
|
||||
}
|
||||
*location = OBJECTS_ERROR;
|
||||
#if defined(RTEMS_MULTIPROCESSING)
|
||||
_Objects_MP_Is_remote(
|
||||
information,
|
||||
_Objects_Build_id( information->the_class, _Objects_Local_node, index ),
|
||||
location,
|
||||
&the_object
|
||||
);
|
||||
_Objects_MP_Is_remote( information, id, location, &the_object );
|
||||
return the_object;
|
||||
#else
|
||||
return NULL;
|
||||
|
||||
@@ -67,7 +67,6 @@ 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;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ void _Thread_Close(
|
||||
|
||||
_User_extensions_Thread_delete( the_thread );
|
||||
|
||||
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
|
||||
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
|
||||
if ( _Thread_Is_allocated_fp( the_thread ) )
|
||||
_Thread_Deallocate_fp();
|
||||
@@ -60,7 +61,8 @@ void _Thread_Close(
|
||||
the_thread->fp_context = NULL;
|
||||
|
||||
if ( the_thread->Start.fp_context )
|
||||
(void) _Workspace_Free( the_thread->Start.fp_context );
|
||||
(void) _Workspace_Free( the_thread->Start.fp_context );
|
||||
#endif
|
||||
|
||||
_Thread_Stack_Free( the_thread );
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ SECTIONS
|
||||
*(.dtors)
|
||||
LONG(0)
|
||||
__DTOR_END__ = .;
|
||||
_rodata_start 5 . ;
|
||||
_rodata_start = . ;
|
||||
*(.rodata)
|
||||
*(.gnu.linkonce.r*)
|
||||
_erodata = ALIGN( 0x10 ) ;
|
||||
|
||||
@@ -8,14 +8,15 @@
|
||||
%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded)
|
||||
|
||||
*lib:
|
||||
%{!qrtems: %(old_lib)} \
|
||||
%{qrtems: --start-group -lc \
|
||||
%{!qrtems_debug: -lrtemsall } %{qrtems_debug: -lrtemsall_g} \
|
||||
-lgcc --end-group}
|
||||
%{!qrtems: %(old_lib)} %{qrtems: --start-group \
|
||||
%{!qrtems_debug: -lrtemsall} %{qrtems_debug: -lrtemsall_g} \
|
||||
-lc -lgcc --end-group \
|
||||
%{!qnolinkcmds: -T linkcmds%s}}
|
||||
|
||||
*startfile:
|
||||
%{!qrtems: %(old_startfile)} \
|
||||
%{qrtems: %{qrtems_debug: start_g.o%s} %{!qrtems_debug: start.o%s}
|
||||
%{!qrtems: %(old_startfile)} %{qrtems: \
|
||||
%{!qrtems_debug: } \
|
||||
%{qrtems_debug: }}
|
||||
|
||||
*link:
|
||||
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start}
|
||||
|
||||
@@ -25,7 +25,9 @@ $(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
|
||||
anclude $(top_srcdir)/../../../../../../automake/lib.am
|
||||
include $(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) } >RAM
|
||||
.fini : { *(.fini) } >RAM
|
||||
.init : { __init = .; *(.init) } >RAM
|
||||
.fini : { __fini = .; *(.fini) } >RAM
|
||||
.rodata : { *(.rodata) *(.gnu.linkonce.r*) } >RAM
|
||||
.rodata1 : { *(.rodata1) } >RAM
|
||||
PROVIDE (_etext = .);
|
||||
|
||||
@@ -78,17 +78,16 @@ __rtems_entry_point:
|
||||
isync
|
||||
|
||||
/*
|
||||
* we now have the 1st 64M of ram mapped with the bats.
|
||||
* 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.
|
||||
*/
|
||||
|
||||
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
|
||||
@@ -99,6 +98,15 @@ 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
|
||||
|
||||
|
||||
@@ -19,8 +19,9 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __SIS_h
|
||||
#define __SIS_h
|
||||
#ifndef __ERC32_BSP_h
|
||||
#define __ERC32_BSP_h
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -90,16 +91,19 @@ extern "C" {
|
||||
#else /* use a regular asynchronous trap */
|
||||
|
||||
#define TEST_INTERRUPT_SOURCE ERC32_INTERRUPT_EXTERNAL_1
|
||||
#define TEST_INTERRUPT_SOURCE2 (ERC32_INTERRUPT_EXTERNAL_1+1)
|
||||
#define TEST_VECTOR ERC32_TRAP_TYPE( TEST_INTERRUPT_SOURCE )
|
||||
#define TEST_VECTOR2 ERC32_TRAP_TYPE( TEST_INTERRUPT_SOURCE2 )
|
||||
|
||||
#define MUST_WAIT_FOR_INTERRUPT 1
|
||||
|
||||
#define Install_tm27_vector( handler ) \
|
||||
set_vector( (handler), TEST_VECTOR, 1 );
|
||||
set_vector( (handler), TEST_VECTOR, 1 ); \
|
||||
set_vector( (handler), TEST_VECTOR2, 1 );
|
||||
|
||||
#define Cause_tm27_intr() \
|
||||
do { \
|
||||
ERC32_Force_interrupt( TEST_INTERRUPT_SOURCE ); \
|
||||
ERC32_Force_interrupt( TEST_INTERRUPT_SOURCE+(Interrupt_nest>>1) ); \
|
||||
nop(); \
|
||||
nop(); \
|
||||
nop(); \
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -29,7 +29,8 @@ int chdir(
|
||||
* Get the node where we wish to go.
|
||||
*/
|
||||
|
||||
result = rtems_filesystem_evaluate_path( pathname, 0, &loc, TRUE );
|
||||
result = rtems_filesystem_evaluate_path(
|
||||
pathname, RTEMS_LIBIO_PERMS_SEARCH, &loc, TRUE );
|
||||
if ( result != 0 )
|
||||
return -1;
|
||||
|
||||
|
||||
@@ -33,6 +33,11 @@ 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,6 +43,9 @@ 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,10 +131,16 @@ int fcntl(
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
if ((ret >= 0) && iop->handlers->fcntl) {
|
||||
int err = (*iop->handlers->fcntl)( cmd, iop );
|
||||
if (err) {
|
||||
errno = err;
|
||||
if (ret >= 0) {
|
||||
if (iop->handlers->fcntl) {
|
||||
int err = (*iop->handlers->fcntl)( cmd, iop );
|
||||
if (err) {
|
||||
errno = err;
|
||||
ret = -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
errno = ENOTSUP;
|
||||
ret = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,9 @@ 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;
|
||||
register DIR *dir = 0;
|
||||
register dev_t dev;
|
||||
register ino_t ino;
|
||||
register int first;
|
||||
@@ -254,6 +254,7 @@ 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';
|
||||
@@ -271,6 +272,8 @@ notfound:
|
||||
/* FALLTHROUGH */
|
||||
|
||||
err:
|
||||
if(dir)
|
||||
(void) _closedir (dir);
|
||||
if (ptsize)
|
||||
free (pt);
|
||||
free (up);
|
||||
|
||||
@@ -175,19 +175,11 @@ int imfs_dir_lseek(
|
||||
int whence
|
||||
)
|
||||
{
|
||||
off_t normal_offset;
|
||||
|
||||
normal_offset = (offset/sizeof(struct dirent)) * sizeof(struct dirent);
|
||||
|
||||
|
||||
switch( whence )
|
||||
{
|
||||
case SEEK_SET: /* absolute move from the start of the file */
|
||||
iop->offset = normal_offset;
|
||||
break;
|
||||
|
||||
case SEEK_CUR: /* relative move */
|
||||
iop->offset = iop->offset + normal_offset;
|
||||
iop->offset = (offset/sizeof(struct dirent)) * sizeof(struct dirent);
|
||||
break;
|
||||
|
||||
case SEEK_END: /* Movement past the end of the directory via lseek */
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "imfs.h"
|
||||
|
||||
static char dotname[2] = ".";
|
||||
static char dotdotname[2] = "..";
|
||||
static char dotdotname[3] = "..";
|
||||
|
||||
IMFS_jnode_t *IMFS_find_match_in_dir(
|
||||
IMFS_jnode_t *directory,
|
||||
|
||||
@@ -33,6 +33,9 @@ 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,6 +80,11 @@ 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,10 +473,16 @@ 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_device_major_number) ((_dev) >> 32); \
|
||||
(_minor) = (rtems_device_minor_number) ((_dev) & 0xFFFFFFFF); \
|
||||
(_major) = rtems_filesystem_dev_major_t ( _dev ); \
|
||||
(_minor) = rtems_filesystem_dev_minor_t( _dev ); \
|
||||
} while(0)
|
||||
|
||||
/*
|
||||
|
||||
@@ -32,6 +32,13 @@ 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,8 +41,16 @@ 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,6 +11,10 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "libio_.h"
|
||||
@@ -22,15 +26,25 @@ 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;
|
||||
@@ -41,18 +55,27 @@ off_t lseek(
|
||||
break;
|
||||
|
||||
case SEEK_END:
|
||||
iop->offset = iop->size - offset;
|
||||
iop->offset = iop->size + offset;
|
||||
break;
|
||||
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
}
|
||||
|
||||
if ( !iop->handlers->lseek )
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
/*
|
||||
* At this time, handlers assume iop->offset has the desired
|
||||
* new offset.
|
||||
*/
|
||||
|
||||
return (*iop->handlers->lseek)( iop, offset, whence );
|
||||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -112,6 +112,9 @@ int memfile_close(
|
||||
|
||||
the_jnode = iop->file_info;
|
||||
|
||||
if (iop->flags & LIBIO_FLAGS_APPEND)
|
||||
iop->offset = the_jnode->info.file.size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -340,7 +343,6 @@ MEMFILE_STATIC int IMFS_memfile_addblock(
|
||||
#endif
|
||||
|
||||
memory = memfile_alloc_block();
|
||||
assert( memory );
|
||||
if ( !memory )
|
||||
return 1;
|
||||
*block_entry_ptr = memory;
|
||||
@@ -497,6 +499,8 @@ 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,6 +43,11 @@ 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,6 +95,7 @@ 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 */
|
||||
|
||||
@@ -121,7 +122,10 @@ int mount(
|
||||
* Allocate a mount table entry
|
||||
*/
|
||||
|
||||
temp_mt_entry = malloc( sizeof(rtems_filesystem_mount_table_entry_t) );
|
||||
size = sizeof(rtems_filesystem_mount_table_entry_t);
|
||||
if ( device )
|
||||
size += strlen( device ) + 1;
|
||||
temp_mt_entry = malloc( size );
|
||||
|
||||
if ( !temp_mt_entry ) {
|
||||
errno = ENOMEM;
|
||||
@@ -130,9 +134,11 @@ int mount(
|
||||
|
||||
temp_mt_entry->mt_fs_root.mt_entry = temp_mt_entry;
|
||||
temp_mt_entry->options = options;
|
||||
if ( device )
|
||||
if ( device ) {
|
||||
temp_mt_entry->dev =
|
||||
(char *)temp_mt_entry + sizeof( rtems_filesystem_mount_table_entry_t );
|
||||
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(d->d_name, p->d_name, p->d_namlen + 1);
|
||||
strncpy(p->d_name, d->d_name, p->d_namlen + 1);
|
||||
/*
|
||||
* Check to make sure the array has space left and
|
||||
* realloc the maximum size.
|
||||
|
||||
@@ -28,6 +28,11 @@ 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 );
|
||||
|
||||
45
c/src/lib/libcpu/mips/clock/clock.S
Normal file
45
c/src/lib/libcpu/mips/clock/clock.S
Normal file
@@ -0,0 +1,45 @@
|
||||
/* 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 = io_types.h null.h sci.h sh7_pfc.h sh7_sci.h
|
||||
H_FILES = 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(gpt, neg! \
|
||||
#define REJCIVOID(opt, neg) \
|
||||
if (neg && p[0] == opt) { \
|
||||
if ((len -= CILEN_VOID) < 0) \
|
||||
break; \
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
|
||||
@@ -25,18 +25,19 @@ PRINT_SRCS = $(DOCS)
|
||||
PGM = ${ARCH}/$(TEST).exe
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(top_srcdir)/libtests.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
LD_LIBS += $(CPLUS_LD_LIBS)
|
||||
LD_LIBS += -lrtems++$(LIB_VARIANT)
|
||||
|
||||
if HAS_CXX
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
$(make-cxx-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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
@@ -26,5 +26,5 @@ rtems_timer_service_routine Delayed_send_event(
|
||||
rtems_status_code status;
|
||||
|
||||
status = rtems_event_send( Task_id[ 1 ], RTEMS_EVENT_16 );
|
||||
directive_failed( status, "rtems_event_send" );
|
||||
directive_failed_with_level( status, "rtems_event_send", 1 );
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ OBJS = $(C_O_FILES)
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
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 $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(top_srcdir)/../../../../automake/leaf.am
|
||||
include $(top_srcdir)/mptests.am
|
||||
|
||||
if HAS_MP
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user