diff --git a/demos/LPC21xx/RT-LPC214x-OLIMEX/debug/RT-LPC214x-OLIMEX (OpenOCD, Flash and Run).launch b/demos/LPC21xx/RT-LPC214x-OLIMEX/debug/RT-LPC214x-OLIMEX (OpenOCD, Flash and Run).launch index 97058e1ee..a1d7c7819 100644 --- a/demos/LPC21xx/RT-LPC214x-OLIMEX/debug/RT-LPC214x-OLIMEX (OpenOCD, Flash and Run).launch +++ b/demos/LPC21xx/RT-LPC214x-OLIMEX/debug/RT-LPC214x-OLIMEX (OpenOCD, Flash and Run).launch @@ -33,7 +33,7 @@ - + diff --git a/doc/reports/LPC2148-48-ARM.txt b/doc/reports/LPC2148-48-ARM.txt index dec331321..282982237 100644 --- a/doc/reports/LPC2148-48-ARM.txt +++ b/doc/reports/LPC2148-48-ARM.txt @@ -6,7 +6,7 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states) *** ChibiOS/RT test suite *** *** Kernel: 3.0.0dev -*** Compiled: Oct 16 2014 - 21:17:41 +*** Compiled: Oct 16 2014 - 21:31:50 *** Compiler: GCC 4.7.4 20140401 (release) [ARM/embedded-4_7-branch revision 209195] *** Architecture: ARMv4T *** Core Variant: ARM7 @@ -104,7 +104,7 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states) --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.2 (Benchmark, messages #2) ---- Score : 115237 msgs/S, 230474 ctxswc/S +--- Score : 115236 msgs/S, 230472 ctxswc/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.3 (Benchmark, messages #3) diff --git a/doc/reports/LPC2148-48-THUMB.txt b/doc/reports/LPC2148-48-THUMB.txt index d9109346d..f4cba8515 100644 --- a/doc/reports/LPC2148-48-THUMB.txt +++ b/doc/reports/LPC2148-48-THUMB.txt @@ -6,7 +6,7 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states) *** ChibiOS/RT test suite *** *** Kernel: 3.0.0dev -*** Compiled: Oct 16 2014 - 21:14:50 +*** Compiled: Oct 16 2014 - 21:27:55 *** Compiler: GCC 4.7.4 20140401 (release) [ARM/embedded-4_7-branch revision 209195] *** Architecture: ARMv4T *** Core Variant: ARM7 @@ -100,51 +100,51 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states) --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.1 (Benchmark, messages #1) ---- Score : 109376 msgs/S, 218752 ctxswc/S +--- Score : 109378 msgs/S, 218756 ctxswc/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.2 (Benchmark, messages #2) ---- Score : 89678 msgs/S, 179356 ctxswc/S +--- Score : 89679 msgs/S, 179358 ctxswc/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.3 (Benchmark, messages #3) ---- Score : 89678 msgs/S, 179356 ctxswc/S +--- Score : 89679 msgs/S, 179358 ctxswc/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.4 (Benchmark, context switch) ---- Score : 425336 ctxswc/S +--- Score : 425368 ctxswc/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.5 (Benchmark, threads, full cycle) ---- Score : 67417 threads/S +--- Score : 67418 threads/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.6 (Benchmark, threads, create only) ---- Score : 103460 threads/S +--- Score : 103461 threads/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.7 (Benchmark, mass reschedule, 5 threads) ---- Score : 29164 reschedules/S, 174984 ctxswc/S +--- Score : 29165 reschedules/S, 174990 ctxswc/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.8 (Benchmark, round robin context switching) ---- Score : 211728 ctxswc/S +--- Score : 211740 ctxswc/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.9 (Benchmark, I/O Queues throughput) ---- Score : 264276 bytes/S +--- Score : 264280 bytes/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.10 (Benchmark, virtual timers set/reset) ---- Score : 306538 timers/S +--- Score : 306552 timers/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.11 (Benchmark, semaphores wait/signal) ---- Score : 340820 wait+signal/S +--- Score : 340828 wait+signal/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.12 (Benchmark, mutexes lock/unlock) ---- Score : 247348 lock+unlock/S +--- Score : 247352 lock+unlock/S --- Result: SUCCESS ---------------------------------------------------------------------------- --- Test Case 11.13 (Benchmark, RAM footprint) diff --git a/os/rt/ports/ARM/compilers/GCC/chcoreasm.s b/os/rt/ports/ARM/compilers/GCC/chcoreasm.s index f39b2dfed..9f06ca0b5 100644 --- a/os/rt/ports/ARM/compilers/GCC/chcoreasm.s +++ b/os/rt/ports/ARM/compilers/GCC/chcoreasm.s @@ -180,11 +180,7 @@ _irq_ret_arm: add r1, pc, #1 bx r1 .code 16 - ldr r1, =(_irq_ret_thumb+1) // ISR return point. - mov lr, r1 - bx r0 // Calling the ISR. - .balign 4 -_irq_ret_thumb: + bl _bxr0 // Calling the ISR. mov lr, pc bx lr .code 32 @@ -237,6 +233,10 @@ _irq_ret_thumb: ldmfd sp!, {r0-r3, r12, lr} msr CPSR_c, #MODE_IRQ | I_BIT subs pc, lr, #4 +#if defined(THUMB_NO_INTERWORKING) + .code 16 +_bxr0: bx r0 +#endif /* * Threads trampoline code.