From 0ef82c8cfee75d7ee1b526b6941bef8d566dea61 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 12 Mar 2009 14:19:11 +0000 Subject: 2009-03-12 Joel Sherrill PR 1385/cpukit * shared/irq/irq_asm.S: When the type rtems_boolean was switched to the C99 bool, the size changed from 4 bytes to 1 byte. The interrupt dispatching code accesses two boolean variables for scheduling purposes and the assembly implementations of this code did not get updated. --- c/src/lib/libbsp/arm/ChangeLog | 9 +++++++++ c/src/lib/libbsp/arm/shared/irq/irq_asm.S | 6 +++--- c/src/lib/libbsp/i386/ChangeLog | 9 +++++++++ c/src/lib/libbsp/i386/shared/irq/irq_asm.S | 6 +++--- c/src/lib/libbsp/powerpc/ChangeLog | 9 +++++++++ c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S | 6 +++--- 6 files changed, 36 insertions(+), 9 deletions(-) (limited to 'c/src') diff --git a/c/src/lib/libbsp/arm/ChangeLog b/c/src/lib/libbsp/arm/ChangeLog index 04d1109e6e..56f22f0f07 100644 --- a/c/src/lib/libbsp/arm/ChangeLog +++ b/c/src/lib/libbsp/arm/ChangeLog @@ -1,3 +1,12 @@ +2009-03-12 Joel Sherrill + + PR 1385/cpukit + * shared/irq/irq_asm.S: When the type rtems_boolean was switched to the + C99 bool, the size changed from 4 bytes to 1 byte. The interrupt + dispatching code accesses two boolean variables for scheduling + purposes and the assembly implementations of this code did not get + updated. + 2008-08-18 Ralf Corsépius * shared/irq/irq_init.c: Add missing prototypes. diff --git a/c/src/lib/libbsp/arm/shared/irq/irq_asm.S b/c/src/lib/libbsp/arm/shared/irq/irq_asm.S index 202d3330f2..fd17609282 100644 --- a/c/src/lib/libbsp/arm/shared/irq/irq_asm.S +++ b/c/src/lib/libbsp/arm/shared/irq/irq_asm.S @@ -79,13 +79,13 @@ _ISR_Handler: /* If a task switch is necessary, call scheduler */ ldr r0, =_Context_Switch_necessary - ldr r1, [r0] + ldrb r1, [r0] cmp r1, #0 /* since bframe is going to clear _ISR_Signals_to_thread_executing, */ /* we need to load it here */ ldr r0, =_ISR_Signals_to_thread_executing - ldr r1, [r0] + ldrb r1, [r0] bne bframe /* If a signals to be sent (_ISR_Signals_to_thread_executing != 0), */ @@ -95,7 +95,7 @@ _ISR_Handler: /* _ISR_Signals_to_thread_executing = FALSE */ mov r1, #0 - str r1, [r0] + strb r1, [r0] bframe: diff --git a/c/src/lib/libbsp/i386/ChangeLog b/c/src/lib/libbsp/i386/ChangeLog index 9960082116..dd4190cf97 100644 --- a/c/src/lib/libbsp/i386/ChangeLog +++ b/c/src/lib/libbsp/i386/ChangeLog @@ -1,3 +1,12 @@ +2009-03-12 Joel Sherrill + + PR 1385/cpukit + * shared/irq/irq_asm.S: When the type rtems_boolean was switched to the + C99 bool, the size changed from 4 bytes to 1 byte. The interrupt + dispatching code accesses two boolean variables for scheduling + purposes and the assembly implementations of this code did not get + updated. + 2008-09-07 Ralf Corsépius * shared/comm/i386-stub.c: Include stdbool.h. diff --git a/c/src/lib/libbsp/i386/shared/irq/irq_asm.S b/c/src/lib/libbsp/i386/shared/irq/irq_asm.S index 81faa17584..8c74007fbf 100644 --- a/c/src/lib/libbsp/i386/shared/irq/irq_asm.S +++ b/c/src/lib/libbsp/i386/shared/irq/irq_asm.S @@ -143,17 +143,17 @@ nested: /* Is dispatch disabled */ jne .exit /* Yes, then exit */ - cmpl $0, SYM (_Context_Switch_necessary) + cmpb $0, SYM (_Context_Switch_necessary) /* Is task switch necessary? */ jne .schedule /* Yes, then call the scheduler */ - cmpl $0, SYM (_ISR_Signals_to_thread_executing) + cmpb $0, SYM (_ISR_Signals_to_thread_executing) /* signals sent to Run_thread */ /* while in interrupt handler? */ je .exit /* No, exit */ .bframe: - movl $0, SYM (_ISR_Signals_to_thread_executing) + movb $0, SYM (_ISR_Signals_to_thread_executing) /* * This code is the less critical path. In order to have a single * Thread Context, we take the same frame than the one pushed on diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog index 32e7208a74..32e51e97a4 100644 --- a/c/src/lib/libbsp/powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/ChangeLog @@ -1,3 +1,12 @@ +2009-03-12 Joel Sherrill + + PR 1385/cpukit + * shared/irq/irq_asm.S: When the type rtems_boolean was switched to the + C99 bool, the size changed from 4 bytes to 1 byte. The interrupt + dispatching code accesses two boolean variables for scheduling + purposes and the assembly implementations of this code did not get + updated. + 2009-03-05 Sebastian Huber * shared/clock/clock.c: Standard decrementer exception is now more diff --git a/c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S b/c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S index 3189a884e7..5541632c0f 100644 --- a/c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S +++ b/c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S @@ -292,16 +292,16 @@ nested: * do something with the current thread... */ addis r4, 0, _Context_Switch_necessary@ha - lwz r5, _Context_Switch_necessary@l(r4) + lbz r5, _Context_Switch_necessary@l(r4) cmpwi r5, 0 bne switch addis r6, 0, _ISR_Signals_to_thread_executing@ha - lwz r7, _ISR_Signals_to_thread_executing@l(r6) + lbz r7, _ISR_Signals_to_thread_executing@l(r6) cmpwi r7, 0 li r8, 0 beq easy_exit - stw r8, _ISR_Signals_to_thread_executing@l(r6) + stb r8, _ISR_Signals_to_thread_executing@l(r6) /* * going to call _ThreadProcessSignalsFromIrq * Push a complete exception like frame... -- cgit v1.2.3