forked from Imagelibrary/rtems
updates from Tony Bennett
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
#if defined(solaris2)
|
#if defined(solaris2)
|
||||||
#define O_NDELAY O_NONBLOCK
|
#define O_NDELAY O_NONBLOCK
|
||||||
#elif defined(RTEMS_NEWLIB)
|
#elif defined(RTEMS_NEWLIB)
|
||||||
#define O_NDELAY _FNBIO
|
#define O_NDELAY _FNBIO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -252,6 +252,9 @@ void *realloc(
|
|||||||
}
|
}
|
||||||
|
|
||||||
new_area = malloc( size );
|
new_area = malloc( size );
|
||||||
|
|
||||||
|
MSBUMP(malloc_calls, -1); /* subtract off the malloc */
|
||||||
|
|
||||||
if ( !new_area ) {
|
if ( !new_area ) {
|
||||||
free( ptr );
|
free( ptr );
|
||||||
return (void *) 0;
|
return (void *) 0;
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ libc_start_hook(rtems_tcb *current_task,
|
|||||||
* real target.
|
* real target.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RTEMS_UNIX
|
#ifdef NEED_SETVBUF
|
||||||
rtems_extension
|
rtems_extension
|
||||||
libc_begin_hook(rtems_tcb *current_task)
|
libc_begin_hook(rtems_tcb *current_task)
|
||||||
{
|
{
|
||||||
@@ -274,7 +274,7 @@ libc_init(int reentrant)
|
|||||||
|
|
||||||
libc_extension.thread_create = libc_create_hook;
|
libc_extension.thread_create = libc_create_hook;
|
||||||
libc_extension.thread_start = libc_start_hook;
|
libc_extension.thread_start = libc_start_hook;
|
||||||
#ifdef RTEMS_UNIX
|
#ifdef NEED_SETVBUF
|
||||||
libc_extension.thread_begin = libc_begin_hook;
|
libc_extension.thread_begin = libc_begin_hook;
|
||||||
#endif
|
#endif
|
||||||
libc_extension.thread_switch = libc_switch_hook;
|
libc_extension.thread_switch = libc_switch_hook;
|
||||||
|
|||||||
@@ -267,13 +267,13 @@ EXTERN void *_CPU_Interrupt_stack_high;
|
|||||||
#define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0
|
#define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* HPPA has 32 interrupts, then 32 external interrupts
|
* HPPA has 32 traps, then 32 external interrupts
|
||||||
* Rtems (_ISR_Vector_Table) is aware ONLY of the first 32
|
* Rtems (_ISR_Vector_Table) is aware ONLY of the first 32
|
||||||
* The BSP is aware of the external interrupts and possibly more.
|
* The BSP is aware of the external interrupts and possibly more.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CPU_INTERRUPT_NUMBER_OF_VECTORS (HPPA_INTERNAL_INTERRUPTS)
|
#define CPU_INTERRUPT_NUMBER_OF_VECTORS (HPPA_INTERNAL_TRAPS)
|
||||||
#define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1)
|
#define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -318,25 +318,32 @@ EXTERN void *_CPU_Interrupt_stack_high;
|
|||||||
* + set a particular level
|
* + set a particular level
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Disable interrupts; returning previous level in _level */
|
/* Disable interrupts; returning previous psw bits in _isr_level */
|
||||||
#define _CPU_ISR_Disable( _isr_cookie ) \
|
#define _CPU_ISR_Disable( _isr_level ) \
|
||||||
do { \
|
do { \
|
||||||
HPPA_ASM_RSM(HPPA_PSW_I, _isr_cookie); \
|
HPPA_ASM_RSM(HPPA_PSW_I, _isr_level); \
|
||||||
|
if (_isr_level & HPPA_PSW_I) _isr_level = 0; \
|
||||||
|
else _isr_level = 1; \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/* Enable interrupts to previous level from _CPU_ISR_Disable
|
/* Enable interrupts to previous level from _CPU_ISR_Disable
|
||||||
* does not change 'level' */
|
* does not change 'level' */
|
||||||
#define _CPU_ISR_Enable( _isr_cookie ) \
|
#define _CPU_ISR_Enable( _isr_level ) \
|
||||||
{ \
|
{ \
|
||||||
HPPA_ASM_MTSM( _isr_cookie ); \
|
register int _ignore; \
|
||||||
|
if (_isr_level == 0) HPPA_ASM_SSM(HPPA_PSW_I, _ignore); \
|
||||||
|
else HPPA_ASM_RSM(HPPA_PSW_I, _ignore); \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* restore, then disable interrupts; does not change level */
|
/* restore, then disable interrupts; does not change level */
|
||||||
#define _CPU_ISR_Flash( _isr_cookie ) \
|
#define _CPU_ISR_Flash( _isr_level ) \
|
||||||
{ \
|
{ \
|
||||||
register int _ignore; \
|
if (_isr_level == 0) \
|
||||||
_CPU_ISR_Enable( _isr_cookie ); \
|
{ \
|
||||||
_CPU_ISR_Disable( _ignore ); \
|
register int _ignore; \
|
||||||
|
HPPA_ASM_SSM(HPPA_PSW_I, _ignore); \
|
||||||
|
HPPA_ASM_RSM(HPPA_PSW_I, _ignore); \
|
||||||
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -568,6 +575,15 @@ void _CPU_Restore_float_context(
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The raw interrupt handler for external interrupts
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern void _Generic_ISR_Handler(
|
||||||
|
void
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
/* The following routine swaps the endian format of an unsigned int.
|
/* The following routine swaps the endian format of an unsigned int.
|
||||||
* It must be static so it can be referenced indirectly.
|
* It must be static so it can be referenced indirectly.
|
||||||
*/
|
*/
|
||||||
@@ -582,14 +598,6 @@ CPU_swap_u32(unsigned32 value)
|
|||||||
return( swapped );
|
return( swapped );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Unused; I think it should go away
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define enable_tracing()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* ! ASM */
|
#endif /* ! ASM */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -424,12 +424,15 @@ _CPU_Context_restore:
|
|||||||
ldw R27_OFFSET(arg0),%r27
|
ldw R27_OFFSET(arg0),%r27
|
||||||
ldw R28_OFFSET(arg0),%r28
|
ldw R28_OFFSET(arg0),%r28
|
||||||
ldw R29_OFFSET(arg0),%r29
|
ldw R29_OFFSET(arg0),%r29
|
||||||
ldw R30_OFFSET(arg0),%r30
|
# skipping r30 (sp) until we turn off interrupts
|
||||||
ldw R31_OFFSET(arg0),%r31
|
ldw R31_OFFSET(arg0),%r31
|
||||||
|
|
||||||
# Turn off Q & R & I so we can write interrupt control registers
|
# Turn off Q & R & I so we can write r30 and interrupt control registers
|
||||||
rsm HPPA_PSW_Q + HPPA_PSW_R + HPPA_PSW_I, %r0
|
rsm HPPA_PSW_Q + HPPA_PSW_R + HPPA_PSW_I, %r0
|
||||||
|
|
||||||
|
# now safe to restore r30
|
||||||
|
ldw R30_OFFSET(arg0),%r30
|
||||||
|
|
||||||
ldw IPSW_OFFSET(arg0), %r25
|
ldw IPSW_OFFSET(arg0), %r25
|
||||||
mtctl %r25, ipsw
|
mtctl %r25, ipsw
|
||||||
|
|
||||||
|
|||||||
@@ -124,93 +124,90 @@ extern "C" {
|
|||||||
* basic layout. Note numbers do not denote priority
|
* basic layout. Note numbers do not denote priority
|
||||||
*
|
*
|
||||||
* 0-31 basic traps and interrupts defined by HPPA architecture
|
* 0-31 basic traps and interrupts defined by HPPA architecture
|
||||||
* 32-63 32 external interrupts
|
* 0-31 32 external interrupts
|
||||||
* 64-... bsp defined
|
* 32-... bsp defined
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define HPPA_INTERRUPT_NON_EXISTENT 0
|
#define HPPA_TRAP_NON_EXISTENT 0
|
||||||
/* group 1 */
|
/* group 1 */
|
||||||
#define HPPA_INTERRUPT_HIGH_PRIORITY_MACHINE_CHECK 1
|
#define HPPA_TRAP_HIGH_PRIORITY_MACHINE_CHECK 1
|
||||||
/* group 2 */
|
/* group 2 */
|
||||||
#define HPPA_INTERRUPT_POWER_FAIL 2
|
#define HPPA_TRAP_POWER_FAIL 2
|
||||||
#define HPPA_INTERRUPT_RECOVERY_COUNTER 3
|
#define HPPA_TRAP_RECOVERY_COUNTER 3
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_INTERRUPT 4
|
#define HPPA_TRAP_EXTERNAL_INTERRUPT 4
|
||||||
#define HPPA_INTERRUPT_LOW_PRIORITY_MACHINE_CHECK 5
|
#define HPPA_TRAP_LOW_PRIORITY_MACHINE_CHECK 5
|
||||||
#define HPPA_INTERRUPT_PERFORMANCE_MONITOR 29
|
#define HPPA_TRAP_PERFORMANCE_MONITOR 29
|
||||||
/* group 3 */
|
/* group 3 */
|
||||||
#define HPPA_INTERRUPT_INSTRUCTION_TLB_MISS 6
|
#define HPPA_TRAP_INSTRUCTION_TLB_MISS 6
|
||||||
#define HPPA_INTERRUPT_INSTRUCTION_MEMORY_PROTECTION 7
|
#define HPPA_TRAP_INSTRUCTION_MEMORY_PROTECTION 7
|
||||||
#define HPPA_INTERRUPT_INSTRUCTION_DEBUG 30
|
#define HPPA_TRAP_INSTRUCTION_DEBUG 30
|
||||||
#define HPPA_INTERRUPT_ILLEGAL_INSTRUCTION 8
|
#define HPPA_TRAP_ILLEGAL_INSTRUCTION 8
|
||||||
#define HPPA_INTERRUPT_BREAK_INSTRUCTION 9
|
#define HPPA_TRAP_BREAK_INSTRUCTION 9
|
||||||
#define HPPA_INTERRUPT_PRIVILEGED_OPERATION 10
|
#define HPPA_TRAP_PRIVILEGED_OPERATION 10
|
||||||
#define HPPA_INTERRUPT_PRIVILEGED_REGISTER 11
|
#define HPPA_TRAP_PRIVILEGED_REGISTER 11
|
||||||
#define HPPA_INTERRUPT_OVERFLOW 12
|
#define HPPA_TRAP_OVERFLOW 12
|
||||||
#define HPPA_INTERRUPT_CONDITIONAL 13
|
#define HPPA_TRAP_CONDITIONAL 13
|
||||||
#define HPPA_INTERRUPT_ASSIST_EXCEPTION 14
|
#define HPPA_TRAP_ASSIST_EXCEPTION 14
|
||||||
#define HPPA_INTERRUPT_DATA_TLB_MISS 15
|
#define HPPA_TRAP_DATA_TLB_MISS 15
|
||||||
#define HPPA_INTERRUPT_NON_ACCESS_INSTRUCTION_TLB_MISS 16
|
#define HPPA_TRAP_NON_ACCESS_INSTRUCTION_TLB_MISS 16
|
||||||
#define HPPA_INTERRUPT_NON_ACCESS_DATA_TLB_MISS 17
|
#define HPPA_TRAP_NON_ACCESS_DATA_TLB_MISS 17
|
||||||
#define HPPA_INTERRUPT_DATA_MEMORY_ACCESS_RIGHTS 26
|
#define HPPA_TRAP_DATA_MEMORY_ACCESS_RIGHTS 26
|
||||||
#define HPPA_INTERRUPT_DATA_MEMORY_PROTECTION_ID 27
|
#define HPPA_TRAP_DATA_MEMORY_PROTECTION_ID 27
|
||||||
#define HPPA_INTERRUPT_UNALIGNED_DATA_REFERENCE 28
|
#define HPPA_TRAP_UNALIGNED_DATA_REFERENCE 28
|
||||||
#define HPPA_INTERRUPT_DATA_MEMORY_PROTECTION 18
|
#define HPPA_TRAP_DATA_MEMORY_PROTECTION 18
|
||||||
#define HPPA_INTERRUPT_DATA_MEMORY_BREAK 19
|
#define HPPA_TRAP_DATA_MEMORY_BREAK 19
|
||||||
#define HPPA_INTERRUPT_TLB_DIRTY_BIT 20
|
#define HPPA_TRAP_TLB_DIRTY_BIT 20
|
||||||
#define HPPA_INTERRUPT_PAGE_REFERENCE 21
|
#define HPPA_TRAP_PAGE_REFERENCE 21
|
||||||
#define HPPA_INTERRUPT_DATA_DEBUG 31
|
#define HPPA_TRAP_DATA_DEBUG 31
|
||||||
#define HPPA_INTERRUPT_ASSIST_EMULATION 22
|
#define HPPA_TRAP_ASSIST_EMULATION 22
|
||||||
/* group 4 */
|
/* group 4 */
|
||||||
#define HPPA_INTERRUPT_HIGHER_PRIVILEGE_TRANSFER 23
|
#define HPPA_TRAP_HIGHER_PRIVILEGE_TRANSFER 23
|
||||||
#define HPPA_INTERRUPT_LOWER_PRIVILEGE_TRANSFER 24
|
#define HPPA_TRAP_LOWER_PRIVILEGE_TRANSFER 24
|
||||||
#define HPPA_INTERRUPT_TAKEN_BRANCH 25
|
#define HPPA_TRAP_TAKEN_BRANCH 25
|
||||||
|
|
||||||
#define HPPA_INTERRUPT_ON_CHIP_MAX 31
|
#define HPPA_INTERNAL_TRAPS 32
|
||||||
|
|
||||||
/* External Interrupts via interrupt 4 */
|
/* External Interrupts via interrupt 4 */
|
||||||
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_BASE 32
|
#define HPPA_INTERRUPT_EXTERNAL_0 0
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_1 1
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_2 2
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_3 3
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_4 4
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_5 5
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_6 6
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_7 7
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_8 8
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_9 9
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_10 10
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_11 11
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_12 12
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_13 13
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_14 14
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_15 15
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_16 16
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_17 17
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_18 18
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_19 19
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_20 20
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_21 21
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_22 22
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_23 23
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_24 24
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_25 25
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_26 26
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_27 27
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_28 28
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_29 29
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_30 30
|
||||||
|
#define HPPA_INTERRUPT_EXTERNAL_31 31
|
||||||
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_0 32
|
#define HPPA_INTERRUPT_EXTERNAL_INTERVAL_TIMER HPPA_INTERRUPT_EXTERNAL_0
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_1 33
|
#define HPPA_EXTERNAL_INTERRUPTS 32
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_2 34
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_3 35
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_4 36
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_5 37
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_6 38
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_7 39
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_8 40
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_9 41
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_10 42
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_11 43
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_12 44
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_13 45
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_14 46
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_15 47
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_16 48
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_17 49
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_18 50
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_19 51
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_20 52
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_21 53
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_22 54
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_23 55
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_24 56
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_25 57
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_26 58
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_27 59
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_28 60
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_29 61
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_30 62
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_31 63
|
|
||||||
|
|
||||||
#define HPPA_INTERRUPT_EXTERNAL_INTERVAL_TIMER HPPA_INTERRUPT_EXTERNAL_0
|
|
||||||
#define HPPA_EXTERNAL_INTERRUPTS 32
|
|
||||||
#define HPPA_INTERNAL_INTERRUPTS 32
|
|
||||||
|
|
||||||
/* BSP defined interrupts begin here */
|
/* BSP defined interrupts begin here */
|
||||||
|
|
||||||
#define HPPA_INTERRUPT_MAX 64
|
#define HPPA_INTERRUPT_MAX 32
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cache characteristics
|
* Cache characteristics
|
||||||
@@ -219,6 +216,13 @@ extern "C" {
|
|||||||
#define HPPA_CACHELINE_SIZE 32
|
#define HPPA_CACHELINE_SIZE 32
|
||||||
#define HPPA_CACHELINE_MASK (HPPA_CACHELINE_SIZE - 1)
|
#define HPPA_CACHELINE_MASK (HPPA_CACHELINE_SIZE - 1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* page size characteristics
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define HPPA_PAGE_SIZE 4096
|
||||||
|
#define HPPA_PAGE_MASK (0xfffff000)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TLB characteristics
|
* TLB characteristics
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
#if defined(solaris2)
|
#if defined(solaris2)
|
||||||
#define O_NDELAY O_NONBLOCK
|
#define O_NDELAY O_NONBLOCK
|
||||||
#elif defined(RTEMS_NEWLIB)
|
#elif defined(RTEMS_NEWLIB)
|
||||||
#define O_NDELAY _FNBIO
|
#define O_NDELAY _FNBIO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -252,6 +252,9 @@ void *realloc(
|
|||||||
}
|
}
|
||||||
|
|
||||||
new_area = malloc( size );
|
new_area = malloc( size );
|
||||||
|
|
||||||
|
MSBUMP(malloc_calls, -1); /* subtract off the malloc */
|
||||||
|
|
||||||
if ( !new_area ) {
|
if ( !new_area ) {
|
||||||
free( ptr );
|
free( ptr );
|
||||||
return (void *) 0;
|
return (void *) 0;
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ libc_start_hook(rtems_tcb *current_task,
|
|||||||
* real target.
|
* real target.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RTEMS_UNIX
|
#ifdef NEED_SETVBUF
|
||||||
rtems_extension
|
rtems_extension
|
||||||
libc_begin_hook(rtems_tcb *current_task)
|
libc_begin_hook(rtems_tcb *current_task)
|
||||||
{
|
{
|
||||||
@@ -274,7 +274,7 @@ libc_init(int reentrant)
|
|||||||
|
|
||||||
libc_extension.thread_create = libc_create_hook;
|
libc_extension.thread_create = libc_create_hook;
|
||||||
libc_extension.thread_start = libc_start_hook;
|
libc_extension.thread_start = libc_start_hook;
|
||||||
#ifdef RTEMS_UNIX
|
#ifdef NEED_SETVBUF
|
||||||
libc_extension.thread_begin = libc_begin_hook;
|
libc_extension.thread_begin = libc_begin_hook;
|
||||||
#endif
|
#endif
|
||||||
libc_extension.thread_switch = libc_switch_hook;
|
libc_extension.thread_switch = libc_switch_hook;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ rtems_boolean Timer_driver_Find_average_overhead;
|
|||||||
void Timer_initialize()
|
void Timer_initialize()
|
||||||
{
|
{
|
||||||
Timer_starting = get_itimer();
|
Timer_starting = get_itimer();
|
||||||
|
set_eiem(0x80000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define AVG_OVERHEAD 0 /* It typically takes 3.0 microseconds */
|
#define AVG_OVERHEAD 0 /* It typically takes 3.0 microseconds */
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ rtems_task Test_task(
|
|||||||
directive_failed( status, "rtems_timer_fire_after" );
|
directive_failed( status, "rtems_timer_fire_after" );
|
||||||
|
|
||||||
while ( Stop_Test == FALSE ) {
|
while ( Stop_Test == FALSE ) {
|
||||||
for ( count=DOT_COUNT ; count ; count-- ) {
|
for ( count=DOT_COUNT ; count && (Stop_Test == FALSE) ; count-- ) {
|
||||||
status = rtems_event_receive(
|
status = rtems_event_receive(
|
||||||
RTEMS_EVENT_16,
|
RTEMS_EVENT_16,
|
||||||
RTEMS_DEFAULT_OPTIONS,
|
RTEMS_DEFAULT_OPTIONS,
|
||||||
@@ -90,6 +90,14 @@ rtems_task Test_task(
|
|||||||
}
|
}
|
||||||
put_dot('.');
|
put_dot('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wait a bit before shutting down so we don't screw up the other node
|
||||||
|
* when our MPCI shuts down
|
||||||
|
*/
|
||||||
|
|
||||||
|
rtems_task_wake_after(10);
|
||||||
|
|
||||||
puts( "\n*** END OF TEST 7 ***" );
|
puts( "\n*** END OF TEST 7 ***" );
|
||||||
exit( 0 );
|
exit( 0 );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,13 @@ void Exit_test( void )
|
|||||||
rtems_status_code status;
|
rtems_status_code status;
|
||||||
rtems_mode old_mode;
|
rtems_mode old_mode;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wait a bit before shutting down so we don't screw up the other node
|
||||||
|
* when our MPCI shuts down
|
||||||
|
*/
|
||||||
|
|
||||||
|
rtems_task_wake_after(20);
|
||||||
|
|
||||||
status = rtems_task_mode( RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode );
|
status = rtems_task_mode( RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode );
|
||||||
directive_failed( status, "rtems_task_mode" );
|
directive_failed( status, "rtems_task_mode" );
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
#if defined(solaris2)
|
#if defined(solaris2)
|
||||||
#define O_NDELAY O_NONBLOCK
|
#define O_NDELAY O_NONBLOCK
|
||||||
#elif defined(RTEMS_NEWLIB)
|
#elif defined(RTEMS_NEWLIB)
|
||||||
#define O_NDELAY _FNBIO
|
#define O_NDELAY _FNBIO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -252,6 +252,9 @@ void *realloc(
|
|||||||
}
|
}
|
||||||
|
|
||||||
new_area = malloc( size );
|
new_area = malloc( size );
|
||||||
|
|
||||||
|
MSBUMP(malloc_calls, -1); /* subtract off the malloc */
|
||||||
|
|
||||||
if ( !new_area ) {
|
if ( !new_area ) {
|
||||||
free( ptr );
|
free( ptr );
|
||||||
return (void *) 0;
|
return (void *) 0;
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ libc_start_hook(rtems_tcb *current_task,
|
|||||||
* real target.
|
* real target.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RTEMS_UNIX
|
#ifdef NEED_SETVBUF
|
||||||
rtems_extension
|
rtems_extension
|
||||||
libc_begin_hook(rtems_tcb *current_task)
|
libc_begin_hook(rtems_tcb *current_task)
|
||||||
{
|
{
|
||||||
@@ -274,7 +274,7 @@ libc_init(int reentrant)
|
|||||||
|
|
||||||
libc_extension.thread_create = libc_create_hook;
|
libc_extension.thread_create = libc_create_hook;
|
||||||
libc_extension.thread_start = libc_start_hook;
|
libc_extension.thread_start = libc_start_hook;
|
||||||
#ifdef RTEMS_UNIX
|
#ifdef NEED_SETVBUF
|
||||||
libc_extension.thread_begin = libc_begin_hook;
|
libc_extension.thread_begin = libc_begin_hook;
|
||||||
#endif
|
#endif
|
||||||
libc_extension.thread_switch = libc_switch_hook;
|
libc_extension.thread_switch = libc_switch_hook;
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ rtems_task Test_task(
|
|||||||
directive_failed( status, "rtems_timer_fire_after" );
|
directive_failed( status, "rtems_timer_fire_after" );
|
||||||
|
|
||||||
while ( Stop_Test == FALSE ) {
|
while ( Stop_Test == FALSE ) {
|
||||||
for ( count=DOT_COUNT ; count ; count-- ) {
|
for ( count=DOT_COUNT ; count && (Stop_Test == FALSE) ; count-- ) {
|
||||||
status = rtems_event_receive(
|
status = rtems_event_receive(
|
||||||
RTEMS_EVENT_16,
|
RTEMS_EVENT_16,
|
||||||
RTEMS_DEFAULT_OPTIONS,
|
RTEMS_DEFAULT_OPTIONS,
|
||||||
@@ -90,6 +90,14 @@ rtems_task Test_task(
|
|||||||
}
|
}
|
||||||
put_dot('.');
|
put_dot('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wait a bit before shutting down so we don't screw up the other node
|
||||||
|
* when our MPCI shuts down
|
||||||
|
*/
|
||||||
|
|
||||||
|
rtems_task_wake_after(10);
|
||||||
|
|
||||||
puts( "\n*** END OF TEST 7 ***" );
|
puts( "\n*** END OF TEST 7 ***" );
|
||||||
exit( 0 );
|
exit( 0 );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,13 @@ void Exit_test( void )
|
|||||||
rtems_status_code status;
|
rtems_status_code status;
|
||||||
rtems_mode old_mode;
|
rtems_mode old_mode;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wait a bit before shutting down so we don't screw up the other node
|
||||||
|
* when our MPCI shuts down
|
||||||
|
*/
|
||||||
|
|
||||||
|
rtems_task_wake_after(20);
|
||||||
|
|
||||||
status = rtems_task_mode( RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode );
|
status = rtems_task_mode( RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode );
|
||||||
directive_failed( status, "rtems_task_mode" );
|
directive_failed( status, "rtems_task_mode" );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user