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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [hal/] [mips/] [vr4300/] [v2_0/] [include/] [variant.inc] - Blame information for rev 174

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 unneback
#ifndef CYGONCE_HAL_VARIANT_INC
2
#define CYGONCE_HAL_VARIANT_INC
3
##=============================================================================
4
##
5
##      variant.inc
6
##
7
##      VR4300 assembler header file
8
##
9
##=============================================================================
10
#####ECOSGPLCOPYRIGHTBEGIN####
11
## -------------------------------------------
12
## This file is part of eCos, the Embedded Configurable Operating System.
13
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
14
##
15
## eCos is free software; you can redistribute it and/or modify it under
16
## the terms of the GNU General Public License as published by the Free
17
## Software Foundation; either version 2 or (at your option) any later version.
18
##
19
## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
20
## WARRANTY; without even the implied warranty of MERCHANTABILITY or
21
## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
22
## for more details.
23
##
24
## You should have received a copy of the GNU General Public License along
25
## with eCos; if not, write to the Free Software Foundation, Inc.,
26
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
27
##
28
## As a special exception, if other files instantiate templates or use macros
29
## or inline functions from this file, or you compile this file and link it
30
## with other works to produce a work based on this file, this file does not
31
## by itself cause the resulting work to be covered by the GNU General Public
32
## License. However the source code for this file must still be made available
33
## in accordance with section (3) of the GNU General Public License.
34
##
35
## This exception does not invalidate any other reasons why a work based on
36
## this file might be covered by the GNU General Public License.
37
##
38
## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
39
## at http://sources.redhat.com/ecos/ecos-license/
40
## -------------------------------------------
41
#####ECOSGPLCOPYRIGHTEND####
42
##=============================================================================
43
#######DESCRIPTIONBEGIN####
44
##
45
## Author(s):   nickg
46
## Contributors:        nickg
47
## Date:        1999-04-06
48
## Purpose:     VR4300 definitions.
49
## Description: This file contains various definitions and macros that are
50
##              useful for writing assembly code for the VR4300 CPU.
51
## Usage:
52
##              #include 
53
##              ...
54
##
55
##
56
######DESCRIPTIONEND####
57
##
58
##=============================================================================
59
 
60
        .set    mips3
61
 
62
#include 
63
 
64
#include 
65
 
66
#include 
67
 
68
#------------------------------------------------------------------------------
69
# Initial SR value
70
# Set the KX bit to enable 64bit accesses in kernel mode.
71
 
72
#define INITIAL_SR_VAR  0x00000080
73
 
74
#------------------------------------------------------------------------------
75
# Set up initial value for config register. Sets endian mode and
76
# disables the cache on kseg0.
77
 
78
#if defined(CYGPKG_HAL_MIPS_MSBFIRST)
79
# define        INITIAL_CONFIG0 0x00008002
80
#elif defined(CYGPKG_HAL_MIPS_LSBFIRST)
81
# define        INITIAL_CONFIG0 0x00000002
82
#else
83
# error MIPS endianness not set by configuration
84
#endif
85
 
86
#------------------------------------------------------------------------------
87
# Set up initial value for FPU FCR31 register. We set the FS bit to flush
88
# denormalized results to zero.
89
 
90
#ifndef CYG_HAL_MIPS_FCSR_INIT
91
#define CYG_HAL_MIPS_FCSR_INIT 0x01000000
92
#endif
93
 
94
#------------------------------------------------------------------------------
95
# Cache macros.
96
 
97
#ifndef CYGPKG_HAL_MIPS_CACHE_DEFINED
98
 
99
        .macro  hal_cache_init
100
 
101
#ifndef CYG_HAL_STARTUP_RAM
102
 
103
        mfc0    v0,config0              # disable Kseg0 caching in config0 register
104
        nop
105
        nop
106
        la      v1,0xfffffff8
107
        and     v0,v0,v1
108
        ori     v0,v0,2
109
        mtc0    v0,config0
110
        nop
111
        nop
112
        nop
113
 
114
        .set mips3                      # Set ISA to MIPS 3 to allow cache insns
115
 
116
        # Now ensure the caches are invalidated. The caches are NOT cleared or
117
        # invalidated on non-power-up resets and may come up in a random state
118
        # on power-up. Hence they may contain stale or randomly bogus data.
119
        # Here we use the index-store-tag cache operation to clear all the cache
120
        # tags and states to zero. This will render them all invalid on the
121
        # VR4300.
122
 
123
        # D-cache:
124
        la      t0,0x80000000
125
        addi    t1,t0,0x2000
126
1:
127
        mtc0    zero,$28
128
        mtc0    zero,$29
129
        cache   0x09,0(t0)
130
        addi    t0,t0,0x10
131
        sub     v0,t1,t0
132
        bgez    v0,1b
133
        nop                             # delay slot
134
 
135
        # I-cache:
136
        la      a0,0x80000000
137
        addi    a1,a0,0x4000
138
1:
139
        mtc0    zero,$28
140
        mtc0    zero,$29
141
        cache   0x08,0(a0)
142
        addi    a0,a0,0x20
143
        sub     v0,a1,a0
144
        bgez    v0,1b
145
        nop                             # delay slot
146
 
147
        .set mips0                      # reset ISA to default
148
#endif
149
 
150
        .endm
151
 
152
#define CYGPKG_HAL_MIPS_CACHE_DEFINED
153
 
154
#endif
155
 
156
#------------------------------------------------------------------------------
157
#endif // ifndef CYGONCE_HAL_VARIANT_INC
158
# end of variant.inc

powered by: WebSVN 2.1.0

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