~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/m68k/ifpsp060/ilsp.doc

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/m68k/ifpsp060/ilsp.doc (Architecture mips) and /arch/m68k/ifpsp060/ilsp.doc (Architecture m68k)


  1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2 MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GR      2 MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
  3 M68000 Hi-Performance Microprocessor Division       3 M68000 Hi-Performance Microprocessor Division
  4 M68060 Software Package                             4 M68060 Software Package
  5 Production Release P1.00 -- October 10, 1994        5 Production Release P1.00 -- October 10, 1994
  6                                                     6 
  7 M68060 Software Package Copyright © 1993, 199      7 M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved.
  8                                                     8 
  9 THE SOFTWARE is provided on an "AS IS" basis a      9 THE SOFTWARE is provided on an "AS IS" basis and without warranty.
 10 To the maximum extent permitted by applicable      10 To the maximum extent permitted by applicable law,
 11 MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPR     11 MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
 12 INCLUDING IMPLIED WARRANTIES OF MERCHANTABILIT     12 INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
 13 and any warranty against infringement with reg     13 and any warranty against infringement with regard to the SOFTWARE
 14 (INCLUDING ANY MODIFIED VERSIONS THEREOF) and      14 (INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials.
 15                                                    15 
 16 To the maximum extent permitted by applicable      16 To the maximum extent permitted by applicable law,
 17 IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY D     17 IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
 18 (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOS     18 (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
 19 BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORM     19 BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
 20 ARISING OF THE USE OR INABILITY TO USE THE SOF     20 ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
 21 Motorola assumes no responsibility for the mai     21 Motorola assumes no responsibility for the maintenance and support of the SOFTWARE.
 22                                                    22 
 23 You are hereby granted a copyright license to      23 You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE
 24 so long as this entire notice is retained with     24 so long as this entire notice is retained without alteration in any modified and/or
 25 redistributed versions, and that such modified     25 redistributed versions, and that such modified versions are clearly identified as such.
 26 No licenses are granted by implication, estopp     26 No licenses are granted by implication, estoppel or otherwise under any patents
 27 or trademarks of Motorola, Inc.                    27 or trademarks of Motorola, Inc.
 28 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     28 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 29 68060 INTEGER SOFTWARE PACKAGE (Library versio     29 68060 INTEGER SOFTWARE PACKAGE (Library version)
 30 ----------------------------------------------     30 -------------------------------------------------
 31                                                    31 
 32 The file ilsp.s contains the "Library version"     32 The file ilsp.s contains the "Library version" of the
 33 68060 Integer Software Package. Routines inclu     33 68060 Integer Software Package. Routines included in this
 34 module can be used to emulate 64-bit divide an     34 module can be used to emulate 64-bit divide and multiply,
 35 and the "cmp2" instruction. These instructions     35 and the "cmp2" instruction. These instructions are not
 36 implemented in hardware on the 68060 and norma     36 implemented in hardware on the 68060 and normally take
 37 exception vector #61 "Unimplemented Integer In     37 exception vector #61 "Unimplemented Integer Instruction".
 38                                                    38 
 39 By re-compiling a program that uses these inst     39 By re-compiling a program that uses these instructions, and
 40 making subroutine calls in place of the unimpl     40 making subroutine calls in place of the unimplemented
 41 instructions, a program can avoid the overhead     41 instructions, a program can avoid the overhead associated with
 42 taking the exception.                              42 taking the exception.
 43                                                    43 
 44 Release file format:                               44 Release file format:
 45 --------------------                               45 --------------------
 46 The file ilsp.sa is essentially a hexadecimal      46 The file ilsp.sa is essentially a hexadecimal image of the
 47 release package. This is the ONLY format which     47 release package. This is the ONLY format which will be supported.
 48 The hex image was created by assembling the so     48 The hex image was created by assembling the source code and
 49 then converting the resulting binary output im     49 then converting the resulting binary output image into an
 50 ASCII text file. The hexadecimal numbers are l     50 ASCII text file. The hexadecimal numbers are listed
 51 using the Motorola Assembly Syntax assembler d     51 using the Motorola Assembly Syntax assembler directive "dc.l"
 52 (define constant longword). The file can be co     52 (define constant longword). The file can be converted to other
 53 assembly syntaxes by using any word processor      53 assembly syntaxes by using any word processor with a global
 54 search and replace function.                       54 search and replace function.
 55                                                    55 
 56 To assist in assembling and linking this modul     56 To assist in assembling and linking this module with other modules,
 57 the installer should add a symbolic label to t     57 the installer should add a symbolic label to the top of the file.
 58 This will allow calling routines to access the     58 This will allow calling routines to access the entry points
 59 of this package.                                   59 of this package.
 60                                                    60 
 61 The source code ilsp.s has also been included      61 The source code ilsp.s has also been included but only for
 62 documentation purposes.                            62 documentation purposes.
 63                                                    63 
 64 Release file structure:                            64 Release file structure:
 65 -----------------------                            65 -----------------------
 66 The file ilsp.sa contains an "Entry-Point" sec     66 The file ilsp.sa contains an "Entry-Point" section and a
 67 code section. The ILSP has no "Call-Out" secti     67 code section. The ILSP has no "Call-Out" section. The first section
 68 is the "Entry-Point" section. In order to acce     68 is the "Entry-Point" section. In order to access a function in the
 69 package, a program must "bsr" or "jsr" to the      69 package, a program must "bsr" or "jsr" to the location listed
 70 below in "68060ILSP Entry Points" that corresp     70 below in "68060ILSP Entry Points" that corresponds to the desired
 71 function. A branch instruction located at the      71 function. A branch instruction located at the selected entry point
 72 within the package will then enter the correct     72 within the package will then enter the correct emulation code routine.
 73                                                    73 
 74 The entry point addresses at the beginning of      74 The entry point addresses at the beginning of the package will remain
 75 fixed so that a program calling the routines w     75 fixed so that a program calling the routines will not have to be
 76 re-compiled with every new 68060ILSP release.      76 re-compiled with every new 68060ILSP release.
 77                                                    77 
 78 For example, to use a 64-bit multiply instruct     78 For example, to use a 64-bit multiply instruction,
 79 do a "bsr" or "jsr" to the entry point defined     79 do a "bsr" or "jsr" to the entry point defined by
 80 the 060ILSP entry table. A compiler generated      80 the 060ILSP entry table. A compiler generated code sequence
 81 for unsigned multiply could look like:             81 for unsigned multiply could look like:
 82                                                    82 
 83 # mulu.l <ea>,Dh:Dl                                83 # mulu.l <ea>,Dh:Dl
 84 # mulu.l _multiplier,%d1:%d0                       84 # mulu.l _multiplier,%d1:%d0
 85                                                    85 
 86         subq.l  &0x8,%sp        # make room fo     86         subq.l  &0x8,%sp        # make room for result on stack
 87         pea     (%sp)           # pass: result     87         pea     (%sp)           # pass: result addr on stack
 88         mov.l   %d0,-(%sp)      # pass: multip     88         mov.l   %d0,-(%sp)      # pass: multiplicand on stack
 89         mov.l   _multiplier,-(%sp) # pass: mul     89         mov.l   _multiplier,-(%sp) # pass: multiplier on stack
 90         bsr.l   _060LISP_TOP+0x18 # branch to      90         bsr.l   _060LISP_TOP+0x18 # branch to multiply routine
 91         add.l   &0xc,%sp        # clear argume     91         add.l   &0xc,%sp        # clear arguments from stack
 92         mov.l   (%sp)+,%d1      # load result[     92         mov.l   (%sp)+,%d1      # load result[63:32]
 93         mov.l   (%sp)+,%d0      # load result[     93         mov.l   (%sp)+,%d0      # load result[31:0]
 94                                                    94 
 95 For a divide:                                      95 For a divide:
 96                                                    96 
 97 # divu.l <ea>,Dr:Dq                                97 # divu.l <ea>,Dr:Dq
 98 # divu.l _divisor,%d1:%d0                          98 # divu.l _divisor,%d1:%d0
 99                                                    99 
100         subq.l  &0x8,%sp        # make room fo    100         subq.l  &0x8,%sp        # make room for result on stack
101         pea     (%sp)           # pass: result    101         pea     (%sp)           # pass: result addr on stack
102         mov.l   %d0,-(%sp)      # pass: divide    102         mov.l   %d0,-(%sp)      # pass: dividend hi on stack
103         mov.l   %d1,-(%sp)      # pass: divide    103         mov.l   %d1,-(%sp)      # pass: dividend hi on stack
104         mov.l   _divisor,-(%sp) # pass: diviso    104         mov.l   _divisor,-(%sp) # pass: divisor on stack
105         bsr.l   _060LISP_TOP+0x08 # branch to     105         bsr.l   _060LISP_TOP+0x08 # branch to divide routine
106         add.l   &0xc,%sp        # clear argume    106         add.l   &0xc,%sp        # clear arguments from stack
107         mov.l   (%sp)+,%d1      # load remaind    107         mov.l   (%sp)+,%d1      # load remainder
108         mov.l   (%sp)+,%d0      # load quotien    108         mov.l   (%sp)+,%d0      # load quotient
109                                                   109 
110 The library routines also return the correct c    110 The library routines also return the correct condition code
111 register value. If this is important, then the    111 register value. If this is important, then the caller of the library
112 routine must make sure that the value isn't lo    112 routine must make sure that the value isn't lost while popping
113 other items off of the stack.                     113 other items off of the stack.
114                                                   114 
115 An example of using the "cmp2" instruction is     115 An example of using the "cmp2" instruction is as follows:
116                                                   116 
117 # cmp2.l <ea>,Rn                                  117 # cmp2.l <ea>,Rn
118 # cmp2.l _bounds,%d0                              118 # cmp2.l _bounds,%d0
119                                                   119 
120         pea     _bounds         # pass ptr to     120         pea     _bounds         # pass ptr to bounds
121         mov.l   %d0,-(%sp)      # pass Rn         121         mov.l   %d0,-(%sp)      # pass Rn
122         bsr.l   _060LSP_TOP_+0x48 # branch to     122         bsr.l   _060LSP_TOP_+0x48 # branch to "cmp2" routine
123         mov.w   %cc,_tmp        # save off con    123         mov.w   %cc,_tmp        # save off condition codes
124         addq.l  &0x8,%sp        # clear argume    124         addq.l  &0x8,%sp        # clear arguments from stack
125                                                   125 
126 Exception reporting:                              126 Exception reporting:
127 --------------------                              127 --------------------
128 If the instruction being emulated is a divide     128 If the instruction being emulated is a divide and the source
129 operand is a zero, then the library routine, a    129 operand is a zero, then the library routine, as its last
130 instruction, executes an implemented divide us    130 instruction, executes an implemented divide using a zero
131 source operand so that an "Integer Divide-by-Z    131 source operand so that an "Integer Divide-by-Zero" exception
132 will be taken. Although the exception stack fr    132 will be taken. Although the exception stack frame will not
133 point to the correct instruction, the user wil    133 point to the correct instruction, the user will at least be able
134 to record that such an event occurred if desir    134 to record that such an event occurred if desired.
135                                                   135 
136 68060ILSP entry points:                           136 68060ILSP entry points:
137 -----------------------                           137 -----------------------
138 _060ILSP_TOP:                                     138 _060ILSP_TOP:
139 0x000:  _060LSP__idivs64_                         139 0x000:  _060LSP__idivs64_
140 0x008:  _060LSP__idivu64_                         140 0x008:  _060LSP__idivu64_
141                                                   141 
142 0x010:  _060LSP__imuls64_                         142 0x010:  _060LSP__imuls64_
143 0x018:  _060LSP__imulu64_                         143 0x018:  _060LSP__imulu64_
144                                                   144 
145 0x020:  _060LSP__cmp2_Ab_                         145 0x020:  _060LSP__cmp2_Ab_
146 0x028:  _060LSP__cmp2_Aw_                         146 0x028:  _060LSP__cmp2_Aw_
147 0x030:  _060LSP__cmp2_Al_                         147 0x030:  _060LSP__cmp2_Al_
148 0x038:  _060LSP__cmp2_Db_                         148 0x038:  _060LSP__cmp2_Db_
149 0x040:  _060LSP__cmp2_Dw_                         149 0x040:  _060LSP__cmp2_Dw_
150 0x048:  _060LSP__cmp2_Dl_                         150 0x048:  _060LSP__cmp2_Dl_
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php