OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [uclinux/] [uClinux-2.0.x/] [arch/] [m68knommu/] [platform/] [5206e/] [toolvox/] [crt0_rom.S] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 199 simons
/*****************************************************************************/
2
 
3
/*
4
 *      crt0_ram.S -- startup code for MCF5206e ColdFire based ToolVox boards.
5
 *
6
 *      (C) Copyright 1999, Greg Ungerer.
7
 *
8
 *      2000/01/28 Modified for the Omnia -
9
 *              'ToolVox' Microphone Processor by James D. Schettine
10
 */
11
 
12
/*
13
 * Telos-systems Inc. has many twisty little architectures- all different.
14
 * The first coldfire board in the Omnia product line is the ToolVox.
15
 * The Toolvox is a Microphone processor with many features for the high-
16
 * end audio broadcaster or recording studio.  The actual audio processing
17
 * is performed by an on-board DSP.  (Really cool stuff!)
18
 * See:  www.nogrunge.com/product/toolvox
19
 * Linux support is for in-house use for now, but hopefully soon I can
20
 * justify using a *real* kernel for the entire product line.
21
 */
22
 
23
/*****************************************************************************/
24
 
25
#include "linux/autoconf.h"
26
#include "asm/coldfire.h"
27
#include "asm/mcfsim.h"
28
 
29
/*****************************************************************************/
30
 
31
/*
32
 *      Omnia ToolVox M5206e ColdFire board, chip select and memory setup.
33
 */
34
 
35
#define MEM_BASE        0x00100000      /* Memory base at address 1Mb */
36
#define MEM_SIZE        0x00100000      /* Memory size 1Mb */
37
#define VBR_BASE        MEM_BASE        /* Vector address */
38
 
39
/*****************************************************************************/
40
 
41
.global _start
42
.global _rambase
43
.global _ramvec
44
.global _ramstart
45
.global _ramend
46
 
47
/*****************************************************************************/
48
 
49
.data
50
 
51
/*
52
 *      Set up the usable of RAM stuff. Size of RAM is determined then
53
 *      an initial stack set up at the end.
54
 */
55
_rambase:
56
.long   0
57
_ramvec:
58
.long   0
59
_ramstart:
60
.long   0
61
_ramend:
62
.long   0
63
 
64
/*****************************************************************************/
65
 
66
.text
67
 
68
/*
69
 *      This is the codes first entry point. This is where it all
70
 *      begins...
71
 */
72
 
73
_start:
74
        nop                                     /* Filler */
75
        move.w  #0x2700, %sr                    /* No interrupts */
76
 
77
        /* assume boot-rom setup ram, xilinx, periperals, etc... */
78
 
79
        /* copy data segment from ROM to RAM */
80
        move.l  #_etext, %a0
81
        move.l  #_sdata, %a1
82
        move.l  #_edata, %a2
83
_copy_data:
84
        move.l  (%a0)+,%d0
85
        move.l  %d0,(%a1)+
86
        cmp.l   %a1,%a2
87
        bhi     _copy_data
88
 
89
        /*
90
         * Setup VBR here, otherwise buserror remap will not work.
91
         * if dBug was active before (on my SBC with dBug 1.1 of Dec 16 1996)
92
         *
93
         * bkr@cut.de 19990306
94
         *
95
         * Note: this is because dBUG points VBR to ROM, making vectors read
96
         * only, so the bus trap can't be changed. (RS)
97
         */
98
        move.l  #VBR_BASE, %a7                  /* Note VBR can't be read */
99
        movec   %a7, %VBR
100
        move.l  %a7, _ramvec                    /* Set up vector addr */
101
        move.l  %a7, _rambase                   /* Set up base RAM addr */
102
 
103
        /*
104
         *      Set to 1 meg for the ToolVox board (m5206e).
105
         */
106
        move.l  #MEM_BASE+MEM_SIZE, %sp         /* Set up initial stack ptr */
107
        move.l  %sp, _ramend                    /* Set end ram addr */
108
        lea.l   _ebss, %a0                      /* Set start of ram */
109
        move.l  %a0, _ramstart
110
 
111
        /*
112
         *      Enable CPU internal cache.
113
         */
114
        move.l  #0x01000000, %d0                /* Invalidate cache cmd */
115
        movec   %d0, %CACR                      /* Invalidate cache */
116
        move.l  #0x80000100, %d0                /* Setup cache mask */
117
        movec   %d0, %CACR                      /* Enable cache */
118
 
119
        /*
120
         *      Zero out the bss region.
121
         */
122
        lea.l   _sbss, %a0                      /* Get start of bss */
123
        lea.l   _ebss, %a1                      /* Get end of bss */
124
        clr.l   %d0                             /* Set value */
125
_clear_bss:
126
        move.l  %d0, (%a0)+                     /* Clear each word */
127
        cmp.l   %a0, %a1                        /* Check if at end */
128
        bne     _clear_bss
129
 
130
        /*
131
         *      Assember start up done, start code proper.
132
         */
133
        jsr     start_kernel                    /* Start Linux kernel */
134
 
135
_exit:
136
        jmp     _exit                           /* Should never get here */
137
 
138
/*****************************************************************************/

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.