annotate packages/hal/powerpc/arch/current/include/ppc.inc @ 16:4f2df4ab82c8 ecos-sw-1999-06-18

Merge from eCos master repository on 1999-06-18-15:25:04-BST
author jlarmour
date Fri, 18 Jun 1999 07:59:09 +0000
parents 443894e2e912
children c38311975d4f
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 ## ppc.inc
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 ## PowerPC assembler header file
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 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
8 #####COPYRIGHTBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
9 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
10 # -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
11 # The contents of this file are subject to the Cygnus eCos Public License
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
12 # Version 1.0 (the "License"); you may not use this file except in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
13 # compliance with the License. You may obtain a copy of the License at
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
14 # http://sourceware.cygnus.com/ecos
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
15 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
16 # Software distributed under the License is distributed on an "AS IS"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
17 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
18 # License for the specific language governing rights and limitations under
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
19 # the License.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
20 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
21 # The Original Code is eCos - Embedded Cygnus Operating System, released
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
22 # September 30, 1998.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
23 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
24 # The Initial Developer of the Original Code is Cygnus. Portions created
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
25 # by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved.
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
26 # -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
27 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
28 #####COPYRIGHTEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
29 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 #######DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
31 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
32 ## Author(s): nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 ## Contributors: nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 ## Date: 1997-10-16
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 ## Purpose: PowerPC definitions.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 ## Description: This file contains various definitions and macros that are
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 ## useful for writing assembly code for the PowerPC
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 ## Usage:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 ## #include <cyg/hal/ppc.inc>
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 ##
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 ######DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 #------------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 # Easier to read names for the registers
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 .equ r0, 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 .equ r1, 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 .equ r2, 2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 .equ r3, 3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54 .equ r4, 4
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55 .equ r5, 5
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 .equ r6, 6
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 .equ r7, 7
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 .equ r8, 8
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 .equ r9, 9
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 .equ r10, 10
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 .equ r11, 11
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 .equ r12, 12
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 .equ r13, 13
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 .equ r14, 14
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 .equ r15, 15
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 .equ r16, 16
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 .equ r17, 17
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 .equ r18, 18
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69 .equ r19, 19
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 .equ r20, 20
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 .equ r21, 21
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 .equ r22, 22
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 .equ r23, 23
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 .equ r24, 24
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 .equ r25, 25
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 .equ r26, 26
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 .equ r27, 27
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 .equ r28, 28
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 .equ r29, 29
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 .equ r30, 30
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 .equ r31, 31
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 .equ sp, r1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 #------------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 # Some useful coding macros
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 # Load immediate word, has to be done with 2 instructions
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 .macro lwi reg,val
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 lis \reg,\val@H
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 ori \reg,\reg,\val@L
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 .endm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
94 #ifdef CYG_HAL_POWERPC_MPC603
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 # Move from HID0 hw control register
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 .macro mfhid0 reg
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
97 mfspr \reg,HID0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 .endm
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
99 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100
16
4f2df4ab82c8 Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents: 2
diff changeset
101 #define FUNC_START(name) \
4f2df4ab82c8 Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents: 2
diff changeset
102 .type name,@function; \
4f2df4ab82c8 Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents: 2
diff changeset
103 .globl name; \
4f2df4ab82c8 Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents: 2
diff changeset
104 name:
4f2df4ab82c8 Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents: 2
diff changeset
105
4f2df4ab82c8 Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents: 2
diff changeset
106 #define FUNC_END(name) \
4f2df4ab82c8 Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents: 2
diff changeset
107 /* nothing for now */
4f2df4ab82c8 Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents: 2
diff changeset
108
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 #------------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 # Exception, interrupt and thread context save area layout
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
111 # The layout of this structure is also defined in "hal_arch.h", for C
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
112 # code. Do not change this without changing that (or vice versa).
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
114 # These first 39 words are common to all saved states
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 .equ ppcreg_regs, 0 # 32 integer registers
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 .equ ppcreg_cr, 32*4
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 .equ ppcreg_xer, 33*4
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 .equ ppcreg_lr, 34*4
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 .equ ppcreg_ctr, 35*4
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
120 .equ ppcreg_msr, 36*4 # MSR at time of exception
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
121 .equ ppcreg_pc, 37*4 # PC at time of exception
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
122 .equ ppcreg_context_size, 38*4
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 # The following are only saved on exceptions and interrupts
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
125 .equ ppcreg_vector, 38*4 # exception vector
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 # The following are only saved on exceptions, and are for information
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 # only. They are not restored with the rest of the state.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 .equ ppcreg_hid0, 39*4 # HID0 HW control register
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 .equ ppcreg_dar, 40*4 # data address register
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 .equ ppcreg_dsisr, 41*4 # DSI status register
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 .equ ppcreg_pvr, 42*4 # processor version
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 .equ ppcreg_exception_size, 43*4
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
135 # Eventually add BATs, SRs and FP registers too.
0
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 .equ ppc_stack_frame_size, 56 # size of a stack frame
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
139 .equ ppc_exception_decrement, ppcreg_exception_size
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 #------------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 # end of ppc.inc