annotate packages/hal/powerpc/cogent/current/src/cogent.S @ 1777:c16341b1bac6 default tip

* Added execute permissions to files missed in conversion from CVS
author alexs
date Mon, 12 Oct 2009 02:26:09 +0100
parents d2c90368aeef
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 ## cogent.S
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 ## Cogent board hardware setup
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 ##=============================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
8 #####ECOSGPLCOPYRIGHTBEGIN####
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
9 ## -------------------------------------------
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
10 ## This file is part of eCos, the Embedded Configurable Operating System.
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
11 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
12 ##
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
13 ## eCos is free software; you can redistribute it and/or modify it under
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
14 ## the terms of the GNU General Public License as published by the Free
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
15 ## Software Foundation; either version 2 or (at your option) any later version.
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
16 ##
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
17 ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
18 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
19 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
20 ## for more details.
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
21 ##
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
22 ## You should have received a copy of the GNU General Public License along
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
23 ## with eCos; if not, write to the Free Software Foundation, Inc.,
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
24 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
25 ##
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
26 ## As a special exception, if other files instantiate templates or use macros
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
27 ## or inline functions from this file, or you compile this file and link it
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
28 ## with other works to produce a work based on this file, this file does not
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
29 ## by itself cause the resulting work to be covered by the GNU General Public
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
30 ## License. However the source code for this file must still be made available
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
31 ## in accordance with section (3) of the GNU General Public License.
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
32 ##
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
33 ## This exception does not invalidate any other reasons why a work based on
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
34 ## this file might be covered by the GNU General Public License.
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
35 ##
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
36 ## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
37 ## at http://sources.redhat.com/ecos/ecos-license/
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
38 ## -------------------------------------------
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
39 #####ECOSGPLCOPYRIGHTEND####
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 #######DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 ## Author(s): nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 ## Contributors: nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 ## Date: 1997-11-11
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 ## Purpose: Cogent board hardware setup
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 ## Description: This file contains any code needed to initialize the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 ## hardware on a Cogent PowerPC board.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 ######DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54 #include <pkgconf/hal.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
56 #include <cyg/hal/ppc_regs.h>
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 68
diff changeset
57 #include <cyg/hal/arch.inc>
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 #------------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 .globl hal_hardware_init
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 hal_hardware_init:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63
68
f74b2666b30d Merge from eCos master repository on 2000-02-04-07:47:04-GMT
jlarmour
parents: 66
diff changeset
64 #if defined(CYGPKG_HAL_POWERPC_COGENT) && defined(CYGPKG_HAL_POWERPC_MPC8xx)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
66 # Set up MPC8xx mapping registers for cogent
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
67
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
68 lwi r3,CYGARC_REG_IMM_BASE # base address of control registers
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
69 mtspr CYGARC_REG_IMMR,r3
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
70
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
71 # Set timebase divisor to busclock/16, pitrtc divisor to 512.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
72 lwz r4,(CYGARC_REG_IMM_SCCR - CYGARC_REG_IMM_BASE)(r3)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
73 lwi r5,(CYGARC_REG_IMM_SCCR_RTDIV | CYGARC_REG_IMM_SCCR_RTSEL | CYGARC_REG_IMM_SCCR_TBS)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
74 or r4,r4,r5
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
75 stw r4,(CYGARC_REG_IMM_SCCR - CYGARC_REG_IMM_BASE)(r3)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
77 # Enable TimeBase
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
78 li r4,CYGARC_REG_IMM_TBSCR_TBE
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
79 sth r4,(CYGARC_REG_IMM_TBSCR - CYGARC_REG_IMM_BASE)(r3)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
81 # Note: I do not know if the timeout is correct/optimal.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
82 # Works with the above memory mappings/wait states and
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
83 # the PromICE.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
84 # Disable watchdog, enable bus monitor, timeout after 255*8 cycles
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
85 lwi r4,(CYGARC_REG_IMM_SYPCR_BMT_MASK | CYGARC_REG_IMM_SYPCR_BME)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
86 stw r4,(CYGARC_REG_IMM_SYPCR - CYGARC_REG_IMM_BASE)(r3)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 # Set CS0 to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 # base addr 0xfff00000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 # wait states 4
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 # size 1M
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 # Covers ROM
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
93 # Note: After a reset code is currently executing via the default
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
94 # mapping defined in bank 0. This bank must remain valid while
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
95 # it is being configured.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
96 lwi r4,(0xfff00000 | CYGARC_REG_IMM_BR_PS_16 | CYGARC_REG_IMM_BR_V)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
97 stw r4,(CYGARC_REG_IMM_BR0 - CYGARC_REG_IMM_BASE)(r3)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
98 lwi r4,(0xfff00000 | CYGARC_REG_IMM_OR_BI | 4 << CYGARC_REG_IMM_OR_SCY_SHIFT)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
99 stw r4,(CYGARC_REG_IMM_OR0 - CYGARC_REG_IMM_BASE)(r3)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101 # Set CS1 to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 # base addr 0x00000000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 # external ACK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104 # size 64M
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 # Covers DRAM and slot0
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
106 lwi r4,(0xfc000000 | CYGARC_REG_IMM_OR_SETA)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
107 stw r4,(CYGARC_REG_IMM_OR1 - CYGARC_REG_IMM_BASE)(r3)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
108 lwi r4,(0x00000000 | CYGARC_REG_IMM_BR_PS_32 | CYGARC_REG_IMM_BR_V)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
109 stw r4,(CYGARC_REG_IMM_BR1 - CYGARC_REG_IMM_BASE)(r3)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 # Set CS2 to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 # base addr 0x04000000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 # external ACK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 # size 64M
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 # slot1 and slot2
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
116 lwi r4,(0xfc000000 | CYGARC_REG_IMM_OR_SETA)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
117 stw r4,(CYGARC_REG_IMM_OR2 - CYGARC_REG_IMM_BASE)(r3)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
118 lwi r4,(0x04000000 | CYGARC_REG_IMM_BR_PS_32 | CYGARC_REG_IMM_BR_V)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
119 stw r4,(CYGARC_REG_IMM_BR2 - CYGARC_REG_IMM_BASE)(r3)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 # Set CS3 to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 # base addr 0x0e000000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 # exernal ack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 # size 32M
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 # covers IO registers
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
126 lwi r4,(0xfe000000 | CYGARC_REG_IMM_OR_BI | CYGARC_REG_IMM_OR_SETA)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
127 stw r4,(CYGARC_REG_IMM_OR3 - CYGARC_REG_IMM_BASE)(r3)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
128 lwi r4,(0x0e000000 | CYGARC_REG_IMM_BR_PS_32 | CYGARC_REG_IMM_BR_V)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
129 stw r4,(CYGARC_REG_IMM_BR3 - CYGARC_REG_IMM_BASE)(r3)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
133 sync
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 blr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 #------------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 # end of cogent.S