From b0c635e0d53493bb2812528f4efdd765c56ebe32 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Mon, 4 Feb 2013 13:26:08 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5110 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/ports/GCC/PPC/SPC56ELxx/bam.s | 80 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 2 deletions(-) (limited to 'os/ports') diff --git a/os/ports/GCC/PPC/SPC56ELxx/bam.s b/os/ports/GCC/PPC/SPC56ELxx/bam.s index be7e83cd9..234f98642 100644 --- a/os/ports/GCC/PPC/SPC56ELxx/bam.s +++ b/os/ports/GCC/PPC/SPC56ELxx/bam.s @@ -1,6 +1,6 @@ /* ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, - 2011,2012,2013 Giovanni Di Sirio. + 2011,2012,2013 Giovanni Di Sirio. This file is part of ChibiOS/RT. @@ -35,8 +35,26 @@ /* 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.*/ + slow down the startup but there is no way around. + Note all registers are cleared in order to avoid possible problems + with lockstep mode.*/ .clear_ecc: + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 xor %r16, %r16, %r16 xor %r17, %r17, %r17 xor %r18, %r18, %r18 @@ -64,6 +82,64 @@ addi %r4, %r4, 64 b .cleareccloop .cleareccend: + + /* Special function registers clearing, required in order to avoid + possible problems with lockstep mode.*/ + mtcrf 0xFF, r31 + mtspr 8, r31 /* LR */ + mtspr 9, r31 /* CTR */ + + mtspr 272, r31 /* SPRG1-7 */ + mtspr 273, r31 + mtspr 274, r31 + mtspr 275, r31 + mtspr 276, r31 + mtspr 277, r31 + mtspr 278, r31 + mtspr 279, r31 + mtspr 604, r31 /* SPRG8-9 */ + mtspr 605, r31 + mtspr 26, r31 /* SRR0-1 */ + mtspr 27, r31 + mtspr 58, r31 /* CSRR0-1 */ + mtspr 59, r31 + mtspr 61, r31 /* DEAR */ + + mtspr 22, r31 /* DEC */ + mtspr 54, r31 /* DECAR */ + mtspr 285, r31 /* TBU */ + mtspr 284, r31 /* TBL */ + + mtspr 570, r31 /* MCSRR0 */ + mtspr 571, r31 /* MCSRR1 */ + + mtspr 256, r31 /* USPRG0 */ + + mtspr 562, r31 /* DBCNT */ + + mtspr 63, r31 /* IVPR */ + mtspr 318, r31 /* DVC1-2 */ + mtspr 319, r31 + mtspr 400, r31 /* IVOR0-15 */ + mtspr 401, r31 + mtspr 402, r31 + mtspr 403, r31 + mtspr 404, r31 + mtspr 405, r31 + mtspr 406, r31 + mtspr 407, r31 + mtspr 408, r31 + mtspr 409, r31 + mtspr 410, r31 + mtspr 411, r31 + mtspr 412, r31 + mtspr 413, r31 + mtspr 414, r31 + mtspr 415, r31 + mtspr 528, r31 /* IVOR32-34 */ + mtspr 529, r31 + mtspr 530, r31 + b _boot_address #endif /* !defined(__DOXYGEN__) */ -- cgit v1.2.3