summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/helas403/flashentry/flashentry.S
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/helas403/flashentry/flashentry.S')
-rw-r--r--c/src/lib/libbsp/powerpc/helas403/flashentry/flashentry.S124
1 files changed, 62 insertions, 62 deletions
diff --git a/c/src/lib/libbsp/powerpc/helas403/flashentry/flashentry.S b/c/src/lib/libbsp/powerpc/helas403/flashentry/flashentry.S
index d5db474d54..d11babaa93 100644
--- a/c/src/lib/libbsp/powerpc/helas403/flashentry/flashentry.S
+++ b/c/src/lib/libbsp/powerpc/helas403/flashentry/flashentry.S
@@ -1,15 +1,15 @@
/* flashentry.s
*
* This file contains the entry code for RTEMS programs starting
- * directly from Flash.
+ * directly from Flash.
*
* Author: Thomas Doerfler <td@imd.m.isar.de>
* IMD Ingenieurbuero fuer Microcomputertechnik
*
* COPYRIGHT (c) 1998 by IMD
- *
+ *
* Changes from IMD are covered by the original distributions terms.
- * This file has been derived from the papyrus BSP:
+ * This file has been derived from the papyrus BSP:
*
* This file contains the entry veneer for RTEMS programs
* stored in Papyrus' flash ROM.
@@ -39,7 +39,7 @@
* Reset_entry.
*---------------------------------------------------------------------------*/
#if PPC_ASM == PPC_ASM_ELF
- .section .reset,"ax",@progbits
+ .section .reset,"ax",@progbits
/* this section MUST be located at absolute address 0xFFFFFFFC
or last word of EPROM */
#else
@@ -49,7 +49,7 @@
ba flash_entry /* this is the first instruction after reset */
.previous
-
+
/*----------------------------------------------------------------------------
* ROM Vector area.
*---------------------------------------------------------------------------*/
@@ -71,23 +71,23 @@ toc_pointer:
#else
.long TOC[tc0]
#endif
-text_length:
+text_length:
.long text.size
text_addr:
.long text.start
-copy_src:
+copy_src:
.long copy.src
copy_length:
.long copy.size
-copy_dest:
+copy_dest:
.long copy.dest
-bss_length:
+bss_length:
.long bss.size
-bss_addr:
+bss_addr:
.long bss.start
stack_top:
.long stack.end
-
+
/*----------------------------------------------------------------------------
* from Reset_entry.
*---------------------------------------------------------------------------*/
@@ -99,12 +99,12 @@ stack_top:
/* set up bank register BR0 for Flash-EPROM:
* NOTE: bank size should stay 1MByte, this is standard size
* after RESET
- * base addr = Fffxxxxx -> 0b11111111........................
+ * base addr = Fffxxxxx -> 0b11111111........................
* bank size = 1 MByte -> 0b........000..................... (std)
* bank use = readonly -> 0b...........01...................
- * seq. fill = targ frst-> 0b.............0..................
+ * seq. fill = targ frst-> 0b.............0..................
* burst mode= enable -> 0b..............1.................
- * bus width = 8 bit -> 0b...............00...............
+ * bus width = 8 bit -> 0b...............00...............
* ready pin = disable -> 0b.................0..............
* first wait= 2 clocks -> 0b..................0010..........
* burst wait= 2 clocks -> 0b......................10........
@@ -130,12 +130,12 @@ stack_top:
* test RAM config 16 MByte (1x4Mx32Bit)
*------------------------------------------------------------------*/
/* set up bank register BR7 for DRAM:
- * base addr = 000xxxxx -> 0b00000000........................
+ * base addr = 000xxxxx -> 0b00000000........................
* bank size = 16MByte -> 0b........100.....................
* bank use = readwrite-> 0b...........11...................
- * seq. fill = targ.frst-> 0b.............0..................
+ * seq. fill = targ.frst-> 0b.............0..................
* early RAS = disabled -> 0b..............0.................
- * bus width = 32bit -> 0b...............10...............
+ * bus width = 32bit -> 0b...............10...............
* adr mux = internal -> 0b.................0..............
* RAS to CAS= 2 clocks -> 0b..................1.............
* Alt. Rfrsh= normal -> 0b...................0............
@@ -151,7 +151,7 @@ stack_top:
*/
lis r2,0x0099
ori r2,r2,0x2AB0
- mtdcr br7,r2 /* write to DCR BR7*/
+ mtdcr br7,r2 /* write to DCR BR7*/
lis r2,0x0000 /* start address = 0x00000000 */
lis r3,0x0100 /* size 16 MB = 0x01000000 */
@@ -163,13 +163,13 @@ stack_top:
* test RAM config 32 MByte (2x4Mx32Bit)
*------------------------------------------------------------------*/
/* set up bank register BR7 like above
- * set up bank register BR6 for DRAM:
- * base addr = 010xxxxx -> 0b00010000........................
+ * set up bank register BR6 for DRAM:
+ * base addr = 010xxxxx -> 0b00010000........................
* bank size = 16MByte -> 0b........100..................... (for now)
* bank use = readwrite-> 0b...........11...................
- * seq. fill = targ.frst-> 0b.............0..................
+ * seq. fill = targ.frst-> 0b.............0..................
* early RAS = disabled -> 0b..............0.................
- * bus width = 32bit -> 0b...............10...............
+ * bus width = 32bit -> 0b...............10...............
* adr mux = internal -> 0b.................0..............
* RAS to CAS= 2 clocks -> 0b..................1.............
* Alt. Rfrsh= normal -> 0b...................0............
@@ -185,29 +185,29 @@ stack_top:
*/
lis r2,0x1099
ori r2,r2,0x2AB0
- mtdcr br6,r2 /* write to DCR BR6*/
+ mtdcr br6,r2 /* write to DCR BR6*/
lis r2,0x0100 /* start address = 0x01000000 */
lis r3,0x0100 /* size 16 MB = 0x01000000 */
bl ramacc /* test memory accessibility */
cmpi 0,0,r4,0 /* memory ok? else test smaller size */
beq ramcfgok /* ok, we found configuration... +/
-
+
lis r2,0x0000 /* disable BR6, config not ok */
- mtdcr br6,r2 /* write to DCR BR6*/
+ mtdcr br6,r2 /* write to DCR BR6*/
b ramcfgok /* and finish configuration */
-
-ramcfgt18:
+
+ramcfgt18:
/*--------------------------------------------------------------------
* test RAM config 8 MByte (1x2Mx32Bit)
*------------------------------------------------------------------*/
/* set up bank register BR7 for DRAM:
- * base addr = 000xxxxx -> 0b00000000........................
+ * base addr = 000xxxxx -> 0b00000000........................
* bank size = 8MByte -> 0b........011.....................
* bank use = readwrite-> 0b...........11...................
- * seq. fill = targ.frst-> 0b.............0..................
+ * seq. fill = targ.frst-> 0b.............0..................
* early RAS = disabled -> 0b..............0.................
- * bus width = 32bit -> 0b...............10...............
+ * bus width = 32bit -> 0b...............10...............
* adr mux = internal -> 0b.................0..............
* RAS to CAS= 2 clocks -> 0b..................1.............
* Alt. Rfrsh= normal -> 0b...................0............
@@ -223,7 +223,7 @@ ramcfgt18:
*/
lis r2,0x0079
ori r2,r2,0x2AB0
- mtdcr br7,r2 /* write to DCR BR7 */
+ mtdcr br7,r2 /* write to DCR BR7 */
lis r2,0x0000 /* start address = 0x00000000 */
lis r3,0x0080 /* size 8 MB = 0x00800000 */
@@ -235,13 +235,13 @@ ramcfgt18:
* test RAM config 16 MByte (2x2Mx32Bit)
*------------------------------------------------------------------*/
/* set up bank register BR7 like above
- * set up bank register BR6 for DRAM:
- * base addr = 008xxxxx -> 0b00001000........................
+ * set up bank register BR6 for DRAM:
+ * base addr = 008xxxxx -> 0b00001000........................
* bank size = 08MByte -> 0b........011..................... (for now)
* bank use = readwrite-> 0b...........11...................
- * seq. fill = targ.frst-> 0b.............0..................
+ * seq. fill = targ.frst-> 0b.............0..................
* early RAS = disabled -> 0b..............0.................
- * bus width = 32bit -> 0b...............10...............
+ * bus width = 32bit -> 0b...............10...............
* adr mux = internal -> 0b.................0..............
* RAS to CAS= 2 clocks -> 0b..................1.............
* Alt. Rfrsh= normal -> 0b...................0............
@@ -257,29 +257,29 @@ ramcfgt18:
*/
lis r2,0x0879
ori r2,r2,0x2AB0
- mtdcr br6,r2 /* write to DCR BR6*/
+ mtdcr br6,r2 /* write to DCR BR6*/
lis r2,0x0080 /* start address = 0x00800000 */
lis r3,0x0080 /* size 8 MB = 0x00800000 */
bl ramacc /* test memory accessibility */
cmpi 0,0,r4,0 /* memory ok? else test smaller size */
beq ramcfgok /* ok, we found configuration... +/
-
+
lis r2,0x0000 /* disable BR6, config not ok */
- mtdcr br6,r2 /* write to DCR BR6*/
+ mtdcr br6,r2 /* write to DCR BR6*/
b ramcfgok /* and finish configuration */
-
-ramcfgt14:
+
+ramcfgt14:
/*--------------------------------------------------------------------
* test RAM config 4 MByte (1x1Mx32Bit)
*------------------------------------------------------------------*/
/* set up bank register BR7 for DRAM:
- * base addr = 000xxxxx -> 0b00000000........................
+ * base addr = 000xxxxx -> 0b00000000........................
* bank size = 4MByte -> 0b........010.....................
* bank use = readwrite-> 0b...........11...................
- * seq. fill = targ.frst-> 0b.............0..................
+ * seq. fill = targ.frst-> 0b.............0..................
* early RAS = disabled -> 0b..............0.................
- * bus width = 32bit -> 0b...............10...............
+ * bus width = 32bit -> 0b...............10...............
* adr mux = internal -> 0b.................0..............
* RAS to CAS= 2 clocks -> 0b..................1.............
* Alt. Rfrsh= normal -> 0b...................0............
@@ -299,19 +299,19 @@ ramcfgt14:
*/
lis r2,0x0059
ori r2,r2,0x2AB0
- mtdcr br7,r2 /* write to DCR BR7*/
+ mtdcr br7,r2 /* write to DCR BR7*/
/*--------------------------------------------------------------------
* test RAM config 8 MByte (2x1Mx32Bit)
*------------------------------------------------------------------*/
/* set up bank register BR7 like above
- * set up bank register BR6 for DRAM:
- * base addr = 004xxxxx -> 0b00000100........................
+ * set up bank register BR6 for DRAM:
+ * base addr = 004xxxxx -> 0b00000100........................
* bank size = 4MByte -> 0b........010..................... (for now)
* bank use = readwrite-> 0b...........11...................
- * seq. fill = targ.frst-> 0b.............0..................
+ * seq. fill = targ.frst-> 0b.............0..................
* early RAS = disabled -> 0b..............0.................
- * bus width = 32bit -> 0b...............10...............
+ * bus width = 32bit -> 0b...............10...............
* adr mux = internal -> 0b.................0..............
* RAS to CAS= 2 clocks -> 0b..................1.............
* Alt. Rfrsh= normal -> 0b...................0............
@@ -327,19 +327,19 @@ ramcfgt14:
*/
lis r2,0x0459
ori r2,r2,0x2AB0
- mtdcr br6,r2 /* write to DCR BR6*/
+ mtdcr br6,r2 /* write to DCR BR6*/
lis r2,0x0040 /* start address = 0x00400000 */
lis r3,0x0040 /* size 4 MB = 0x00400000 */
bl ramacc /* test memory accessibility */
cmpi 0,0,r4,0 /* memory ok? else test smaller size */
beq ramcfgok /* ok, we found configuration... +/
-
+
lis r2,0x0000 /* disable BR6, config not ok */
- mtdcr br6,r2 /* write to DCR BR6*/
+ mtdcr br6,r2 /* write to DCR BR6*/
b ramcfgok /* and finish configuration */
-ramcfgok:
+ramcfgok:
/*--------------------------------------------------------------------
* init the DRAM where STACK+ DATA+ BBS will be placed. If this is OK
* we will return here.
@@ -350,24 +350,24 @@ ramcfgok:
addi r2,0,PPC_I_CACHE/PPC_CACHE_ALIGNMENT
mtctr r2 /* count the loops needed... */
xor r2,r2,r2 /* start at adr zero */
-icinvlp:
+icinvlp:
iccci 0,r2
addi r2,r2,PPC_CACHE_ALIGNMENT
bdnz icinvlp
-
+
addi r2,r0,PPC_D_CACHE/PPC_CACHE_ALIGNMENT
mtctr r2 /* count the loops needed... */
xor r2,r2,r2 /* start at adr 0 */
-dcinvlp:
+dcinvlp:
dccci 0,r2
addi r2,r2,PPC_CACHE_ALIGNMENT
bdnz dcinvlp
/*--------------------------------------------------------------------
* Enable two 128MB cachable regions.
* FEPROM is cachable at 0xFFF00000..0xFFFFFFFF
- * DRAM is cachable at 0x00000000..0x00FFFFFF
+ * DRAM is cachable at 0x00000000..0x00FFFFFF
* FEPROM is noncachable at 0x7FF00000..0x7FFFFFFF
- * DRAM is noncachable at 0x80000000..0x80FFFFFF
+ * DRAM is noncachable at 0x80000000..0x80FFFFFF
*-------------------------------------------------------------------*/
addis r2,r0,0x8000
addi r2,r2,0x0001
@@ -386,17 +386,17 @@ dcinvlp:
lis r2,0x0000 /* do not allow critical IRQ */
ori r2,r2,0x0000
mtdcr exier, r2 /* disable all external IRQs */
-
+
addi r2,r0,-1 /* r2 = 0xffffffff */
mtdcr exisr, r2 /* clear all pendingdisable IRQs */
-
+
/*--------------------------------------------------------------------
* C_setup.
*-------------------------------------------------------------------*/
lwz r2,toc_pointer-base_addr(r1) /* set r2 to toc */
lwz r1,stack_top-base_addr(r1) /* set r1 to stack_top */
-
+
addi r1,r1,-56 /* start stack at data_addr - 56 */
addi r3,r0,0x0 /* clear r3 */
stw r3, 0(r1) /* Clear stack chain */
@@ -452,7 +452,7 @@ ramacc:
xor r4,r4,r4 /* r4 = 0 */
stw r4,0(r2) /* init ram at start address */
addi r4,r0,0x04 /* set start shift */
-ramaccf1:
+ramaccf1:
cmp 0,0,r4,r3 /* compare with length */
bge ramaccfx /* r4 >= r3? then finished */
add r5,r4,r2 /* get next address to fill */
@@ -463,7 +463,7 @@ ramaccf1:
ramaccfx:
lwz r4,0(r2) /* get memory at start adr */
blr
-
+
#if PPC_ABI == PPC_ABI_POWEROPEN
DESCRIPTOR (startup)