diff options
Diffstat (limited to 'os')
| -rw-r--r-- | os/hal/platforms/SPC5xx/ESCI_v1/serial_lld.c | 2 | ||||
| -rw-r--r-- | os/ports/GCC/PPC/SPC560BCxx/port.mk | 2 | ||||
| -rw-r--r-- | os/ports/GCC/PPC/SPC560Pxx/port.mk | 2 | ||||
| -rw-r--r-- | os/ports/GCC/PPC/SPC563Mxx/bam.s | 71 | ||||
| -rw-r--r-- | os/ports/GCC/PPC/SPC563Mxx/port.mk | 3 | 
5 files changed, 76 insertions, 4 deletions
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 <http://www.gnu.org/licenses/>.
 +*/
 +
 +/**
 + * @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
  | 
