From 51fa1d384723312a722be181242d96f704be4398 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Wed, 12 Dec 2012 09:02:08 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4904 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/PPC-SPC563M-GCC/.cproject | 2 +- os/hal/platforms/SPC5xx/ESCI_v1/serial_lld.c | 2 +- os/ports/GCC/PPC/SPC560BCxx/port.mk | 2 +- os/ports/GCC/PPC/SPC560Pxx/port.mk | 2 +- os/ports/GCC/PPC/SPC563Mxx/bam.s | 71 ++++++++++++++++++++++++++++ os/ports/GCC/PPC/SPC563Mxx/port.mk | 3 +- 6 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 os/ports/GCC/PPC/SPC563Mxx/bam.s diff --git a/demos/PPC-SPC563M-GCC/.cproject b/demos/PPC-SPC563M-GCC/.cproject index 3f0950e92..8b7306136 100644 --- a/demos/PPC-SPC563M-GCC/.cproject +++ b/demos/PPC-SPC563M-GCC/.cproject @@ -23,7 +23,7 @@ - diff --git a/os/hal/platforms/SPC5xx/ESCI_v1/serial_lld.c b/os/hal/platforms/SPC5xx/ESCI_v1/serial_lld.c index 447d4adc8..daa3ab86a 100644 --- a/os/hal/platforms/SPC5xx/ESCI_v1/serial_lld.c +++ b/os/hal/platforms/SPC5xx/ESCI_v1/serial_lld.c @@ -87,7 +87,7 @@ static void esci_init(SerialDriver *sdp, const SerialConfig *config) { } escip->LPR.R = 0; escip->CR1.R |= 0x0000002C; /* RIE, TE, RE to 1. */ - escip->CR2.R |= 0x000F; /* ORIE, NFIE, FEIE, PFIE to 1. */ + escip->CR2.R = 0x000F; /* ORIE, NFIE, FEIE, PFIE to 1. */ } /** diff --git a/os/ports/GCC/PPC/SPC560BCxx/port.mk b/os/ports/GCC/PPC/SPC560BCxx/port.mk index 9eee36b5e..a3284cb12 100644 --- a/os/ports/GCC/PPC/SPC560BCxx/port.mk +++ b/os/ports/GCC/PPC/SPC560BCxx/port.mk @@ -1,7 +1,7 @@ # List of the ChibiOS/RT SPC560BCxx port files. PORTSRC = ${CHIBIOS}/os/ports/GCC/PPC/chcore.c -PORTASM = ${CHIBIOS}/os/ports/GCC/PPC/bam.s \ +PORTASM = ${CHIBIOS}/os/ports/GCC/PPC/SPC560BCxx/bam.s \ ${CHIBIOS}/os/ports/GCC/PPC/crt0.s \ ${CHIBIOS}/os/ports/GCC/PPC/SPC560BCxx/ivor.s \ ${CHIBIOS}/os/ports/GCC/PPC/SPC560BCxx/vectors.s diff --git a/os/ports/GCC/PPC/SPC560Pxx/port.mk b/os/ports/GCC/PPC/SPC560Pxx/port.mk index de516c7d0..d1c9dcd8e 100644 --- a/os/ports/GCC/PPC/SPC560Pxx/port.mk +++ b/os/ports/GCC/PPC/SPC560Pxx/port.mk @@ -1,7 +1,7 @@ # List of the ChibiOS/RT SPC560Pxx port files. PORTSRC = ${CHIBIOS}/os/ports/GCC/PPC/chcore.c -PORTASM = ${CHIBIOS}/os/ports/GCC/PPC/bam.s \ +PORTASM = ${CHIBIOS}/os/ports/GCC/PPC/SPC560Pxx/bam.s \ ${CHIBIOS}/os/ports/GCC/PPC/crt0.s \ ${CHIBIOS}/os/ports/GCC/PPC/SPC560Pxx/ivor.s \ ${CHIBIOS}/os/ports/GCC/PPC/SPC560Pxx/vectors.s diff --git a/os/ports/GCC/PPC/SPC563Mxx/bam.s b/os/ports/GCC/PPC/SPC563Mxx/bam.s new file mode 100644 index 000000000..cffadf408 --- /dev/null +++ b/os/ports/GCC/PPC/SPC563Mxx/bam.s @@ -0,0 +1,71 @@ +/* + 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 . +*/ + +/** + * @file SPC563Mxx/bam.s + * @brief SPC563Mxx boot assistant record. + * + * @addtogroup PPC_CORE + * @{ + */ + +#if !defined(__DOXYGEN__) + + /* BAM info, SWT off, WTE off, VLE from settings.*/ + .section .bam, "ax" + .long 0x015A0000 + .long .clear_ecc + + /* RAM clearing, this device requires a write to all RAM location in + order to initialize the ECC detection hardware, this is going to + slow down the startup but there is no way around.*/ +.clear_ecc: + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl cr0, %r4, %r5 + bge cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + b _boot_address + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/ports/GCC/PPC/SPC563Mxx/port.mk b/os/ports/GCC/PPC/SPC563Mxx/port.mk index 460d4e1f9..16241904c 100644 --- a/os/ports/GCC/PPC/SPC563Mxx/port.mk +++ b/os/ports/GCC/PPC/SPC563Mxx/port.mk @@ -1,7 +1,8 @@ # List of the ChibiOS/RT SPC563Mxx port files. PORTSRC = ${CHIBIOS}/os/ports/GCC/PPC/chcore.c -PORTASM = ${CHIBIOS}/os/ports/GCC/PPC/SPC563Mxx/vectors.s \ +PORTASM = ${CHIBIOS}/os/ports/GCC/PPC/SPC563Mxx/bam.s \ + ${CHIBIOS}/os/ports/GCC/PPC/SPC563Mxx/vectors.s \ ${CHIBIOS}/os/ports/GCC/PPC/SPC563Mxx/ivor.s \ ${CHIBIOS}/os/ports/GCC/PPC/crt0.s -- cgit v1.2.3