annotate packages/hal/powerpc/mpc8xx/current/include/variant.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 c5536bad4c24
children 95f3e12a6327
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_HAL_VARIANT_INC
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
2 #define CYGONCE_HAL_VARIANT_INC
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
3 ##=============================================================================
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
4 ##
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
5 ## variant.inc
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
6 ##
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
7 ## MPC8xx family assembler header file
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
8 ##
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
9 ##=============================================================================
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
10 #####COPYRIGHTBEGIN####
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
11 #
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
12 # -------------------------------------------
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
13 # The contents of this file are subject to the Red Hat eCos Public License
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
14 # Version 1.1 (the "License"); you may not use this file except in
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
15 # compliance with the License. You may obtain a copy of the License at
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
16 # http://www.redhat.com/
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
17 #
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
18 # Software distributed under the License is distributed on an "AS IS"
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
19 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
20 # License for the specific language governing rights and limitations under
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
21 # the License.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
22 #
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
23 # The Original Code is eCos - Embedded Configurable Operating System,
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
24 # released September 30, 1998.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
25 #
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
26 # The Initial Developer of the Original Code is Red Hat.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
27 # Portions created by Red Hat are
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
28 # Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
29 # All Rights Reserved.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
30 # -------------------------------------------
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
31 #
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
32 #####COPYRIGHTEND####
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
33 ##=============================================================================
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
34 #######DESCRIPTIONBEGIN####
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
35 ##
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
36 ## Author(s): jskov
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
37 ## Contributors:jskov
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
38 ## Date: 2000-02-04
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
39 ## Purpose: MPC8xx family definitions.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
40 ## Description: This file contains various definitions and macros that are
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
41 ## useful for writing assembly code for the MPC8xx CPU family.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
42 ## Usage:
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
43 ## #include <cyg/hal/variant.inc>
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
44 ## ...
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
45 ##
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
46 ##
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
47 ######DESCRIPTIONEND####
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
48 ##
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
49 ##=============================================================================
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
50
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
51 #include <pkgconf/hal.h>
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
52
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
53 #include <cyg/hal/arch.inc>
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
54
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
55 ##-----------------------------------------------------------------------------
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
56 ## MPC8xx defined vectors
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
57
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
58 .macro hal_extra_vectors
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
59 # MPC8xx vectors
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
60 exception_vector software_emu
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
61 exception_vector instruction_tlb_miss
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
62 exception_vector data_tlb_miss
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
63 exception_vector instruction_tlb_error
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
64 exception_vector data_tlb_error
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
65 exception_vector reserved_01500
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
66 exception_vector reserved_01600
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
67 exception_vector reserved_01700
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
68 exception_vector reserved_01800
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
69 exception_vector reserved_01900
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
70 exception_vector reserved_01A00
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
71 exception_vector reserved_01B00
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
72 exception_vector data_breakpoint
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
73 exception_vector instruction_breakpoint
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
74 exception_vector peripheral_breakpoint
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
75 exception_vector NMI_port
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
76 .endm
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
77
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
78 ##-----------------------------------------------------------------------------
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
79 ## MPC8xx CPU initialization
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
80 ##
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
81 ## Initialize CPU to a post-reset state, ensuring the ground doesn''t
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
82 ## shift under us while we try to set things up.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
83
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
84 .macro hal_cpu_init
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
85 # Disable special MPC8xx "development support" which
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
86 # suppresses trace exceptions. The CPU seems to hang, not
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
87 # executing from offset 0x1e00(?) as expected.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
88 lwi r3,0x00000007
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
89 mtspr ICTRL,r3
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
90 li r3,0
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
91 mtspr DER, r3
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
92
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
93 # Disable caches
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
94 lwi r3,CYGARC_REG_DC_CMD_CD
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
95 sync
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
96 mtspr CYGARC_REG_DC_CST,r3
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
97 lwi r3,CYGARC_REG_IC_CMD_CD
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
98 isync
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
99 mtspr CYGARC_REG_IC_CST,r3
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
100 isync
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
101
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
102 # Set up MSR (disable MMU for now)
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
103 lwi r3,(CYG_MSR & ~(MSR_IR | MSR_DR))
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
104 sync
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
105 mtmsr r3
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
106 sync
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
107 .endm
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
108
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
109 ##-----------------------------------------------------------------------------
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
110 ## MPC8xx exception state handling
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
111 .macro hal_variant_save regs
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
112 .endm
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
113
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
114 .macro hal_variant_load regs
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
115 .endm
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
116
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
117 ##-----------------------------------------------------------------------------
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
118 ## MPC8xx monitor initialization
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
119
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
120 #ifndef CYGPKG_HAL_PPC_MON_DEFINED
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
121
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
122 #if defined(CYG_HAL_STARTUP_ROM) || \
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
123 ( defined(CYG_HAL_STARTUP_RAM) && \
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
124 !defined(CYGSEM_HAL_USE_ROM_MONITOR))
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
125
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
126 .macro hal_mon_init
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
127 #ifdef CYGSEM_HAL_POWERPC_COPY_VECTORS
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
128 # If we are starting up from ROM and want vectors in RAM
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
129 # or we are starting in RAM and NOT using a ROM monitor,
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
130 # copy exception handler code to 0.
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
131 lwi r3,rom_vectors # r3 = rom start
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
132 lwi r4,0 # r4 = ram start
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
133 lwi r5,rom_vectors_end # r5 = rom end
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
134 cmplw r3,r5 # skip if no vectors
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
135 beq 2f
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
136
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
137 subi r3,r3,4
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
138 subi r4,r4,4
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
139 subi r5,r5,4
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
140 1:
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
141 lwzu r0,4(r3) # get word from ROM
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
142 stwu r0,4(r4) # store in RAM
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
143 cmplw r3,r5 # compare
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
144 blt 1b # loop if not yet done
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
145 2:
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
146 #endif
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
147
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
148 # Next initialize the VSR table. This happens whether the
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
149 # vectors were copied to RAM or not.
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
150
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
151 # First fill with exception handlers
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
152 lwi r3,cyg_hal_default_exception_vsr
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
153 lwi r4,hal_vsr_table
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
154 subi r4,r4,4
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
155 li r5,CYGNUM_HAL_VSR_COUNT
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
156 1: stwu r3,4(r4)
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
157 subi r5,r5,1
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
158 cmpwi r5,0
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
159 bne 1b
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
160
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
161 # Then fill in the special vectors
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
162 lwi r3,cyg_hal_default_interrupt_vsr
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
163 lwi r4,hal_vsr_table
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
164 stw r3,CYGNUM_HAL_VECTOR_INTERRUPT*4(r4)
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
165 stw r3,CYGNUM_HAL_VECTOR_DECREMENTER*4(r4)
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
166 .endm
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
167
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
168 #elif defined(CYG_HAL_STARTUP_RAM) && defined(CYGSEM_HAL_USE_ROM_MONITOR)
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
169
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
170 # Initialize the VSR table entries
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
171 # We only take control of the interrupt vectors,
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
172 # the rest are left to the ROM for now...
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
173
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
174 .macro hal_mon_init
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
175 lwi r3,cyg_hal_default_interrupt_vsr
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
176 lwi r4,hal_vsr_table
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
177 stw r3,CYGNUM_HAL_VECTOR_INTERRUPT*4(r4)
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
178 stw r3,CYGNUM_HAL_VECTOR_DECREMENTER*4(r4)
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
179 .endm
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
180
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
181
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
182 #else
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
183
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
184 .macro hal_mon_init
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
185
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
186 .endm
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
187
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
188 #endif
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
189
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
190
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
191 #define CYGPKG_HAL_PPC_MON_DEFINED
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
192
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
193 #endif // CYGPKG_HAL_PPC_MON_DEFINED
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
194
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
195
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
196
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
197
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
198 ##-----------------------------------------------------------------------------
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
199 ## Indicate that the ISR tables are defined in variant.S
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
200
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
201 #define CYG_HAL_PPC_ISR_TABLES_DEFINED
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
202
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
203 ##-----------------------------------------------------------------------------
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
204 ## MPC8xx interrupt handling.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
205
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
206 #ifndef CYGPKG_HAL_POWERPC_INTC_DEFINED
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
207
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
208 ## First level decoding of MPC8xx SIU interrupt controller.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
209
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
210 # decode the interrupt
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
211 .macro hal_intc_decode dreg,state
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
212 lwz \dreg,CYGARC_PPCREG_VECTOR(\state) # retrieve vector number,
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
213 rlwinm. \dreg,\dreg,22,31,31 # isolate bit 21
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
214 beq 0f # done if decrementer (vec 0)
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
215 lwi \dreg,CYGARC_REG_IMM_SIVEC # if external, get SIU
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
216 lbz \dreg,0(\dreg) # vector.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
217 srwi \dreg,\dreg,2
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
218 addi \dreg,\dreg,1 # Skip decrementer vector
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 70
diff changeset
219 0: stw \dreg,CYGARC_PPCREG_VECTOR(\state) # update vector in state frame.
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
220 slwi \dreg,\dreg,2 # convert to byte offset.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
221 .endm
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
222
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
223
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
224 #define CYGPKG_HAL_POWERPC_INTC_DEFINED
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
225 #endif // CYGPKG_HAL_POWERPC_INTC_DEFINED
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
226
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
227 #------------------------------------------------------------------------------
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
228 #endif // ifndef CYGONCE_HAL_VARIANT_INC
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
229 # end of variant.inc