Back to index

cell-binutils  2.17cvs20070401
tc-m68851.h
Go to the documentation of this file.
00001 /* This file is tc-m68851.h
00002 
00003    Copyright 1987, 1988, 1989, 1990, 1991, 1992, 2000
00004    Free Software Foundation, Inc.
00005 
00006    This file is part of GAS, the GNU Assembler.
00007 
00008    GAS is free software; you can redistribute it and/or modify
00009    it under the terms of the GNU General Public License as published by
00010    the Free Software Foundation; either version 2, or (at your option)
00011    any later version.
00012 
00013    GAS is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with GAS; see the file COPYING.  If not, write to the Free
00020    Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
00021    02110-1301, USA.  */
00022 
00023 /*
00024  * pmmu.h
00025  */
00026 
00027 /* I suppose we have to copyright this file.  Someone on the net sent it
00028    to us as part of the changes for the m68851 Memory Management Unit */
00029 
00030 /* Copyright (C) 1987 Free Software Foundation, Inc.
00031 
00032    This file is part of Gas, the GNU Assembler.
00033 
00034    The GNU assembler is distributed in the hope that it will be
00035    useful, but WITHOUT ANY WARRANTY.  No author or distributor
00036    accepts responsibility to anyone for the consequences of using it
00037    or for whether it serves any particular purpose or works at all,
00038    unless he says so in writing.  Refer to the GNU Assembler General
00039    Public License for full details.
00040 
00041    Everyone is granted permission to copy, modify and redistribute
00042    the GNU Assembler, but only under the conditions described in the
00043    GNU Assembler General Public License.  A copy of this license is
00044    supposed to have been given to you along with the GNU Assembler
00045    so you can know your rights and responsibilities.  It should be
00046    in a file named COPYING.  Among other things, the copyright
00047    notice and this notice must be preserved on all copies.  */
00048 
00049 #ifdef m68851
00050 
00051 /*
00052   I didn't use much imagination in choosing the
00053   following codes, so many of them aren't very
00054   mnemonic. -rab
00055 
00056   P  pmmu register
00057   Possible values:
00058   000  TC     Translation Control reg
00059   100  CAL    Current Access Level
00060   101  VAL    Validate Access Level
00061   110  SCC    Stack Change Control
00062   111  AC     Access Control
00063 
00064   W  wide pmmu registers
00065   Possible values:
00066   001  DRP    Dma Root Pointer
00067   010  SRP    Supervisor Root Pointer
00068   011  CRP    Cpu Root Pointer
00069 
00070   f    function code register
00071   0    SFC
00072   1    DFC
00073 
00074   V    VAL register only
00075 
00076   X    BADx, BACx
00077   100  BAD    Breakpoint Acknowledge Data
00078   101  BAC    Breakpoint Acknowledge Control
00079 
00080   Y    PSR
00081   Z    PCSR
00082 
00083   |    memory               (modes 2-6, 7.*)
00084 
00085   */
00086 
00087 /*
00088  * these defines should be in m68k.c but
00089  * i put them here to keep all the m68851 stuff
00090  * together -rab
00091  * JF--Make sure these #s don't clash with the ones in m68k.c
00092  * That would be BAD.
00093  */
00094 #define TC    (FPS+1)              /* 48 */
00095 #define DRP   (TC+1)        /* 49 */
00096 #define SRP   (DRP+1)              /* 50 */
00097 #define CRP   (SRP+1)              /* 51 */
00098 #define CAL   (CRP+1)              /* 52 */
00099 #define VAL   (CAL+1)              /* 53 */
00100 #define SCC   (VAL+1)              /* 54 */
00101 #define AC    (SCC+1)              /* 55 */
00102 #define BAD   (AC+1)        /* 56,57,58,59, 60,61,62,63 */
00103 #define BAC   (BAD+8)              /* 64,65,66,67, 68,69,70,71 */
00104 #define PSR   (BAC+8)              /* 72 */
00105 #define PCSR  (PSR+1)              /* 73 */
00106 
00107 /* name */    /* opcode */         /* match */          /* args */
00108 
00109 {"pbac",      one(0xf0c7),         one(0xffbf),         "Bc"},
00110 {"pbacw",     one(0xf087),         one(0xffbf),         "Bc"},
00111 {"pbas",      one(0xf0c6),         one(0xffbf),         "Bc"},
00112 {"pbasw",     one(0xf086),         one(0xffbf),         "Bc"},
00113 {"pbbc",      one(0xf0c1),         one(0xffbf),         "Bc"},
00114 {"pbbcw",     one(0xf081),         one(0xffbf),         "Bc"},
00115 {"pbbs",      one(0xf0c0),         one(0xffbf),         "Bc"},
00116 {"pbbsw",     one(0xf080),         one(0xffbf),         "Bc"},
00117 {"pbcc",      one(0xf0cf),         one(0xffbf),         "Bc"},
00118 {"pbccw",     one(0xf08f),         one(0xffbf),         "Bc"},
00119 {"pbcs",      one(0xf0ce),         one(0xffbf),         "Bc"},
00120 {"pbcsw",     one(0xf08e),         one(0xffbf),         "Bc"},
00121 {"pbgc",      one(0xf0cd),         one(0xffbf),         "Bc"},
00122 {"pbgcw",     one(0xf08d),         one(0xffbf),         "Bc"},
00123 {"pbgs",      one(0xf0cc),         one(0xffbf),         "Bc"},
00124 {"pbgsw",     one(0xf08c),         one(0xffbf),         "Bc"},
00125 {"pbic",      one(0xf0cb),         one(0xffbf),         "Bc"},
00126 {"pbicw",     one(0xf08b),         one(0xffbf),         "Bc"},
00127 {"pbis",      one(0xf0ca),         one(0xffbf),         "Bc"},
00128 {"pbisw",     one(0xf08a),         one(0xffbf),         "Bc"},
00129 {"pblc",      one(0xf0c3),         one(0xffbf),         "Bc"},
00130 {"pblcw",     one(0xf083),         one(0xffbf),         "Bc"},
00131 {"pbls",      one(0xf0c2),         one(0xffbf),         "Bc"},
00132 {"pblsw",     one(0xf082),         one(0xffbf),         "Bc"},
00133 {"pbsc",      one(0xf0c5),         one(0xffbf),         "Bc"},
00134 {"pbscw",     one(0xf085),         one(0xffbf),         "Bc"},
00135 {"pbss",      one(0xf0c4),         one(0xffbf),         "Bc"},
00136 {"pbssw",     one(0xf084),         one(0xffbf),         "Bc"},
00137 {"pbwc",      one(0xf0c9),         one(0xffbf),         "Bc"},
00138 {"pbwcw",     one(0xf089),         one(0xffbf),         "Bc"},
00139 {"pbws",      one(0xf0c8),         one(0xffbf),         "Bc"},
00140 {"pbwsw",     one(0xf088),         one(0xffbf),         "Bc"},
00141 
00142 {"pdbac",     two(0xf048, 0x0007), two(0xfff8, 0xffff), "DsBw"},
00143 {"pdbas",     two(0xf048, 0x0006), two(0xfff8, 0xffff), "DsBw"},
00144 {"pdbbc",     two(0xf048, 0x0001), two(0xfff8, 0xffff), "DsBw"},
00145 {"pdbbs",     two(0xf048, 0x0000), two(0xfff8, 0xffff), "DsBw"},
00146 {"pdbcc",     two(0xf048, 0x000f), two(0xfff8, 0xffff), "DsBw"},
00147 {"pdbcs",     two(0xf048, 0x000e), two(0xfff8, 0xffff), "DsBw"},
00148 {"pdbgc",     two(0xf048, 0x000d), two(0xfff8, 0xffff), "DsBw"},
00149 {"pdbgs",     two(0xf048, 0x000c), two(0xfff8, 0xffff), "DsBw"},
00150 {"pdbic",     two(0xf048, 0x000b), two(0xfff8, 0xffff), "DsBw"},
00151 {"pdbis",     two(0xf048, 0x000a), two(0xfff8, 0xffff), "DsBw"},
00152 {"pdblc",     two(0xf048, 0x0003), two(0xfff8, 0xffff), "DsBw"},
00153 {"pdbls",     two(0xf048, 0x0002), two(0xfff8, 0xffff), "DsBw"},
00154 {"pdbsc",     two(0xf048, 0x0005), two(0xfff8, 0xffff), "DsBw"},
00155 {"pdbss",     two(0xf048, 0x0004), two(0xfff8, 0xffff), "DsBw"},
00156 {"pdbwc",     two(0xf048, 0x0009), two(0xfff8, 0xffff), "DsBw"},
00157 {"pdbws",     two(0xf048, 0x0008), two(0xfff8, 0xffff), "DsBw"},
00158 
00159 {"pflusha",   two(0xf000, 0x2400), two(0xffff, 0xffff), "" },
00160 
00161 {"pflush",    two(0xf000, 0x3010), two(0xffc0, 0xfe10), "T3T9" },
00162 {"pflush",    two(0xf000, 0x3810), two(0xffc0, 0xfe10), "T3T9&s" },
00163 {"pflush",    two(0xf000, 0x3008), two(0xffc0, 0xfe18), "D3T9" },
00164 {"pflush",    two(0xf000, 0x3808), two(0xffc0, 0xfe18), "D3T9&s" },
00165 {"pflush",    two(0xf000, 0x3000), two(0xffc0, 0xfe1e), "f3T9" },
00166 {"pflush",    two(0xf000, 0x3800), two(0xffc0, 0xfe1e), "f3T9&s" },
00167 
00168 {"pflushs",   two(0xf000, 0x3410), two(0xfff8, 0xfe10), "T3T9" },
00169 {"pflushs",   two(0xf000, 0x3c00), two(0xfff8, 0xfe00), "T3T9&s" },
00170 {"pflushs",   two(0xf000, 0x3408), two(0xfff8, 0xfe18), "D3T9" },
00171 {"pflushs",   two(0xf000, 0x3c08), two(0xfff8, 0xfe18), "D3T9&s" },
00172 {"pflushs",   two(0xf000, 0x3400), two(0xfff8, 0xfe1e), "f3T9" },
00173 {"pflushs",   two(0xf000, 0x3c00), two(0xfff8, 0xfe1e), "f3T9&s"},
00174 
00175 {"pflushr",   two(0xf000, 0xa000), two(0xffc0, 0xffff), "|s" },
00176 
00177 {"ploadr",    two(0xf000, 0x2210), two(0xffc0, 0xfff0), "T3&s" },
00178 {"ploadr",    two(0xf000, 0x2208), two(0xffc0, 0xfff8), "D3&s" },
00179 {"ploadr",    two(0xf000, 0x2200), two(0xffc0, 0xfffe), "f3&s" },
00180 {"ploadw",    two(0xf000, 0x2010), two(0xffc0, 0xfff0), "T3&s" },
00181 {"ploadw",    two(0xf000, 0x2008), two(0xffc0, 0xfff8), "D3&s" },
00182 {"ploadw",    two(0xf000, 0x2000), two(0xffc0, 0xfffe), "f3&s" },
00183 
00184     /* TC, CRP, DRP, SRP, CAL, VAL, SCC, AC */
00185 {"pmove",     two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "*sP8" },
00186 {"pmove",     two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "P8%s" },
00187 {"pmove",     two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "|sW8" },
00188 {"pmove",     two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "W8~s" },
00189 
00190     /* BADx, BACx */
00191 {"pmove",     two(0xf000, 0x6200), two(0xffc0, 0xe3e3), "*sX3" },
00192 {"pmove",     two(0xf000, 0x6000), two(0xffc0, 0xe3e3), "X3%s" },
00193 
00194     /* PSR, PCSR */
00195     /* {"pmove",     two(0xf000, 0x6100), two(oxffc0, oxffff), "*sZ8" }, */
00196 {"pmove",     two(0xf000, 0x6000), two(0xffc0, 0xffff), "*sY8" },
00197 {"pmove",     two(0xf000, 0x6200), two(0xffc0, 0xffff), "Y8%s" },
00198 {"pmove",     two(0xf000, 0x6600), two(0xffc0, 0xffff), "Z8%s" },
00199 
00200 {"prestore",  one(0xf140),         one(0xffc0),         "&s"},
00201 {"prestore",  one(0xf158),         one(0xfff8),         "+s"},
00202 {"psave",     one(0xf100),         one(0xffc0),         "&s"},
00203 {"psave",     one(0xf100),         one(0xffc0),         "+s"},
00204 
00205 {"psac",      two(0xf040, 0x0007), two(0xffc0, 0xffff), "@s"},
00206 {"psas",      two(0xf040, 0x0006), two(0xffc0, 0xffff), "@s"},
00207 {"psbc",      two(0xf040, 0x0001), two(0xffc0, 0xffff), "@s"},
00208 {"psbs",      two(0xf040, 0x0000), two(0xffc0, 0xffff), "@s"},
00209 {"pscc",      two(0xf040, 0x000f), two(0xffc0, 0xffff), "@s"},
00210 {"pscs",      two(0xf040, 0x000e), two(0xffc0, 0xffff), "@s"},
00211 {"psgc",      two(0xf040, 0x000d), two(0xffc0, 0xffff), "@s"},
00212 {"psgs",      two(0xf040, 0x000c), two(0xffc0, 0xffff), "@s"},
00213 {"psic",      two(0xf040, 0x000b), two(0xffc0, 0xffff), "@s"},
00214 {"psis",      two(0xf040, 0x000a), two(0xffc0, 0xffff), "@s"},
00215 {"pslc",      two(0xf040, 0x0003), two(0xffc0, 0xffff), "@s"},
00216 {"psls",      two(0xf040, 0x0002), two(0xffc0, 0xffff), "@s"},
00217 {"pssc",      two(0xf040, 0x0005), two(0xffc0, 0xffff), "@s"},
00218 {"psss",      two(0xf040, 0x0004), two(0xffc0, 0xffff), "@s"},
00219 {"pswc",      two(0xf040, 0x0009), two(0xffc0, 0xffff), "@s"},
00220 {"psws",      two(0xf040, 0x0008), two(0xffc0, 0xffff), "@s"},
00221 
00222 {"ptestr",    two(0xf000, 0x8210), two(0xffc0, 0xe3f0), "T3&sQ8" },
00223 {"ptestr",    two(0xf000, 0x8310), two(0xffc0, 0xe310), "T3&sQ8A9" },
00224 {"ptestr",    two(0xf000, 0x8208), two(0xffc0, 0xe3f8), "D3&sQ8" },
00225 {"ptestr",    two(0xf000, 0x8308), two(0xffc0, 0xe318), "D3&sQ8A9" },
00226 {"ptestr",    two(0xf000, 0x8200), two(0xffc0, 0xe3fe), "f3&sQ8" },
00227 {"ptestr",    two(0xf000, 0x8300), two(0xffc0, 0xe31e), "f3&sQ8A9" },
00228 
00229 {"ptestw",    two(0xf000, 0x8010), two(0xffc0, 0xe3f0), "T3&sQ8" },
00230 {"ptestw",    two(0xf000, 0x8110), two(0xffc0, 0xe310), "T3&sQ8A9" },
00231 {"ptestw",    two(0xf000, 0x8008), two(0xffc0, 0xe3f8), "D3&sQ8" },
00232 {"ptestw",    two(0xf000, 0x8108), two(0xffc0, 0xe318), "D3&sQ8A9" },
00233 {"ptestw",    two(0xf000, 0x8000), two(0xffc0, 0xe3fe), "f3&sQ8" },
00234 {"ptestw",    two(0xf000, 0x8100), two(0xffc0, 0xe31e), "f3&sQ8A9" },
00235 
00236 {"ptrapacw",  two(0xf07a, 0x0007), two(0xffff, 0xffff), "#w"},
00237 {"ptrapacl",  two(0xf07b, 0x0007), two(0xffff, 0xffff), "#l"},
00238 {"ptrapac",   two(0xf07c, 0x0007), two(0xffff, 0xffff), ""},
00239 
00240 {"ptrapasw",  two(0xf07a, 0x0006), two(0xffff, 0xffff), "#w"},
00241 {"ptrapasl",  two(0xf07b, 0x0006), two(0xffff, 0xffff), "#l"},
00242 {"ptrapas",   two(0xf07c, 0x0006), two(0xffff, 0xffff), ""},
00243 
00244 {"ptrapbcw",  two(0xf07a, 0x0001), two(0xffff, 0xffff), "#w"},
00245 {"ptrapbcl",  two(0xf07b, 0x0001), two(0xffff, 0xffff), "#l"},
00246 {"ptrapbc",   two(0xf07c, 0x0001), two(0xffff, 0xffff), ""},
00247 
00248 {"ptrapbsw",  two(0xf07a, 0x0000), two(0xffff, 0xffff), "#w"},
00249 {"ptrapbsl",  two(0xf07b, 0x0000), two(0xffff, 0xffff), "#l"},
00250 {"ptrapbs",   two(0xf07c, 0x0000), two(0xffff, 0xffff), ""},
00251 
00252 {"ptrapccw",  two(0xf07a, 0x000f), two(0xffff, 0xffff), "#w"},
00253 {"ptrapccl",  two(0xf07b, 0x000f), two(0xffff, 0xffff), "#l"},
00254 {"ptrapcc",   two(0xf07c, 0x000f), two(0xffff, 0xffff), ""},
00255 
00256 {"ptrapcsw",  two(0xf07a, 0x000e), two(0xffff, 0xffff), "#w"},
00257 {"ptrapcsl",  two(0xf07b, 0x000e), two(0xffff, 0xffff), "#l"},
00258 {"ptrapcs",   two(0xf07c, 0x000e), two(0xffff, 0xffff), ""},
00259 
00260 {"ptrapgcw",  two(0xf07a, 0x000d), two(0xffff, 0xffff), "#w"},
00261 {"ptrapgcl",  two(0xf07b, 0x000d), two(0xffff, 0xffff), "#l"},
00262 {"ptrapgc",   two(0xf07c, 0x000d), two(0xffff, 0xffff), ""},
00263 
00264 {"ptrapgsw",  two(0xf07a, 0x000c), two(0xffff, 0xffff), "#w"},
00265 {"ptrapgsl",  two(0xf07b, 0x000c), two(0xffff, 0xffff), "#l"},
00266 {"ptrapgs",   two(0xf07c, 0x000c), two(0xffff, 0xffff), ""},
00267 
00268 {"ptrapicw",  two(0xf07a, 0x000b), two(0xffff, 0xffff), "#w"},
00269 {"ptrapicl",  two(0xf07b, 0x000b), two(0xffff, 0xffff), "#l"},
00270 {"ptrapic",   two(0xf07c, 0x000b), two(0xffff, 0xffff), ""},
00271 
00272 {"ptrapisw",  two(0xf07a, 0x000a), two(0xffff, 0xffff), "#w"},
00273 {"ptrapisl",  two(0xf07b, 0x000a), two(0xffff, 0xffff), "#l"},
00274 {"ptrapis",   two(0xf07c, 0x000a), two(0xffff, 0xffff), ""},
00275 
00276 {"ptraplcw",  two(0xf07a, 0x0003), two(0xffff, 0xffff), "#w"},
00277 {"ptraplcl",  two(0xf07b, 0x0003), two(0xffff, 0xffff), "#l"},
00278 {"ptraplc",   two(0xf07c, 0x0003), two(0xffff, 0xffff), ""},
00279 
00280 {"ptraplsw",  two(0xf07a, 0x0002), two(0xffff, 0xffff), "#w"},
00281 {"ptraplsl",  two(0xf07b, 0x0002), two(0xffff, 0xffff), "#l"},
00282 {"ptrapls",   two(0xf07c, 0x0002), two(0xffff, 0xffff), ""},
00283 
00284 {"ptrapscw",  two(0xf07a, 0x0005), two(0xffff, 0xffff), "#w"},
00285 {"ptrapscl",  two(0xf07b, 0x0005), two(0xffff, 0xffff), "#l"},
00286 {"ptrapsc",   two(0xf07c, 0x0005), two(0xffff, 0xffff), ""},
00287 
00288 {"ptrapssw",  two(0xf07a, 0x0004), two(0xffff, 0xffff), "#w"},
00289 {"ptrapssl",  two(0xf07b, 0x0004), two(0xffff, 0xffff), "#l"},
00290 {"ptrapss",   two(0xf07c, 0x0004), two(0xffff, 0xffff), ""},
00291 
00292 {"ptrapwcw",  two(0xf07a, 0x0009), two(0xffff, 0xffff), "#w"},
00293 {"ptrapwcl",  two(0xf07b, 0x0009), two(0xffff, 0xffff), "#l"},
00294 {"ptrapwc",   two(0xf07c, 0x0009), two(0xffff, 0xffff), ""},
00295 
00296 {"ptrapwsw",  two(0xf07a, 0x0008), two(0xffff, 0xffff), "#w"},
00297 {"ptrapwsl",  two(0xf07b, 0x0008), two(0xffff, 0xffff), "#l"},
00298 {"ptrapws",   two(0xf07c, 0x0008), two(0xffff, 0xffff), ""},
00299 
00300 {"pvalid",    two(0xf000, 0x2800), two(0xffc0, 0xffff), "Vs&s"},
00301 {"pvalid",    two(0xf000, 0x2c00), two(0xffc0, 0xfff8), "A3&s" },
00302 
00303 #endif /* m68851 */