incorporate Tony's patches:

+ c/src/lib/libc/support/generic/malloc.c did not initialize the
    sbrk amount
  + _Thread_Handler in c/src/exec/rtems/thread.c left a window
    during the begin extension which could result in a context switch

fixed places which did not correctly distinguish between an
CPU_isr and a CPU_isr_entry.
This commit is contained in:
Joel Sherrill
1995-06-05 22:59:47 +00:00
parent 7979e35617
commit e8512eb679
4 changed files with 12 additions and 9 deletions

View File

@@ -62,6 +62,7 @@ void RTEMS_Malloc_Initialize(
*/
starting_address = start;
RTEMS_Malloc_Sbrk_amount = sbrk_amount;
if (!starting_address) {
u32_address = (unsigned int)sbrk(length);

View File

@@ -57,32 +57,32 @@ void print_ipnd_imsk();
unsigned int Xint_2_Group_Map[8] = { 0, 1, 2, 5, 7, 3, 6, 4 };
i960_isr set_vector( /* returns old vector */
i960_isr_entry set_vector( /* returns old vector */
rtems_isr_entry func, /* isr routine */
unsigned int xint, /* XINT number */
unsigned int type /* RTEMS or RAW */
)
{
i960_isr *intr_tbl, *cached_intr_tbl;
i960_isr saved_intr;
i960_isr_entry *intr_tbl, *cached_intr_tbl;
i960_isr_entry saved_intr;
unsigned int vector, group, nibble;
unsigned int *imap;
if ( xint > 7 )
exit( 0x80 );
cached_intr_tbl = (i960_isr *) 0;
intr_tbl = (i960_isr *) Prcb->intr_tbl;
cached_intr_tbl = (i960_isr_entry *) 0;
intr_tbl = (i960_isr_entry *) Prcb->intr_tbl;
group = Xint_2_Group_Map[xint]; /* remap XINT to group */
vector = (group << 4) + 2; /* direct vector num */
if ( type )
rtems_interrupt_catch( func, vector, (rtems_isr_entry *) &saved_intr );
else {
saved_intr = (i960_isr) intr_tbl[ vector ];
/* return old vector */
intr_tbl[ vector + 1 ] = /* normal vector table */
cached_intr_tbl[ group ] = (i960_isr) func; /* cached vector */
saved_intr = (i960_isr_entry) intr_tbl[ vector ];
/* return old vector */
intr_tbl[ vector + 1 ] = /* normal vector table */
cached_intr_tbl[ group ] = (i960_isr_entry) func; /* cached vector */
}
if ( xint <= 3 ) imap = &Ctl_tbl->imap0; /* updating IMAP0 */

View File

@@ -62,6 +62,7 @@ void RTEMS_Malloc_Initialize(
*/
starting_address = start;
RTEMS_Malloc_Sbrk_amount = sbrk_amount;
if (!starting_address) {
u32_address = (unsigned int)sbrk(length);

View File

@@ -62,6 +62,7 @@ void RTEMS_Malloc_Initialize(
*/
starting_address = start;
RTEMS_Malloc_Sbrk_amount = sbrk_amount;
if (!starting_address) {
u32_address = (unsigned int)sbrk(length);