Fixed bug 3587633.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/stable_2.4.x@4859 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
gdisirio 2012-12-01 08:58:56 +00:00
parent 930f828bd9
commit 748531a2fa
4 changed files with 80 additions and 4 deletions

View File

@ -297,11 +297,21 @@ struct context {
#define port_wait_for_interrupt()
#endif
/**
* @brief Wrapper of the assembler @p _port_switch() function.
*/
#define port_switch(ntp, otp) _port_switch(ntp, otp)
/**
* @brief Wrapper of the assembler @p _port_halt() function.
*/
#define port_halt() _port_halt()
#ifdef __cplusplus
extern "C" {
#endif
void port_switch(Thread *ntp, Thread *otp);
void port_halt(void);
void _port_switch(Thread *ntp, Thread *otp);
void _port_halt(void);
void _port_thread_start(void);
#ifdef __cplusplus
}

View File

@ -0,0 +1,65 @@
/*
ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
2011,2012 Giovanni Di Sirio.
This file is part of ChibiOS/RT.
ChibiOS/RT is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
ChibiOS/RT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
---
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes ChibiOS/RT, without being obliged to provide
the source code for any proprietary components. See the file exception.txt
for full details of how and when the exception can be applied.
*/
.text
.p2align 1, 0
.weak _port_switch
_port_switch:
push r11
push r10
push r9
push r8
push r7
push r6
push r5
push r4
mov r1, 6(r14)
mov 6(r15), r1
pop r4
pop r5
pop r6
pop r7
pop r8
pop r9
pop r10
pop r11
ret
.p2align 1, 0
.weak _port_thread_start
_port_thread_start:
eint
mov r11, r15
call r10
call #chThdExit
; Falls into _port_halt
.p2align 1, 0
.weak _port_halt
_port_halt:
dint
.L1: jmp .L1

View File

@ -1,6 +1,6 @@
# List of the ChibiOS/RT MSP430 port files.
PORTSRC = ${CHIBIOS}/os/ports/GCC/MSP430/chcore.c
PORTSRC =
PORTASM =
PORTASM = ${CHIBIOS}/os/ports/GCC/MSP430/chcoreasm.s
PORTINC = ${CHIBIOS}/os/ports/GCC/MSP430

View File

@ -84,6 +84,7 @@
- FIX: Fixed different redefinition for __main_stack_end__ symbol (bug
3591317).
- FIX: Fixed errors in STM32F0xx UART driver (bug 3589412).
- FIX: Fixed MSP430 port_switch code for MSPGCC issue (bug 3587633).
- FIX: Fixed workaround for errata in STM32F4-A devices (bug 3586425).
- FIX: Fixed error in palWritePad() macro (bug 3586230).
- FIX: Fixed missing ; in testmbox.c (bug 3585979).