From b3ac6a8dfe10aeaf3a9c59fd145bddfff119480e Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 12 Sep 1995 19:45:42 +0000 Subject: Initial attempt at building HP PA-RISC using Solaris hosted tools. Changed back to Newlib for Solaris UNIX simulator. --- cpukit/libcsupport/src/newlibc.c | 16 +++++++++++++--- cpukit/score/cpu/hppa1.1/cpu.c | 6 +++--- cpukit/score/src/mpci.c | 2 +- cpukit/score/src/thread.c | 3 +++ 4 files changed, 20 insertions(+), 7 deletions(-) (limited to 'cpukit') diff --git a/cpukit/libcsupport/src/newlibc.c b/cpukit/libcsupport/src/newlibc.c index e041668375..db959d6156 100644 --- a/cpukit/libcsupport/src/newlibc.c +++ b/cpukit/libcsupport/src/newlibc.c @@ -119,10 +119,19 @@ libc_switch_hook(rtems_tcb *current_task, /* XXX We can't use rtems_task_set_note() here since SYSI task has a * tid of 0, which is treated specially (optimized, actually) * by rtems_task_set_note + * + * NOTE: The above comment is no longer true and we need to use + * the extension data areas added about the same time. */ - impure_value = (rtems_unsigned32) _REENT; - MY_task_set_note(current_task, LIBC_NOTEPAD, impure_value); + /* + * Don't touch the outgoing task if it has been deleted. + */ + + if ( !_States_Is_transient( current_task->current_state ) ) { + impure_value = (rtems_unsigned32) _REENT; + MY_task_set_note(current_task, LIBC_NOTEPAD, impure_value); + } _REENT = (struct _reent *) MY_task_get_note(heir_task, LIBC_NOTEPAD); @@ -171,7 +180,8 @@ libc_delete_hook(rtems_tcb *current_task, ptr = (struct _reent *) MY_task_get_note(deleted_task, LIBC_NOTEPAD); } - if (ptr) + /* if (ptr) */ + if (ptr && ptr != &libc_global_reent) { _wrapup_reent(ptr); _reclaim_reent(ptr); diff --git a/cpukit/score/cpu/hppa1.1/cpu.c b/cpukit/score/cpu/hppa1.1/cpu.c index 6cb6347151..6dee0c1225 100644 --- a/cpukit/score/cpu/hppa1.1/cpu.c +++ b/cpukit/score/cpu/hppa1.1/cpu.c @@ -33,8 +33,8 @@ void hppa_external_interrupt(unsigned32, CPU_Interrupt_frame *); * So we use our own prototype instead of rtems_isr_entry */ -typedef rtems_isr ( *hppa_rtems_isr_entry )( - rtems_vector_number, +typedef void ( *hppa_rtems_isr_entry )( + ISR_Vector_number, CPU_Interrupt_frame * ); @@ -193,7 +193,7 @@ void _CPU_ISR_install_vector( void hppa_external_interrupt_initialize(void) { - rtems_isr_entry ignore; + hppa_rtems_isr_entry ignore; /* mark them all unused */ diff --git a/cpukit/score/src/mpci.c b/cpukit/score/src/mpci.c index ee72d6c396..33bfee80c5 100644 --- a/cpukit/score/src/mpci.c +++ b/cpukit/score/src/mpci.c @@ -67,7 +67,7 @@ void _MPCI_Handler_initialization( THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_RPC_REPLY, NULL, - RTEMS_TIMEOUT + RTEMS_TIMEOUT /* XXX */ ); } diff --git a/cpukit/score/src/thread.c b/cpukit/score/src/thread.c index d507e8e075..3f58c8ef12 100644 --- a/cpukit/score/src/thread.c +++ b/cpukit/score/src/thread.c @@ -471,6 +471,9 @@ void _Thread_Close( if ( the_thread->extensions ) (void) _Workspace_Free( the_thread->extensions ); + + the_thread->Start.stack = NULL; + the_thread->extensions = NULL; } /*PAGE -- cgit v1.2.3