annotate packages/hal/mips/arch/current/include/arch.inc @ 76:435cced73e2f ecos-v1_3_1-release

eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
author jlarmour
date Tue, 28 Mar 2000 14:10:45 +0000
parents bf00f99aec69
children afdeb44241de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_HAL_ARCH_INC
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
2 #define CYGONCE_HAL_ARCH_INC
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
3 ##=============================================================================
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
4 ##
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
5 ## arch.inc
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
6 ##
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
7 ## MIPS assembler header file
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
8 ##
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
9 ##=============================================================================
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
10 #####COPYRIGHTBEGIN####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
11 #
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
12 # -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
13 # The contents of this file are subject to the Red Hat eCos Public License
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
14 # Version 1.1 (the "License"); you may not use this file except in
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
15 # compliance with the License. You may obtain a copy of the License at
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
16 # http://www.redhat.com/
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
17 #
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
18 # Software distributed under the License is distributed on an "AS IS"
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
19 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
20 # License for the specific language governing rights and limitations under
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
21 # the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
22 #
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
23 # The Original Code is eCos - Embedded Configurable Operating System,
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
24 # released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
25 #
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
26 # The Initial Developer of the Original Code is Red Hat.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
27 # Portions created by Red Hat are
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
28 # Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
29 # All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
30 # -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 62
diff changeset
31 #
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
32 #####COPYRIGHTEND####
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
33 ##=============================================================================
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
34 #######DESCRIPTIONBEGIN####
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
35 ##
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
36 ## Author(s): nickg
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
37 ## Contributors: nickg
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
38 ## Date: 1997-10-16
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
39 ## Purpose: Architecture definitions.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
40 ## Description: This file contains various definitions and macros that are
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
41 ## useful for writing assembly code for the MIPS CPU family.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
42 ## Usage:
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
43 ## #include <cyg/hal/arch.inc>
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
44 ## ...
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
45 ##
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
46 ##
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
47 ######DESCRIPTIONEND####
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
48 ##
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
49 ##=============================================================================
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
50
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
51 #include <cyg/hal/mips.inc>
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
52
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
53 #include <cyg/hal/variant.inc>
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
54
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
55 ##-----------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
56 ## Set up the value for the initial status register
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
57
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
58 #ifndef INITIAL_SR
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
59
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
60 #if defined(CYG_HAL_STARTUP_RAM)
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
61 # if defined(CYGPKG_HAL_MIPS_SIM) || !defined(CYGSEM_HAL_USE_ROM_MONITOR)
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
62 # define INITIAL_SR 0x1000ff00 /* CP0 usable, Ints enabled */
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
63 # else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
64 # define INITIAL_SR 0x1040ff00 /* as above + ROM vectors used */
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
65 # endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
66 #elif defined(CYG_HAL_STARTUP_ROM)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
67 # define INITIAL_SR 0x1040ff00 /* as above + ROM vectors used */
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
68 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
69
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
70 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
71
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
72 ##-----------------------------------------------------------------------------
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
73 ## Setup the initial value for the config0 register
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
74
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
75 #ifndef INITIAL_CONFIG0
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
76
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
77 #define INITIAL_CONFIG0 0x00000002
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
78
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
79 #endif
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
80
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
81 ##-----------------------------------------------------------------------------
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
82 ## MIPS thread and interrupt saved state. This must match the layout of the
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
83 ## HAL_SavedRegisters in hal_arch.h. Do not change this without changing the
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
84 ## layout there, or viceversa.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
85
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
86 #ifdef CYGHWR_HAL_MIPS_64BIT
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
87 # define mips_regsize 8
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
88 #else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
89 # define mips_regsize 4
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
90 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
91
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
92 # define mips_regsize32 4
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
93
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
94 #if defined(CYGHWR_HAL_MIPS_FPU)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
95 # if defined(CYGHWR_HAL_MIPS_FPU_64BIT)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
96 # define mips_fpuregsize 8
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
97 # elif defined(CYGHWR_HAL_MIPS_FPU_32BIT)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
98 # define mips_fpuregsize 4
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
99 # else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
100 # error MIPS FPU register size not defined
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
101 # endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
102 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
103
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
104
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
105 #define mipsreg_regs 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
106 #define mipsreg_hi (mips_regsize*32)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
107 #define mipsreg_lo (mipsreg_hi+mips_regsize)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
108 #ifdef CYGHWR_HAL_MIPS_FPU
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
109 # define mipsreg_fpureg (mipsreg_lo+mips_regsize)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
110 # define mipsreg_fcr31 (mipsreg_fpureg+(mips_fpuregsize*32))
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
111 # define mipsreg_fppad (mipsreg_fcr31+mips_regsize32)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
112 # define mipsreg_vector (mipsreg_fppad+mips_regsize32)
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
113 #else
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
114 # define mipsreg_vector (mipsreg_lo+mips_regsize32)
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
115 #endif
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
116 #define mipsreg_pc (mipsreg_vector+mips_regsize32)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
117 #define mipsreg_sr (mipsreg_pc+mips_regsize32)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
118 #define mipsreg_cachectrl (mipsreg_sr+mips_regsize32)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
119 #define mipsreg_cause (mipsreg_cachectrl+mips_regsize32)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
120 #define mipsreg_badvr (mipsreg_cause+mips_regsize32)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
121 #define mipsreg_prid (mipsreg_badvr+mips_regsize32)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
122 #define mipsreg_config (mipsreg_prid+mips_regsize32)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
123 #define mipsreg_size (mipsreg_config+mips_regsize32)
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
124
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
125 #define mips_exception_decrement (mipsreg_size*2)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
126
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
127 ##-----------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
128 ## Minimal stack frame size uses to call functions from asm.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
129
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
130 #define mips_stack_frame_size 32 // 4 (64 bit) args worth
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
131
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
132 ##-----------------------------------------------------------------------------
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
133 ## Load Address and Relocate. This macro is used in code that may be linked
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
134 ## to execute out of RAM but is actually executed from ROM. If that is the
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
135 ## case a suitable version of this macro will have been defined elsewhere.
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
136 ## This is just a default version for use when that does not happen.
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
137
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
138 #ifndef CYGPKG_HAL_MIPS_LAR_DEFINED
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
139
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
140 .macro lar reg,addr
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
141 la \reg,\addr
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
142 .endm
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
143
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
144 #define CYGPKG_HAL_MIPS_LAR_DEFINED
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
145
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
146 #endif
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
147
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
148 ##-----------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
149 ## CPU specific macros. These provide a common assembler interface to
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
150 ## operations that may have CPU specific implementations on different
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
151 ## variants of the architecture.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
152
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
153 # Initialize CPU
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
154 .macro hal_cpu_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
155 mtc0 zero,cause # zero cause reg
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
156 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
157 la v0,INITIAL_SR # initialize status register
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
158 mtc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
159 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
160 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
161 nop
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
162 la v0,INITIAL_CONFIG0
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
163 mtc0 v0,config0
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
164 nop
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
165 nop
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
166 nop
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
167 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
168
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
169 # Enable interrupts
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
170 #ifdef CYG_HAL_MIPS_R3900
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
171 .macro hal_cpu_int_enable
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
172 mfc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
173 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
174 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
175 ori v0,v0,0x0001 # set IE bit
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
176 mtc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
177 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
178 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
179 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
180 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
181 #else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
182 .macro hal_cpu_int_enable
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
183 mfc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
184 la v1,0xFFFFFFF9
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
185 and v0,v0,v1 # clear EXL and ERL bits
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
186 ori v0,v0,0x0001 # set IE bit
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
187 mtc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
188 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
189 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
190 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
191 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
192 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
193
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
194
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
195 # Disable interrupts
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
196 .macro hal_cpu_int_disable
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
197 mfc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
198 la v1,0xFFFFFFFE
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
199 and v0,v0,v1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
200 mtc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
201 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
202 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
203 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
204 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
205
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
206 # Merge the interrupt enable state of the status register in
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
207 # \sr with the current sr.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
208 #ifdef CYG_HAL_MIPS_R3900
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
209 #define HAL_SR_INT_MASK 0x00000001 // IEc only
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
210 #else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
211 #define HAL_SR_INT_MASK 0x00000007 // IE, EXL, ERL
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
212 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
213 .macro hal_cpu_int_merge sr
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
214 mfc0 v0,status # V0 = current SR
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
215 la v1,HAL_SR_INT_MASK # V1 = SR interrupt bits mask
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
216 and \sr,\sr,v1 # Isolate interrupt bits of \sr
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
217 nor v1,v1,zero # Invert mask
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
218 and v0,v0,v1 # V0 = current SR except int bits
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
219 or v0,v0,\sr # V0 = New SR
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
220 mtc0 v0,status # Return to SR
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
221 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
222
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
223 # Enable further exception processing, and disable
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
224 # interrupt processing.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
225 #ifdef CYG_HAL_MIPS_R3900
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
226 .macro hal_cpu_except_enable
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
227 hal_cpu_int_disable
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
228 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
229 #else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
230 .macro hal_cpu_except_enable
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
231 mfc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
232 la v1,0xFFFFFFF0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
233 and v0,v0,v1 # clear EXL, ERL and IE bits
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
234 mtc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
235 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
236 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
237 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
238 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
239 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
240
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
241 # Return from exception.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
242 #ifdef CYG_HAL_MIPS_R3900
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
243 .macro hal_cpu_eret pc,sr
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
244 mtc0 \sr,status # Load status register
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
245 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
246 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
247 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
248 sync # settle things down
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
249 jr \pc # jump back to interrupted code
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
250 rfe # restore state (delay slot)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
251 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
252 #else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
253 .macro hal_cpu_eret pc,sr
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
254 mtc0 \pc,epc # put PC in EPC
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
255 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
256 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
257 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
258 mtc0 \sr,status # put SR back
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
259 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
260 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
261 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
262 sync # settle things down
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
263 eret # return
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
264 nop # just to be safe
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
265 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
266 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
267
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
268 ##-----------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
269 # Default MIPS interrupt decoding macros. This uses the basic interrupt
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
270 # support provided by CP0 in the cause and status registers. If there is
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
271 # a more complex external interrupt controller, or the default stuff is
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
272 # interpreted differently (as in the TX3904) then these macros will be
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
273 # overridden and CYGPKG_HAL_MIPS_INTC_DEFINED will be defined.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
274
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
275 #ifndef CYGPKG_HAL_MIPS_INTC_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
276
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
277 #ifndef CYGPKG_HAL_MIPS_INTC_INIT_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
278 # initialize all interrupts to disabled
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
279 .macro hal_intc_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
280 mfc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
281 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
282 lui v1,0xFFFF
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
283 ori v1,v1,0x00FF
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
284 and v0,v0,v1 # clear the IntMask bits
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
285 mtc0 v0,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
286 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
287 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
288 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
289 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
290 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
291
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
292 .macro hal_intc_decode vnum
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
293 mfc0 v0,cause # get cause register
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
294 nop # delay slot
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
295 srl v0,v0,10 # shift interrupt bits down
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
296 andi v0,v0,0x7f # isolate 6 interrupt bits
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
297 la v1,hal_intc_translation_table
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
298 add v0,v0,v1 # index into table
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
299 lb \vnum,0(v0) # pick up vector number
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
300 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
301
48
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
302 #ifndef CYGPKG_HAL_MIPS_INTC_TRANSLATE_DEFINED
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
303 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
304 .macro hal_intc_translate inum,vnum
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
305 move \vnum,zero # Just vector zero is supported
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
306 .endm
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
307 #else
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
308 .macro hal_intc_translate inum,vnum
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
309 move \vnum,\inum # Vector == interrupt number
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
310 .endm
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
311 #endif
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
312 #endif
1370c5e55234 Merge from eCos master repository on 1999-10-25-21:18:27-BST
jlarmour
parents: 36
diff changeset
313
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
314 .macro hal_intc_decode_data
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
315 hal_intc_translation_table:
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
316 .byte 0, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
317 .byte 2, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
318 .byte 3, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
319 .byte 2, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
320 .byte 4, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
321 .byte 2, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
322 .byte 3, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
323 .byte 2, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
324 .byte 5, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
325 .byte 2, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
326 .byte 3, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
327 .byte 2, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
328 .byte 4, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
329 .byte 2, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
330 .byte 3, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
331 .byte 2, 0, 1, 0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
332 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
333 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
334
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
335 #------------------------------------------------------------------------------
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
336 # Register save and restore macros. These expect a pointer to a CPU save state
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
337 # area in the register \ptr. The GPR indicated by \reg will be saved into its
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
338 # slot in that structure.
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
339
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
340 #ifdef CYGHWR_HAL_MIPS_64BIT
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
341
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
342 .macro sgpr reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
343 sd $\reg,(mipsreg_regs+\reg*mips_regsize)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
344 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
345
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
346 .macro lgpr reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
347 ld $\reg,(mipsreg_regs+\reg*mips_regsize)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
348 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
349
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
350 .macro slo reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
351 sd \reg,(mipsreg_lo)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
352 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
353
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
354 .macro shi reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
355 sd \reg,(mipsreg_hi)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
356 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
357
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
358 .macro llo reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
359 ld \reg,(mipsreg_lo)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
360 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
361
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
362 .macro lhi reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
363 ld \reg,(mipsreg_hi)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
364 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
365
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
366 .macro ssp reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
367 sd \reg,(mipsreg_regs+29*mips_regsize)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
368 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
369
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
370 .macro lsp reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
371 ld \reg,(mipsreg_regs+29*mips_regsize)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
372 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
373
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
374 #else
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
375
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
376 .macro sgpr reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
377 sw $\reg,(mipsreg_regs+\reg*mips_regsize)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
378 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
379
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
380 .macro lgpr reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
381 lw $\reg,(mipsreg_regs+\reg*mips_regsize)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
382 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
383
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
384 .macro slo reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
385 sw \reg,(mipsreg_lo)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
386 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
387
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
388 .macro shi reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
389 sw \reg,(mipsreg_hi)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
390 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
391
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
392 .macro llo reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
393 lw \reg,(mipsreg_lo)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
394 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
395
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
396 .macro lhi reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
397 lw \reg,(mipsreg_hi)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
398 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
399
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
400 .macro ssp reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
401 sw \reg,(mipsreg_regs+29*mips_regsize)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
402 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
403
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
404 .macro lsp reg,ptr
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
405 lw \reg,(mipsreg_regs+29*mips_regsize)(\ptr)
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
406 .endm
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
407
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
408 #endif
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
409
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
410 # PC is always 32-bit for us
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
411
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
412 .macro lpc reg,ptr
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
413 lw \reg,(mipsreg_pc)(\ptr)
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
414 .endm
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
415
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
416 .macro spc reg,ptr
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
417 sw \reg,(mipsreg_pc)(\ptr)
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
418 .endm
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
419
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 48
diff changeset
420 #------------------------------------------------------------------------------
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
421 # FPU macros.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
422 # The MIPS floating point unit essentially operates in two modes. In the first
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
423 # it supplies 32 32bit FP registers that may be paired into 16 64 bit registers.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
424 # In the second it supplies 32 64bit registers. Which mode is to be used depends
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
425 # not only on the specific implementation in use, but also on the setting of the
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
426 # FR bit in the status register (if it is implemented) and on the expectations of
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
427 # the toolchain.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
428
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
429 #ifndef CYGPKG_HAL_MIPS_FPU_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
430
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
431 #ifdef CYGHWR_HAL_MIPS_FPU
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
432
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
433 #if defined(CYGHWR_HAL_MIPS_FPU_64BIT)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
434 #define sfpr sdc1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
435 #define lfpr ldc1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
436 #define CYG_HAL_MIPS_FPU_SR_INIT 0x24000000
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
437 #elif defined(CYGHWR_HAL_MIPS_FPU_32BIT)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
438 #define sfpr swc1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
439 #define lfpr lwc1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
440 #define CYG_HAL_MIPS_FPU_SR_INIT 0x20000000
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
441 #else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
442 #error MIPS FPU register size not defined
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
443 #endif
18
7253dcc42a09 Merge from eCos master repository on 1999-06-25-15:31:50-BST
jlarmour
parents: 8
diff changeset
444
26
4741a3c3496a Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents: 24
diff changeset
445 #ifndef CYG_HAL_MIPS_FCSR_INIT
4741a3c3496a Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents: 24
diff changeset
446 #define CYG_HAL_MIPS_FCSR_INIT 0
18
7253dcc42a09 Merge from eCos master repository on 1999-06-25-15:31:50-BST
jlarmour
parents: 8
diff changeset
447 #endif
7253dcc42a09 Merge from eCos master repository on 1999-06-25-15:31:50-BST
jlarmour
parents: 8
diff changeset
448
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
449 .macro hal_fpu_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
450 mfc0 v0,status # Get sr
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
451 la v1,0xDBFFFFFF # Clear bits to be changed
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
452 and v0,v0,v1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
453 la v1,CYG_HAL_MIPS_FPU_SR_INIT # Set the bits we want
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
454 or v0,v0,v1 # Set sr to required value
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
455 mtc0 v0,status # return to sr
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
456 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
457 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
458 nop
26
4741a3c3496a Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents: 24
diff changeset
459 la v0,CYG_HAL_MIPS_FCSR_INIT # Get initial value for FCR31
18
7253dcc42a09 Merge from eCos master repository on 1999-06-25-15:31:50-BST
jlarmour
parents: 8
diff changeset
460 ctc1 v0,$31 # set Fp control reg
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
461 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
462 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
463
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
464 # Save the caller-saved registers as defined by the ABI.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
465 # These only really need saving during interrupts.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
466 .macro hal_fpu_save_caller regs
26
4741a3c3496a Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents: 24
diff changeset
467 cfc1 v0,$31
4741a3c3496a Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents: 24
diff changeset
468 sw v0,mipsreg_fcr31(\regs)
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
469 sfpr f0,(mipsreg_fpureg+0*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
470 sfpr f1,(mipsreg_fpureg+1*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
471 sfpr f2,(mipsreg_fpureg+2*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
472 sfpr f3,(mipsreg_fpureg+3*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
473 sfpr f4,(mipsreg_fpureg+4*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
474 sfpr f5,(mipsreg_fpureg+5*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
475 sfpr f6,(mipsreg_fpureg+6*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
476 sfpr f7,(mipsreg_fpureg+7*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
477 sfpr f8,(mipsreg_fpureg+8*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
478 sfpr f9,(mipsreg_fpureg+9*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
479 sfpr f10,(mipsreg_fpureg+10*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
480 sfpr f11,(mipsreg_fpureg+11*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
481 sfpr f12,(mipsreg_fpureg+12*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
482 sfpr f13,(mipsreg_fpureg+13*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
483 sfpr f14,(mipsreg_fpureg+14*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
484 sfpr f15,(mipsreg_fpureg+15*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
485 sfpr f16,(mipsreg_fpureg+16*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
486 sfpr f17,(mipsreg_fpureg+17*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
487 sfpr f18,(mipsreg_fpureg+18*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
488 sfpr f19,(mipsreg_fpureg+19*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
489 sfpr f31,(mipsreg_fpureg+31*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
490 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
491
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
492 # Save the callee-saved registers as defined by the ABI.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
493 # These are the only registers that need to be saved
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
494 # across thread switches.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
495 .macro hal_fpu_save_callee regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
496 sfpr f20,(mipsreg_fpureg+20*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
497 sfpr f21,(mipsreg_fpureg+21*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
498 sfpr f22,(mipsreg_fpureg+22*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
499 sfpr f23,(mipsreg_fpureg+23*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
500 sfpr f24,(mipsreg_fpureg+24*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
501 sfpr f25,(mipsreg_fpureg+25*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
502 sfpr f26,(mipsreg_fpureg+26*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
503 sfpr f27,(mipsreg_fpureg+27*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
504 sfpr f28,(mipsreg_fpureg+28*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
505 sfpr f29,(mipsreg_fpureg+29*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
506 sfpr f30,(mipsreg_fpureg+30*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
507 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
508
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
509 # General macro to save everything
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
510 .macro hal_fpu_save regs
36
e97d78785e2d Merge from eCos master repository on 1999-09-12-15:40:34-BST
jlarmour
parents: 26
diff changeset
511 hal_fpu_save_caller \regs
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
512 hal_fpu_save_callee \regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
513 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
514
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
515 # Reload the caller-saved registers.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
516 .macro hal_fpu_load_caller regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
517 lfpr f0,(mipsreg_fpureg+0*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
518 lfpr f1,(mipsreg_fpureg+1*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
519 lfpr f2,(mipsreg_fpureg+2*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
520 lfpr f3,(mipsreg_fpureg+3*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
521 lfpr f4,(mipsreg_fpureg+4*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
522 lfpr f5,(mipsreg_fpureg+5*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
523 lfpr f6,(mipsreg_fpureg+6*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
524 lfpr f7,(mipsreg_fpureg+7*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
525 lfpr f8,(mipsreg_fpureg+8*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
526 lfpr f9,(mipsreg_fpureg+9*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
527 lfpr f10,(mipsreg_fpureg+10*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
528 lfpr f11,(mipsreg_fpureg+11*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
529 lfpr f12,(mipsreg_fpureg+12*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
530 lfpr f13,(mipsreg_fpureg+13*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
531 lfpr f14,(mipsreg_fpureg+14*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
532 lfpr f15,(mipsreg_fpureg+15*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
533 lfpr f16,(mipsreg_fpureg+16*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
534 lfpr f17,(mipsreg_fpureg+17*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
535 lfpr f18,(mipsreg_fpureg+18*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
536 lfpr f19,(mipsreg_fpureg+19*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
537 lfpr f31,(mipsreg_fpureg+31*mips_fpuregsize)(\regs)
26
4741a3c3496a Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents: 24
diff changeset
538 lw v0,mipsreg_fcr31(\regs)
4741a3c3496a Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents: 24
diff changeset
539 ctc1 v0,$31
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
540 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
541
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
542 # Reload the callee-saved registers.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
543 .macro hal_fpu_load_callee regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
544 lfpr f20,(mipsreg_fpureg+20*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
545 lfpr f21,(mipsreg_fpureg+21*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
546 lfpr f22,(mipsreg_fpureg+22*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
547 lfpr f23,(mipsreg_fpureg+23*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
548 lfpr f24,(mipsreg_fpureg+24*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
549 lfpr f25,(mipsreg_fpureg+25*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
550 lfpr f26,(mipsreg_fpureg+26*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
551 lfpr f27,(mipsreg_fpureg+27*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
552 lfpr f28,(mipsreg_fpureg+28*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
553 lfpr f29,(mipsreg_fpureg+29*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
554 lfpr f30,(mipsreg_fpureg+30*mips_fpuregsize)(\regs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
555 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
556
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
557 # Reload everything.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
558 .macro hal_fpu_load regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
559 hal_fpu_load_caller \regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
560 hal_fpu_load_callee \regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
561 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
562 #else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
563
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
564 # Default macros for non-fpu implementations
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
565
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
566 .macro hal_fpu_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
567 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
568
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
569 .macro hal_fpu_save regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
570 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
571
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
572 .macro hal_fpu_save_caller regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
573 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
574
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
575 .macro hal_fpu_save_callee regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
576 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
577
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
578 .macro hal_fpu_load_caller regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
579 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
580
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
581 .macro hal_fpu_load_callee regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
582 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
583
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
584 .macro hal_fpu_load regs
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
585 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
586
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
587 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
588
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
589 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
590
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
591 #------------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
592 # MMU macros.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
593
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
594 #ifndef CYGPKG_HAL_MIPS_MMU_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
595
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
596 .macro hal_mmu_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
597 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
598
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
599 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
600
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
601 #------------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
602 # MEMC macros.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
603
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
604 #ifndef CYGPKG_HAL_MIPS_MEMC_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
605
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
606 .macro hal_memc_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
607 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
608
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
609 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
610
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
611 #------------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
612 # Cache macros.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
613
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
614 #ifndef CYGPKG_HAL_MIPS_CACHE_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
615
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
616 #ifdef CYG_HAL_MIPS_R3900
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
617 .macro hal_cache_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
618 mfc0 v0,config # disable cache in config register
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
619 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
620 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
621 la v1,0xffffffcf
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
622 and v0,v0,v1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
623 mtc0 v0,config
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
624 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
625 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
626 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
627 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
628 #else
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
629 .macro hal_cache_init
36
e97d78785e2d Merge from eCos master repository on 1999-09-12-15:40:34-BST
jlarmour
parents: 26
diff changeset
630
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
631 mfc0 v0,config0 # disable Kseg0 caching in config0 register
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
632 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
633 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
634 la v1,0xfffffff8
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
635 and v0,v0,v1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
636 ori v0,v0,2
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
637 mtc0 v0,config0
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
638 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
639 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
640 nop
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 18
diff changeset
641
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
642 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
643 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
644
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
645 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
646
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
647 #------------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
648 # Diagnostics macros.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
649
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
650 #ifndef CYGPKG_HAL_MIPS_DIAG_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
651
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
652 .macro hal_diag_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
653 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
654
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
655 .macro hal_diag_excpt_start
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
656 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
657
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
658 .macro hal_diag_intr_start
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
659 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
660
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
661 .macro hal_diag_restore
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
662 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
663 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
664
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
665 #------------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
666 # Timer initialization.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
667
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
668 #ifndef CYGPKG_HAL_MIPS_TIMER_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
669
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
670 .macro hal_timer_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
671 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
672
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
673 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
674
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
675 #------------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
676 # Monitor initialization.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
677
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
678 #ifndef CYGPKG_HAL_MIPS_MON_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
679
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
680 .macro hal_mon_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
681 .endm
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
682
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
683 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
684
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
685 #------------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
686 #endif // ifndef CYGONCE_HAL_ARCH_INC
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents:
diff changeset
687 # end of arch.inc