~ [ 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 m68k) and /arch/i386/ifpsp060/ilsp.doc (Architecture i386)


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