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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [lwIP_MCF5235_GCC/] [system/] [crt0.S] - Blame information for rev 666

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 583 jeremybenn
/*
2
    FreeRTOS MCF5235 port - Copyright (C) 2006 Christian Walter.
3
 
4
    This file is part of the FreeRTOS distribution.
5
 
6
    FreeRTOS is free software; you can redistribute it and/or modify
7
    it under the terms of the GNU General Public License** as published by
8
    the Free Software Foundation; either version 2 of the License, or
9
    (at your option) any later version.
10
 
11
    FreeRTOS is distributed in the hope that it will be useful,
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
    GNU General Public License for more details.
15
 
16
    You should have received a copy of the GNU General Public License
17
    along with FreeRTOS; if not, write to the Free Software
18
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
 
20
    A special exception to the GPL can be applied should you wish to distribute
21
    a combined work that includes FreeRTOS, without being obliged to provide
22
    the source code for any proprietary components.  See the licensing section
23
    of http://www.FreeRTOS.org for full details of how and when the exception
24
    can be applied.
25
 
26
    ***************************************************************************
27
    ***************************************************************************
28
    *                                                                         *
29
    * Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *
30
        *                                                                         *
31
        * This is a concise, step by step, 'hands on' guide that describes both   *
32
        * general multitasking concepts and FreeRTOS specifics. It presents and   *
33
        * explains numerous examples that are written using the FreeRTOS API.     *
34
        * Full source code for all the examples is provided in an accompanying    *
35
        * .zip file.                                                              *
36
    *                                                                         *
37
    ***************************************************************************
38
    ***************************************************************************
39
 
40
        Please ensure to read the configuration and relevant port sections of the
41
        online documentation.
42
 
43
        http://www.FreeRTOS.org - Documentation, latest information, license and
44
        contact details.
45
 
46
        http://www.SafeRTOS.com - A version that is certified for use in safety
47
        critical systems.
48
 
49
        http://www.OpenRTOS.com - Commercial support, development, porting,
50
        licensing and training services.
51
*/
52
 
53
  .title "crt0.S"
54
 
55
  .extern main
56
  .extern __stack
57
  .extern __bss_start
58
  .extern __text_start
59
  .extern init_main
60
 
61
  .equ    MCF5XXX_RAMBAR_SPV,   0x00000200
62
  .equ    MCF5XXX_RAMBAR_V,     0x00000001
63
  .global start
64
 
65
  .align  4
66
debug:
67
  .word   0x2C80    /* write to CSR */
68
  .word   0x0010
69
  .word   0x0400
70
  .word   0x0000
71
 
72
start:
73
  /* disable all interrupts on startup. */
74
  move.w  #0x2700, sr
75
 
76
  /* prepare internal SRAM. */
77
  move.l  #__SRAM, d0
78
  ori.l   #( MCF5XXX_RAMBAR_SPV | MCF5XXX_RAMBAR_V ), d0
79
  movec   d0, rambar
80
 
81
  /* prepare stack and frame pointer. */
82
  move.l  #__stack, sp
83
  link    a6, #-8
84
 
85
  /* initialize hardware. */
86
  jsr     init_main
87
 
88
  /* zero out the bss section. */
89
  move.l  #__bss_start, d1
90
  move.l  #_end, d0
91
  cmp.l   d0, d1
92
  jbeq    3f
93
  move.l  d1, a0
94
  sub.l   d1, d0
95
  subq.l  #1, d0
96
2:
97
  clr.b   (a0)+
98
  subq.l  #1, d0
99
  jbpl    2b
100
3:
101
 
102
  /* Relocate the data section. */
103
  move.l  #__data_load_start, %a0         /* .data in ROM */
104
  move.l  #copy_start, %a1                /* .data in RAM */
105
 
106
  /* Test if the two sections overlap. This is the case when we are working
107
   * with the debugger and the debugger loads the .data section.
108
   */
109
  cmpa.l  %a0, %a1
110
  beq     2f
111
1:
112
  /* Have we already copied everything. */
113
  cmpa.l  #__data_load_end, %a0
114
  beq     2f
115
  move.b  (%a0)+, (%a1)+
116
  bra     1b
117
 
118
2:
119
 
120
  /* C library */
121
  move.l  #__FINI_SECTION__, -(%sp)
122
  jsr     atexit
123
  jsr     __INIT_SECTION__
124
 
125
  /* call main(int argc, char *argv[] */
126
  move.l  #0, -(sp)
127
  move.l  #0, -(sp)
128
  move.l  #0, -(sp)
129
  jsr     main
130
  lea     (sp, 12), %sp
131
 
132
  /* stop on exit from main. */
133
1:
134
  halt
135
 

powered by: WebSVN 2.1.0

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