1*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2*4882a593SmuzhiyunMOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP 3*4882a593SmuzhiyunM68000 Hi-Performance Microprocessor Division 4*4882a593SmuzhiyunM68060 Software Package 5*4882a593SmuzhiyunProduction Release P1.00 -- October 10, 1994 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunM68060 Software Package Copyright © 1993, 1994 Motorola Inc. All rights reserved. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunTHE SOFTWARE is provided on an "AS IS" basis and without warranty. 10*4882a593SmuzhiyunTo the maximum extent permitted by applicable law, 11*4882a593SmuzhiyunMOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, 12*4882a593SmuzhiyunINCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE 13*4882a593Smuzhiyunand any warranty against infringement with regard to the SOFTWARE 14*4882a593Smuzhiyun(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials. 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunTo the maximum extent permitted by applicable law, 17*4882a593SmuzhiyunIN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER 18*4882a593Smuzhiyun(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, 19*4882a593SmuzhiyunBUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) 20*4882a593SmuzhiyunARISING OF THE USE OR INABILITY TO USE THE SOFTWARE. 21*4882a593SmuzhiyunMotorola assumes no responsibility for the maintenance and support of the SOFTWARE. 22*4882a593Smuzhiyun 23*4882a593SmuzhiyunYou are hereby granted a copyright license to use, modify, and distribute the SOFTWARE 24*4882a593Smuzhiyunso long as this entire notice is retained without alteration in any modified and/or 25*4882a593Smuzhiyunredistributed versions, and that such modified versions are clearly identified as such. 26*4882a593SmuzhiyunNo licenses are granted by implication, estoppel or otherwise under any patents 27*4882a593Smuzhiyunor trademarks of Motorola, Inc. 28*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 29*4882a593Smuzhiyun 30*4882a593SmuzhiyunCHANGES SINCE LAST RELEASE: 31*4882a593Smuzhiyun--------------------------- 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun1) "movep" emulation where data was being read from memory 34*4882a593Smuzhiyunwas reading the intermediate bytes. Emulation now only 35*4882a593Smuzhiyunreads the required bytes. 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun2) "flogn", "flog2", and "flog10" of "1" was setting the 38*4882a593SmuzhiyunInexact FPSR bit. Emulation now does not set Inexact for 39*4882a593Smuzhiyunthis case. 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun3) For an opclass three FP instruction where the effective addressing 42*4882a593Smuzhiyunmode was pre-decrement or post-increment and the address register 43*4882a593Smuzhiyunwas A0 or A1, the address register was not being updated as a result 44*4882a593Smuzhiyunof the operation. This has been corrected. 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun4) Beta B.2 version had the following erratum: 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun Scenario: 49*4882a593Smuzhiyun --------- 50*4882a593Smuzhiyun If {i,d}mem_{read,write}_{byte,word,long}() returns 51*4882a593Smuzhiyun a failing value to the 68060SP, the package ignores 52*4882a593Smuzhiyun this return value and continues with program execution 53*4882a593Smuzhiyun as if it never received a failing value. 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun Effect: 56*4882a593Smuzhiyun ------- 57*4882a593Smuzhiyun For example, if a user executed "fsin.x ADDR,fp0" where 58*4882a593Smuzhiyun ADDR should cause a "segmentation violation", the memory read 59*4882a593Smuzhiyun requested by the package should return a failing value 60*4882a593Smuzhiyun to the package. Since the package currently ignores this 61*4882a593Smuzhiyun return value, the user program will continue to the 62*4882a593Smuzhiyun next instruction, and the result created in fp0 will be 63*4882a593Smuzhiyun undefined. 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun Fix: 66*4882a593Smuzhiyun ---- 67*4882a593Smuzhiyun This has been fixed in the current release. 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun Notes: 70*4882a593Smuzhiyun ------ 71*4882a593Smuzhiyun Upon receiving a non-zero (failing) return value from 72*4882a593Smuzhiyun a {i,d}mem_{read,write}_{byte,word,long}() "call-out", 73*4882a593Smuzhiyun the package creates a 16-byte access error stack frame 74*4882a593Smuzhiyun from the current exception stack frame and exits 75*4882a593Smuzhiyun through the "call-out" _real_access(). This is the process 76*4882a593Smuzhiyun as described in the MC68060 User's Manual. 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun For instruction read access errors, the info stacked is: 79*4882a593Smuzhiyun SR = SR at time of exception 80*4882a593Smuzhiyun PC = PC of instruction being emulated 81*4882a593Smuzhiyun VOFF = $4008 (stack frame format type) 82*4882a593Smuzhiyun ADDRESS = PC of instruction being emulated 83*4882a593Smuzhiyun FSLW = FAULT STATUS LONGWORD 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun The valid FSLW bits are: 86*4882a593Smuzhiyun bit 27 = 1 (misaligned bit) 87*4882a593Smuzhiyun bit 24 = 1 (read) 88*4882a593Smuzhiyun bit 23 = 0 (write) 89*4882a593Smuzhiyun bit 22:21 = 10 (SIZE = word) 90*4882a593Smuzhiyun bit 20:19 = 00 (TT) 91*4882a593Smuzhiyun bit 18:16 = x10 (TM; x = 1 for supervisor mode) 92*4882a593Smuzhiyun bit 15 = 1 (IO) 93*4882a593Smuzhiyun bit 0 = 1 (Software Emulation Error) 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun all other bits are EQUAL TO ZERO and can be set by the _real_access() 96*4882a593Smuzhiyun "call-out" stub by the user as appropriate. The MC68060 User's Manual 97*4882a593Smuzhiyun stated that ONLY "bit 0" would be set. The 060SP attempts to set a few 98*4882a593Smuzhiyun other bits. 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun For data read/write access errors, the info stacked is: 101*4882a593Smuzhiyun SR = SR at time of exception 102*4882a593Smuzhiyun PC = PC of instruction being emulated 103*4882a593Smuzhiyun VOFF = $4008 (stack frame format type) 104*4882a593Smuzhiyun ADDRESS = Address of source or destination operand 105*4882a593Smuzhiyun FSLW = FAULT STATUS LONGWORD 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun The valid FSLW bits are: 108*4882a593Smuzhiyun bit 27 = 0 (misaligned bit) 109*4882a593Smuzhiyun bit 24 = x (read; 1 if read, 0 if write) 110*4882a593Smuzhiyun bit 23 = x (write; 1 if write, 0 if read) 111*4882a593Smuzhiyun bit 22:21 = xx (SIZE; see MC68060 User's Manual) 112*4882a593Smuzhiyun bit 20:19 = 00 (TT) 113*4882a593Smuzhiyun bit 18:16 = x01 (TM; x = 1 for supervisor mode) 114*4882a593Smuzhiyun bit 15 = 0 (IO) 115*4882a593Smuzhiyun bit 0 = 1 (Software Emulation Error) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun all other bits are EQUAL TO ZERO and can be set by the _real_access() 118*4882a593Smuzhiyun "call-out" stub by the user as appropriate. The MC68060 User's Manual 119*4882a593Smuzhiyun stated that ONLY "bit 0" would be set. The 060SP attempts to set a few 120*4882a593Smuzhiyun other bits. 121