|  | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|  | MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP | 
|  | M68000 Hi-Performance Microprocessor Division | 
|  | M68060 Software Package | 
|  | Production Release P1.00 -- October 10, 1994 | 
|  |  | 
|  | M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved. | 
|  |  | 
|  | THE SOFTWARE is provided on an "AS IS" basis and without warranty. | 
|  | To the maximum extent permitted by applicable law, | 
|  | MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, | 
|  | INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE | 
|  | and any warranty against infringement with regard to the SOFTWARE | 
|  | (INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials. | 
|  |  | 
|  | To the maximum extent permitted by applicable law, | 
|  | IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER | 
|  | (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, | 
|  | BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) | 
|  | ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE. | 
|  | Motorola assumes no responsibility for the maintenance and support of the SOFTWARE. | 
|  |  | 
|  | You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE | 
|  | so long as this entire notice is retained without alteration in any modified and/or | 
|  | redistributed versions, and that such modified versions are clearly identified as such. | 
|  | No licenses are granted by implication, estoppel or otherwise under any patents | 
|  | or trademarks of Motorola, Inc. | 
|  | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|  | 68060 SOFTWARE PACKAGE (Kernel version) SIMPLE TESTS | 
|  | ----------------------------------------------------- | 
|  |  | 
|  | The files itest.sa and ftest.sa contain simple tests to check | 
|  | the state of the 68060ISP and 68060FPSP once they have been installed. | 
|  |  | 
|  | Release file format: | 
|  | -------------------- | 
|  | The release files itest.sa and ftest.sa are essentially | 
|  | hexadecimal images of the actual tests. This format is the | 
|  | ONLY format that will be supported. The hex images were created | 
|  | by assembling the source code and then converting the resulting | 
|  | binary output images into ASCII text files. The hexadecimal | 
|  | numbers are listed using the Motorola Assembly syntax assembler | 
|  | directive "dc.l" (define constant longword). The files can be | 
|  | converted to other assembly syntaxes by using any word processor | 
|  | with a global search and replace function. | 
|  |  | 
|  | To assist in assembling and linking these modules with other modules, | 
|  | the installer should add symbolic labels to the top of the files. | 
|  | This will allow the calling routines to access the entry points | 
|  | of these packages. | 
|  |  | 
|  | The source code itest.s and ftest.s have been included but only | 
|  | for documentation purposes. | 
|  |  | 
|  | Release file structure: | 
|  | ----------------------- | 
|  |  | 
|  | (top of module) | 
|  | ----------------- | 
|  | |		| - 128 byte-sized section | 
|  | (1)  |   Call-Out	| - 4 bytes per entry (user fills these in) | 
|  | |		| | 
|  | ----------------- | 
|  | |		| - 8 bytes per entry | 
|  | (2)  | Entry Point	| - user does "bsr" or "jsr" to this address | 
|  | |		| | 
|  | ----------------- | 
|  | |		| - code section | 
|  | (3)  ~		~ | 
|  | |		| | 
|  | ----------------- | 
|  | (bottom of module) | 
|  |  | 
|  | The first section of this module is the "Call-out" section. This section | 
|  | is NOT INCLUDED in {i,f}test.sa (an example "Call-out" section is provided at | 
|  | the end of this file). The purpose of this section is to allow the test | 
|  | routines to reference external printing functions that must be provided | 
|  | by the host operating system. This section MUST be exactly 128 bytes in | 
|  | size. There are 32 fields, each 4 bytes in size. Each field corresponds | 
|  | to a function required by the test packages (these functions and their | 
|  | location are listed in "68060{ISP,FPSP}-TEST call-outs" below). Each field | 
|  | entry should contain the address of the corresponding function RELATIVE to | 
|  | the starting address of the "call-out" section. The "Call-out" section must | 
|  | sit adjacent to the {i,f}test.sa image in memory. Since itest.sa and ftest.sa | 
|  | are individual tests, they each require their own "Call-out" sections. | 
|  |  | 
|  | The second section, the "Entry-point" section, is used by external routines | 
|  | to access the test routines. Since the {i,f}test.sa hex files contain | 
|  | no symbol names, this section contains function entry points that are fixed | 
|  | with respect to the top of the package. The currently defined entry-points | 
|  | are listed in section "68060{ISP,FPSP}-TEST entry points" below. A calling | 
|  | routine would simply execute a "bsr" or "jsr" that jumped to the selected | 
|  | function entry-point. | 
|  |  | 
|  | For example, to run the 060ISP test, write a program that includes the | 
|  | itest.sa data and execute something similar to: | 
|  |  | 
|  | bsr	_060ISP_TEST+128+0 | 
|  |  | 
|  | (_060ISP_TEST is the starting address of the "Call-out" section; the "Call-out" | 
|  | section is 128 bytes long; and the 68060ISP test entry point is located | 
|  | 0 bytes from the top of the "Entry-point" section.) | 
|  |  | 
|  | The third section is the code section. After entering through an "Entry-point", | 
|  | the entry code jumps to the appropriate test code within the code section. | 
|  |  | 
|  | 68060ISP-TEST Call-outs: | 
|  | ------------------------ | 
|  | 0x0: _print_string() | 
|  | 0x4: _print_number() | 
|  |  | 
|  | 68060FPSP-TEST Call-outs: | 
|  | ------------------------- | 
|  | 0x0: _print_string() | 
|  | 0x4: _print_number() | 
|  |  | 
|  | The test packages call _print_string() and _print_number() | 
|  | as subroutines and expect the main program to print a string | 
|  | or a number to a file or to the screen. | 
|  | In "C"-like fashion, the test program calls: | 
|  |  | 
|  | print_string("Test passed"); | 
|  |  | 
|  | or | 
|  |  | 
|  | print_number(20); | 
|  |  | 
|  | For _print_string(), the test programs pass a longword address | 
|  | of the string on the stack. For _print_number(), the test programs pass | 
|  | a longword number to be printed. | 
|  |  | 
|  | For debugging purposes, after the main program performs a "print" | 
|  | for a test package, it should flush the output so that it's not | 
|  | buffered. In this way, if the test program crashes, at least the previous | 
|  | statements printed will be seen. | 
|  |  | 
|  | 68060ISP-TEST Entry-points: | 
|  | --------------------------- | 
|  | 0x0: integer test | 
|  |  | 
|  | 68060FPSP-TEST Entry-points: | 
|  | ---------------------------- | 
|  | 0x00: main fp test | 
|  | 0x08: FP unimplemented test | 
|  | 0x10: FP enabled snan/operr/ovfl/unfl/dz/inex | 
|  |  | 
|  | The floating-point unit test has 3 entry points which will require | 
|  | 3 different calls to the package if each of the three following tests | 
|  | is desired: | 
|  |  | 
|  | main fp test: tests (1) unimp effective address exception | 
|  | (2) unsupported data type exceptions | 
|  | (3) non-maskable overflow/underflow exceptions | 
|  |  | 
|  | FP unimplemented: tests FP unimplemented exception. this one is | 
|  | separate from the previous tests for systems that don't | 
|  | want FP unimplemented instructions. | 
|  |  | 
|  | FP enabled: tests enabled snan/operr/ovfl/unfl/dz/inex. | 
|  | basically, it enables each of these exceptions and forces | 
|  | each using an implemented FP instruction. this process | 
|  | exercises _fpsp_{snan,operr,ovfl,unfl,dz,inex}() and | 
|  | _real_{snan,operr,ovfl,unfl,dz,inex}(). the test expects | 
|  | _real_XXXX() to do nothing except clear the exception | 
|  | and "rte". if a system's _real_XXXX() handler creates an | 
|  | alternate result, the test will print "failed" but this | 
|  | is acceptable. | 
|  |  | 
|  | Miscellaneous: | 
|  | -------------- | 
|  | Again, itest.sa and ftest.sa are simple tests and do not thoroughly | 
|  | test all 68060SP connections. For example, they do not test connections | 
|  | to _real_access(), _real_trace(), _real_trap(), etc. because these | 
|  | will be system-implemented several different ways and the test packages | 
|  | must remain system independent. | 
|  |  | 
|  | Example test package set-up: | 
|  | ---------------------------- | 
|  | _print_str: | 
|  | .			# provided by system | 
|  | rts | 
|  |  | 
|  | _print_num: | 
|  | .			# provided by system | 
|  | rts | 
|  |  | 
|  | . | 
|  | . | 
|  | bsr	_060FPSP_TEST+128+0 | 
|  | . | 
|  | . | 
|  | rts | 
|  |  | 
|  | # beginning of "Call-out" section; provided by integrator. | 
|  | # MUST be 128 bytes long. | 
|  | _060FPSP_TEST: | 
|  | long	_print_str - _060FPSP_TEST | 
|  | long	_print_num - _060FPSP_TEST | 
|  | space	120 | 
|  |  | 
|  | # ftest.sa starts here; start of "Entry-point" section. | 
|  | long	0x60ff0000, 0x00002346 | 
|  | long	0x60ff0000, 0x00018766 | 
|  | long	0x60ff0000, 0x00023338 | 
|  | long	0x24377299, 0xab2643ea | 
|  | . | 
|  | . | 
|  | . |