]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
2 | MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP | |
3 | M68000 Hi-Performance Microprocessor Division | |
4 | M68060 Software Package | |
5 | Production Release P1.00 -- October 10, 1994 | |
6 | ||
96de0e25 | 7 | M68060 Software Package Copyright © 1993, 1994 Motorola Inc. All rights reserved. |
1da177e4 LT |
8 | |
9 | THE SOFTWARE is provided on an "AS IS" basis and without warranty. | |
10 | To the maximum extent permitted by applicable law, | |
11 | MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, | |
12 | INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE | |
13 | and any warranty against infringement with regard to the SOFTWARE | |
14 | (INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials. | |
15 | ||
16 | To the maximum extent permitted by applicable law, | |
17 | IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER | |
18 | (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, | |
19 | BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) | |
20 | ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE. | |
21 | Motorola assumes no responsibility for the maintenance and support of the SOFTWARE. | |
22 | ||
23 | You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE | |
24 | so long as this entire notice is retained without alteration in any modified and/or | |
25 | redistributed versions, and that such modified versions are clearly identified as such. | |
26 | No licenses are granted by implication, estoppel or otherwise under any patents | |
27 | or trademarks of Motorola, Inc. | |
28 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
29 | 68060 FLOATING-POINT SOFTWARE PACKAGE (Kernel version) | |
30 | ------------------------------------------------------- | |
31 | ||
32 | The file fpsp.sa contains the 68060 Floating-Point Software | |
33 | Package. This package is essentially a set of exception handlers | |
34 | that can be integrated into an operating system. | |
35 | These exception handlers emulate Unimplemented FP instructions, | |
36 | instructions using unimplemented data types, and instructions | |
37 | using unimplemented addressing modes. In addition, this package | |
38 | includes exception handlers to provide full IEEE-754 compliant | |
39 | exception handling. | |
40 | ||
41 | Release file format: | |
42 | -------------------- | |
43 | The file fpsp.sa is essentially a hexadecimal image of the | |
44 | release package. This is the ONLY format which will be supported. | |
45 | The hex image was created by assembling the source code and | |
46 | then converting the resulting binary output image into an | |
47 | ASCII text file. The hexadecimal numbers are listed | |
48 | using the Motorola Assembly Syntax assembler directive "dc.l" | |
49 | (define constant longword). The file can be converted to other | |
50 | assembly syntaxes by using any word processor with a global | |
51 | search and replace function. | |
52 | ||
53 | To assist in assembling and linking this module with other modules, | |
54 | the installer should add a symbolic label to the top of the file. | |
55 | This will allow calling routines to access the entry points | |
56 | of this package. | |
57 | ||
58 | The source code fpsp.s has also been included but only for | |
59 | documentation purposes. | |
60 | ||
61 | Release file structure: | |
62 | ----------------------- | |
63 | ||
64 | (top of module) | |
65 | ----------------- | |
66 | | | - 128 byte-sized section | |
67 | (1) | Call-Out | - 4 bytes per entry (user fills these in) | |
68 | | | - example routines in fskeleton.s | |
69 | ----------------- | |
70 | | | - 8 bytes per entry | |
71 | (2) | Entry Point | - user does "bra" or "jmp" to this address | |
72 | | | | |
73 | ----------------- | |
74 | | | - code section | |
75 | (3) ~ ~ | |
76 | | | | |
77 | ----------------- | |
78 | (bottom of module) | |
79 | ||
80 | The first section of this module is the "Call-out" section. This section | |
81 | is NOT INCLUDED in fpsp.sa (an example "Call-out" section is provided at | |
82 | the end of the file fskeleton.s). The purpose of this section is to allow | |
83 | the FPSP routines to reference external functions that must be provided | |
84 | by the host operating system. This section MUST be exactly 128 bytes in | |
85 | size. There are 32 fields, each 4 bytes in size. Each field corresponds | |
86 | to a function required by the FPSP (these functions and their location are | |
87 | listed in "68060FPSP call-outs" below). Each field entry should contain | |
88 | the address of the corresponding function RELATIVE to the starting address | |
89 | of the "call-out" section. The "Call-out" section must sit adjacent to the | |
90 | fpsp.sa image in memory. | |
91 | ||
92 | The second section, the "Entry-point" section, is used by external routines | |
93 | to access the functions within the FPSP. Since the fpsp.sa hex file contains | |
94 | no symbol names, this section contains function entry points that are fixed | |
95 | with respect to the top of the package. The currently defined entry-points | |
96 | are listed in section "68060 FPSP entry points" below. A calling routine | |
97 | would simply execute a "bra" or "jmp" that jumped to the selected function | |
98 | entry-point. | |
99 | ||
100 | For example, if the 68060 hardware took a "Line-F Emulator" exception | |
101 | (vector #11), the operating system should execute something similar to: | |
102 | ||
103 | bra _060FPSP_TOP+128+48 | |
104 | ||
105 | (_060FPSP_TOP is the starting address of the "Call-out" section; the "Call-out" | |
106 | section is 128 bytes long; and the F-Line FPSP handler entry point is located | |
107 | 48 bytes from the top of the "Entry-point" section.) | |
108 | ||
109 | The third section is the code section. After entering through an "Entry-point", | |
110 | the entry code jumps to the appropriate emulation code within the code section. | |
111 | ||
112 | 68060FPSP call-outs: (details in fskeleton.s) | |
113 | -------------------- | |
114 | 0x000: _060_real_bsun | |
115 | 0x004: _060_real_snan | |
116 | 0x008: _060_real_operr | |
117 | 0x00c: _060_real_ovfl | |
118 | 0x010: _060_real_unfl | |
119 | 0x014: _060_real_dz | |
120 | 0x018: _060_real_inex | |
121 | 0x01c: _060_real_fline | |
122 | 0x020: _060_real_fpu_disabled | |
123 | 0x024: _060_real_trap | |
124 | 0x028: _060_real_trace | |
125 | 0x02c: _060_real_access | |
126 | 0x030: _060_fpsp_done | |
127 | ||
128 | 0x034: (Motorola reserved) | |
129 | 0x038: (Motorola reserved) | |
130 | 0x03c: (Motorola reserved) | |
131 | ||
132 | 0x040: _060_imem_read | |
133 | 0x044: _060_dmem_read | |
134 | 0x048: _060_dmem_write | |
135 | 0x04c: _060_imem_read_word | |
136 | 0x050: _060_imem_read_long | |
137 | 0x054: _060_dmem_read_byte | |
138 | 0x058: _060_dmem_read_word | |
139 | 0x05c: _060_dmem_read_long | |
140 | 0x060: _060_dmem_write_byte | |
141 | 0x064: _060_dmem_write_word | |
142 | 0x068: _060_dmem_write_long | |
143 | ||
144 | 0x06c: (Motorola reserved) | |
145 | 0x070: (Motorola reserved) | |
146 | 0x074: (Motorola reserved) | |
147 | 0x078: (Motorola reserved) | |
148 | 0x07c: (Motorola reserved) | |
149 | ||
150 | 68060FPSP entry points: | |
151 | ----------------------- | |
152 | 0x000: _060_fpsp_snan | |
153 | 0x008: _060_fpsp_operr | |
154 | 0x010: _060_fpsp_ovfl | |
155 | 0x018: _060_fpsp_unfl | |
156 | 0x020: _060_fpsp_dz | |
157 | 0x028: _060_fpsp_inex | |
158 | 0x030: _060_fpsp_fline | |
159 | 0x038: _060_fpsp_unsupp | |
160 | 0x040: _060_fpsp_effadd | |
161 | ||
162 | ||
163 | ||
164 | Miscellaneous: | |
165 | -------------- | |
166 | ||
167 | _060_fpsp_snan: | |
168 | ---------------- | |
169 | - documented in 3.5 of 060SP spec. | |
170 | - Basic flow: | |
171 | exception taken ---> enter _060_fpsp_snan --| | |
172 | | | |
173 | always exits through _060_real_snan <---- | |
174 | ||
175 | _060_fpsp_operr: | |
176 | ---------------- | |
177 | - documented in 3.5 of 060SP spec. | |
178 | - Basic flow: | |
179 | exception taken ---> enter _060_fpsp_operr --| | |
180 | | | |
181 | always exits through _060_real_operr <----- | |
182 | ||
183 | _060_fpsp_dz: | |
184 | ---------------- | |
185 | - documented in 3.7 of 060SP spec. | |
186 | - Basic flow: | |
187 | exception taken ---> enter _060_fpsp_dz --| | |
188 | | | |
189 | always exits through _060_real_dz <---- | |
190 | ||
191 | _060_fpsp_inex: | |
192 | ---------------- | |
193 | - documented in 3.6 of 060SP spec. | |
194 | - Basic flow: | |
195 | exception taken ---> enter _060_fpsp_inex --| | |
196 | | | |
197 | always exits through _060_real_inex <---- | |
198 | ||
199 | ||
200 | _060_fpsp_ovfl: | |
201 | ---------------- | |
202 | - documented in 3.4 of 060SP spec. | |
203 | - Basic flow: | |
204 | exception taken ---> enter _060_fpsp_ovfl --| | |
205 | | | |
206 | may exit through _060_real_inex <---| | |
207 | or | | |
208 | may exit through _060_real_ovfl <---| | |
209 | or | | |
210 | may exit through _060_fpsp_done <---| | |
211 | ||
212 | _060_fpsp_unfl: | |
213 | ---------------- | |
214 | - documented in 3.4 of 060SP spec. | |
215 | - Basic flow: | |
216 | exception taken ---> enter _060_fpsp_unfl --| | |
217 | | | |
218 | may exit through _060_real_inex <---| | |
219 | or | | |
220 | may exit through _060_real_unfl <---| | |
221 | or | | |
222 | may exit through _060_fpsp_done <---| | |
223 | ||
224 | ||
225 | _060_fpsp_fline: | |
226 | ----------------- | |
227 | - not fully documented in 060SP spec. | |
228 | - Basic flow: | |
229 | exception taken ---> enter _060_fpsp_fline --| | |
230 | | | |
231 | ------------------------------------------- | |
232 | | | | | |
233 | v v v | |
234 | (unimplemented (fpu disabled) (possible F-line illegal) | |
235 | stack frame) | v | |
236 | | v special case "fmovecr"? | |
237 | | exit through | | |
238 | | _060_real_fpu_disabled ------------- | |
239 | | | | | |
240 | | ^ v v | |
241 | | | (yes) (no) | |
242 | | | v v | |
243 | | | fpu disabled? exit through | |
244 | | | | _060_real_fline | |
245 | v | ------------- | |
246 | | | | | | |
247 | | | v v | |
248 | | |-----------(yes) (no) | |
249 | | | | |
250 | |----<------------------------------------| | |
251 | | | |
252 | | | |
253 | |----> may exit through _060_real_trace | |
254 | | | |
255 | |----> may exit through _060_real_trap | |
256 | | | |
257 | |----> may exit through _060_real_bsun | |
258 | | | |
259 | |----> may exit through _060_fpsp_done | |
260 | ||
261 | ||
262 | _060_fpsp_unsupp: | |
263 | ------------------ | |
264 | - documented in 3.1 of 060SP spec. | |
265 | - Basic flow: | |
266 | exception taken ---> enter _060_fpsp_unsupp --| | |
267 | | | |
268 | | | |
269 | may exit through _060_real_snan <----| | |
270 | or | | |
271 | may exit through _060_real_operr <----| | |
272 | or | | |
273 | may exit through _060_real_ovfl <----| | |
274 | or | | |
275 | may exit through _060_real_unfl <----| | |
276 | or | | |
277 | may exit through _060_real_inex <----| | |
278 | or | | |
279 | may exit through _060_real_trace <----| | |
280 | or | | |
281 | may exit through _060_fpsp_done <----| | |
282 | ||
283 | ||
284 | _060_fpsp_effadd: | |
285 | ------------------ | |
286 | - documented in 3.3 of 060 spec. | |
287 | - Basic flow: | |
288 | exception taken ---> enter _060_fpsp_effadd --| | |
289 | | | |
290 | | | |
291 | may exit through _060_real_trace <----| | |
292 | or | | |
293 | may exit through _060_real_fpu_disabled <----| | |
294 | or | | |
295 | may exit through _060_fpsp_done <----| |