aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-11-01 19:18:09 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-11-01 19:18:09 +0000
commit639d957e5eacffffb849b976552b39a2b66433aa (patch)
treeaa919ffa72219ad110129d7e953dea456d632b80
parentbf464a835d40efa0f766e5602bf0cd566ce48327 (diff)
downloadChibiOS-639d957e5eacffffb849b976552b39a2b66433aa.tar.gz
ChibiOS-639d957e5eacffffb849b976552b39a2b66433aa.tar.bz2
ChibiOS-639d957e5eacffffb849b976552b39a2b66433aa.zip
Bug 2890382.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1263 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r--demos/ARMCM3-STM32F103-GCC/main.c14
-rw-r--r--os/ports/GCC/ARMCM3/chcore.c12
-rw-r--r--readme.txt2
3 files changed, 20 insertions, 8 deletions
diff --git a/demos/ARMCM3-STM32F103-GCC/main.c b/demos/ARMCM3-STM32F103-GCC/main.c
index fcc496648..943509849 100644
--- a/demos/ARMCM3-STM32F103-GCC/main.c
+++ b/demos/ARMCM3-STM32F103-GCC/main.c
@@ -19,15 +19,16 @@
#include <ch.h>
#include <pal.h>
+#include <serial.h>
+#include <spi.h>
#include <test.h>
#include "board.h"
-#include "serial.h"
/*
* Red LEDs blinker thread, times are in milliseconds.
*/
-static WORKING_AREA(waThread1, 128);
+static WORKING_AREA(waThread1, 512);
static msg_t Thread1(void *arg) {
(void)arg;
@@ -40,6 +41,10 @@ static msg_t Thread1(void *arg) {
return 0;
}
+static SPIConfig spicfg = {
+ 16, IOPORT1, 4, 0
+};
+
/*
* Entry point, note, the main() function is already a thread in the system
* on entry.
@@ -59,6 +64,11 @@ int main(int argc, char **argv) {
*/
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
+ palSetPadMode(IOPORT1, 4, PAL_MODE_OUTPUT_PUSHPULL);
+ palSetPad(IOPORT1, 4);
+ spiStart(&SPID1, &spicfg);
+ spiStop(&SPID1);
+
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and check the button state.
diff --git a/os/ports/GCC/ARMCM3/chcore.c b/os/ports/GCC/ARMCM3/chcore.c
index a2334dcf7..8c421867c 100644
--- a/os/ports/GCC/ARMCM3/chcore.c
+++ b/os/ports/GCC/ARMCM3/chcore.c
@@ -92,22 +92,22 @@ void SVCallVector(Thread *otp, Thread *ntp) {
asm volatile ("mrs r3, BASEPRI \n\t" \
"mrs r12, PSP \n\t" \
"stmdb r12!, {r3-r6,r8-r11, lr} \n\t" \
- "str r12, [%0, #16] \n\t" \
- "ldr r12, [%1, #16] \n\t" \
+ "str r12, [r0, #16] \n\t" \
+ "ldr r12, [r1, #16] \n\t" \
"ldmia r12!, {r3-r6,r8-r11, lr} \n\t" \
"msr PSP, r12 \n\t" \
"msr BASEPRI, r3 \n\t" \
- "bx lr" : : "r" (otp), "r" (ntp));
+ "bx lr ");
#else
asm volatile ("mrs r3, BASEPRI \n\t" \
"mrs r12, PSP \n\t" \
"stmdb r12!, {r3-r11, lr} \n\t" \
- "str r12, [%0, #16] \n\t" \
- "ldr r12, [%1, #16] \n\t" \
+ "str r12, [r0, #16] \n\t" \
+ "ldr r12, [r1, #16] \n\t" \
"ldmia r12!, {r3-r11, lr} \n\t" \
"msr PSP, r12 \n\t" \
"msr BASEPRI, r3 \n\t" \
- "bx lr" : : "r" (otp), "r" (ntp));
+ "bx lr ");
#endif
}
diff --git a/readme.txt b/readme.txt
index ca32b3d11..d3d83ec80 100644
--- a/readme.txt
+++ b/readme.txt
@@ -3,6 +3,8 @@
*****************************************************************************
*** 1.3.4 ***
+- FIX: Fixed problem with ARM-CM3 context switch when compiled at level
+ -O0 (bug 2890382).
- FIX: Fixed wrong conditional in chschd.c (bug 2888836).
- FIX: Fixed wrong macro in chheap.c (bug 2888833).
- FIX: Fixed AIC initialization in AT91SAM7X support (bug 2888583).