fpsp.doc (10387B)
1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP 3M68000 Hi-Performance Microprocessor Division 4M68060 Software Package 5Production Release P1.00 -- October 10, 1994 6 7M68060 Software Package Copyright © 1993, 1994 Motorola Inc. All rights reserved. 8 9THE SOFTWARE is provided on an "AS IS" basis and without warranty. 10To the maximum extent permitted by applicable law, 11MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, 12INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE 13and any warranty against infringement with regard to the SOFTWARE 14(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials. 15 16To the maximum extent permitted by applicable law, 17IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER 18(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, 19BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) 20ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE. 21Motorola assumes no responsibility for the maintenance and support of the SOFTWARE. 22 23You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE 24so long as this entire notice is retained without alteration in any modified and/or 25redistributed versions, and that such modified versions are clearly identified as such. 26No licenses are granted by implication, estoppel or otherwise under any patents 27or trademarks of Motorola, Inc. 28~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2968060 FLOATING-POINT SOFTWARE PACKAGE (Kernel version) 30------------------------------------------------------- 31 32The file fpsp.sa contains the 68060 Floating-Point Software 33Package. This package is essentially a set of exception handlers 34that can be integrated into an operating system. 35These exception handlers emulate Unimplemented FP instructions, 36instructions using unimplemented data types, and instructions 37using unimplemented addressing modes. In addition, this package 38includes exception handlers to provide full IEEE-754 compliant 39exception handling. 40 41Release file format: 42-------------------- 43The file fpsp.sa is essentially a hexadecimal image of the 44release package. This is the ONLY format which will be supported. 45The hex image was created by assembling the source code and 46then converting the resulting binary output image into an 47ASCII text file. The hexadecimal numbers are listed 48using the Motorola Assembly Syntax assembler directive "dc.l" 49(define constant longword). The file can be converted to other 50assembly syntaxes by using any word processor with a global 51search and replace function. 52 53To assist in assembling and linking this module with other modules, 54the installer should add a symbolic label to the top of the file. 55This will allow calling routines to access the entry points 56of this package. 57 58The source code fpsp.s has also been included but only for 59documentation purposes. 60 61Release 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 80The first section of this module is the "Call-out" section. This section 81is NOT INCLUDED in fpsp.sa (an example "Call-out" section is provided at 82the end of the file fskeleton.s). The purpose of this section is to allow 83the FPSP routines to reference external functions that must be provided 84by the host operating system. This section MUST be exactly 128 bytes in 85size. There are 32 fields, each 4 bytes in size. Each field corresponds 86to a function required by the FPSP (these functions and their location are 87listed in "68060FPSP call-outs" below). Each field entry should contain 88the address of the corresponding function RELATIVE to the starting address 89of the "call-out" section. The "Call-out" section must sit adjacent to the 90fpsp.sa image in memory. 91 92The second section, the "Entry-point" section, is used by external routines 93to access the functions within the FPSP. Since the fpsp.sa hex file contains 94no symbol names, this section contains function entry points that are fixed 95with respect to the top of the package. The currently defined entry-points 96are listed in section "68060 FPSP entry points" below. A calling routine 97would simply execute a "bra" or "jmp" that jumped to the selected function 98entry-point. 99 100For 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" 106section is 128 bytes long; and the F-Line FPSP handler entry point is located 10748 bytes from the top of the "Entry-point" section.) 108 109The third section is the code section. After entering through an "Entry-point", 110the entry code jumps to the appropriate emulation code within the code section. 111 11268060FPSP call-outs: (details in fskeleton.s) 113-------------------- 1140x000: _060_real_bsun 1150x004: _060_real_snan 1160x008: _060_real_operr 1170x00c: _060_real_ovfl 1180x010: _060_real_unfl 1190x014: _060_real_dz 1200x018: _060_real_inex 1210x01c: _060_real_fline 1220x020: _060_real_fpu_disabled 1230x024: _060_real_trap 1240x028: _060_real_trace 1250x02c: _060_real_access 1260x030: _060_fpsp_done 127 1280x034: (Motorola reserved) 1290x038: (Motorola reserved) 1300x03c: (Motorola reserved) 131 1320x040: _060_imem_read 1330x044: _060_dmem_read 1340x048: _060_dmem_write 1350x04c: _060_imem_read_word 1360x050: _060_imem_read_long 1370x054: _060_dmem_read_byte 1380x058: _060_dmem_read_word 1390x05c: _060_dmem_read_long 1400x060: _060_dmem_write_byte 1410x064: _060_dmem_write_word 1420x068: _060_dmem_write_long 143 1440x06c: (Motorola reserved) 1450x070: (Motorola reserved) 1460x074: (Motorola reserved) 1470x078: (Motorola reserved) 1480x07c: (Motorola reserved) 149 15068060FPSP entry points: 151----------------------- 1520x000: _060_fpsp_snan 1530x008: _060_fpsp_operr 1540x010: _060_fpsp_ovfl 1550x018: _060_fpsp_unfl 1560x020: _060_fpsp_dz 1570x028: _060_fpsp_inex 1580x030: _060_fpsp_fline 1590x038: _060_fpsp_unsupp 1600x040: _060_fpsp_effadd 161 162 163 164Miscellaneous: 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 <----|