OpenCores
URL https://opencores.org/ocsvn/core_arm/core_arm/trunk

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [soft/] [cdef/] [arm.el] - Rev 4

Compare with Previous | Blame | View Log

(progn
  (load "cdef_lib_b1")
  (load "cdef_lib_c1")
  (load "cdef_lib_g1")
  (load "cdef_lib_l1")
  (load "cdef_lib_m1")
  (load "cdef_lib_i1")
  (load "cdef_lib_h1")
  (load "cdef_lib_pc")
  (load "cdef_lib_pv")
)
 
(progn
  (if (load "cdef_lib_b1") ()(message "You have to set your elisp load-path variable, i.e: (setq load-path
      (append (list nil \"/home/eiselekd/vhdl_0.8/soft/cdef\") load-path)))"))
  (load "cdef_lib_c1")
  (load "cdef_lib_g1")
  (load "cdef_lib_l1")
  (load "cdef_lib_m1")
  (load "cdef_lib_i1")
  (load "cdef_lib_h1")
  (load "cdef_lib_pc")
  (load "cdef_lib_pv")
 
(setq insn-help '(
		  (c "Condition code")
		  (op1 "Data processing opcode")
		  (rn "Register rn")
		  (rm "Register rm")
		  (rs "Register rs")
		  (rdl "Destination register long")
		  (rd "Destination register rd")
		  (sha "Shieft amount")
		  (sh "Shieft direction")
		  (dps "Update cpsr") 
		  (imm "Breakpoint imm part1")
		  (imm2 "Breakpoint imm part2")
 
		  (dsop "Dsp operand")
		  (MS "Set cpsr")
		  (MA "Multiply accumulate")
		  (MU "Multiply unsigned")
 
		  (SB "Swap byte")
		  (LSP "pre-indexed")
		  (LSU "add/sub base '1'=add")
		  (LSW "writeback")
		  (LSL "Load|Store '1'=Load")
		  (S "Signed|Unsigned '1'=signed")
		  (H "halfword|signedbyte '1'=halfword")
		  (i81 "Immidiate8 part1")
		  (i82 "Immidiate8 part2")
		  (dpi "Immidiate8")
		  (rot "Immidiate8 rotate")
		  (rgl "register list")
		  (R "Cpsr|Spsr '1'=Spsr")		       	   	      	       	    	       	    	      	   	     	       	    	      	   	     	       	    	      	   	     						    						    					    					    						    					    					    						    					    						    					    					    						    					    					    						    					    						    					    					    						    					    					    						    					    					    						    					    						    					    					    
		  (MSK "move immidiate to status register mask")		       	   	      	       	    	       	    	      	   
		  (LSB "Byte|word '1'=byte")
		  (LMS "Set cpsr fro spsr")
		  (BLL "Link")
		  (BLH "Exchange")
		  (Cp_N "Coprocessor n bit")
		  (cpn "Coprocessor number")
		  (crn "Coprocessor register rn")
		  (crm "Coprocessor register rm")
		  (of8 "offset8")
		  (crd "Coprocessor destination register")
		  (co1 "Coprocessor op1")
 
		  (insn_dp_i_s "Data Processing immidiate shieft")
 
		  (insn_msr  "Move status register to register" )
		  (insn_mrs  "Move register to status register" )
		  (insn_bex  "Branch / exchange")
		  (insn_clz  "Count leading zero")
		  (insn_blx  "Branch and link /exchange")
		  (insn_dsa  "Dsp add|sub")
		  (insn_brk  "Breakpoint" )
		  (insn_dsm  "DSP multiply")
 
		  (insn_dp_r_s "Data processing register shieft")
 
		  (insn_mula "Multiply and accumulate")
		  (insn_mull "Multiply long")
 
		  (insn_swp "Swap|swap byte")
 
		  (insn_ld1 "Load|Store halfword")
		  (insn_ld2 "Load|Store halfword immidiate offset")
		  (insn_ld3 "Load|Store two words register offset")
		  (insn_ld4 "Load|Store signed halfword/byte register offset")
		  (insn_ld5 "Load|Store two words register offset")
		  (insn_ld6 "Load|Store signed halfword/byte immidiate offset")
 
		  (insn_dp_i "Data processing immidiate")
		  (insn_undef1 "Undefined instruction")
		  (insn_misr "Move immidiate to status register")
		  (insn_lsio "Load|Store imidiate offset")
		  (insn_lsro "Load|Store register offset")
		  (insn_undef2 "Undefined instruction2")
		  (insn_undef3 "Undefined instruction3")
		  (insn_lsm "Load|Store multiple")
		  (insn_undef4  "Undefined instruction4")
		  (insn_bwl "Branch with link")
		  (insn_bwlth "Branch with link and change to thumb")
 
		  (insn_cpldst "Coprocessor Load Store")
 
		  (insn_cpdp "Coprocessor data processing")
		  (insn_cpr "Coprocessor register transfer")
 
		  (insn_swi "Software interrupt")
		  (insn_undef "Undef")
 
))
 
 
;;      list order   0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31
;;                  31   30   29   28   27   26   25   24   23   22   21   20   19   18   17   16   15   14   13   12   11   10   09   08   07   06   05   04   03   02   01   00
(setq insn_dp_i_s '( c    c    c    c    0    0    0   op1  op1  op1  op1  dps  rn   rn   rn   rn   rd   rd   rd   rd   sha  sha  sha  sha  sha  sh   sh    0   rm   rm   rm   rm  ))
 
(setq insn_msr    '( c    c    c    c    0    0    0    1    0    R    0    0   SBO  SBO  SBO  SBO   rd   rd   rd   rd  SBZ  SBZ  SBZ  SBZ   0    0    0    0  SBZ2 SBZ2 SBZ2 SBZ2  ))
(setq insn_mrs    '( c    c    c    c    0    0    0    1    0    R    1    0   msk  msk  msk  msk  SBO  SBO  SBO  SBO  SBZ  SBZ  SBZ  SBZ   0    0    0    0   rm   rm   rm   rm  ))
(setq insn_bex    '( c    c    c    c    0    0    0    1    0    0    1    0   SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO   0    0    0    1   rm   rm   rm   rm  ))
(setq insn_clz    '( c    c    c    c    0    0    0    1    0    1    1    0   SBO  SBO  SBO  SBO   rd   rd   rd   rd  SBO2 SBO2 SBO2 SBO2   0    0    0    1   rm   rm   rm   rm  ))
(setq insn_blx    '( c    c    c    c    0    0    0    1    0    0    1    0   SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO  SBO   0    0    1    1   rm   rm   rm   rm  ))
(setq insn_dsa    '( c    c    c    c    0    0    0    1    0  dsop dsop   0   rn   rn   rn   rn    rd   rd   rd   rd  SBZ  SBZ  SBZ  SBZ   0    1    0    1   rm   rm   rm   rm  ))
(setq insn_brk    '( c    c    c    c    0    0    0    1    0    0    1    0   imm  imm  imm  imm  imm  imm  imm  imm  imm  imm  imm  imm   0    1    1    1  imm2 imm2 imm2 imm2  ))
(setq insn_dsm    '( c    c    c    c    0    0    0    1    0  dsop dsop   0   RD   RD   RD   RD    rn   rn   rn   rn  rs   rs   rs   rs    1    y    x    0   rm   rm   rm   rm  ))
 
(setq insn_dp_r_s '( c    c    c    c    0    0    0   op1  op1  op1  op1  dps  rn   rn   rn   rn   rd   rd   rd   rd   rs   rs   rs   rs    0    sh   sh   1   rm   rm   rm   rm  ))
 
(setq insn_mula   '( c    c    c    c    0    0    0    0    0    0   MA   MS    rd   rd   rd   rd  rn   rn   rn   rn   rs   rs   rs   rs    1    0    0    1   rm   rm   rm   rm  ))
(setq insn_mull   '( c    c    c    c    0    0    0    0    1   MU   MA   MS    rd   rd   rd   rd  rdl  rdl  rdl  rdl  rs   rs   rs   rs    1    0    0    1   rm   rm   rm   rm  ))
 
(setq insn_swp    '( c    c    c    c    0    0    0    1    0   SB    0    0    rn   rn   rn   rn  rd   rd   rd   rd   sbz  sbz  sbz  sbz   1    0    0    1   rm   rm   rm   rm  ))
 
(setq insn_ld1    '( c    c    c    c    0    0    0  LSP  LSU    0  LSW  LSL    rn   rn   rn   rn  rd   rd   rd   rd   sbz  sbz  sbz  sbz   1    0    1    1   rm   rm   rm   rm  ))
(setq insn_ld2    '( c    c    c    c    0    0    0  LSP  LSU    1  LSW  LSL    rn   rn   rn   rn  rd   rd   rd   rd   i81  i81  i81  i81   1    0    1    1   i82  i82  i82  i82  ))
(setq insn_ld3    '( c    c    c    c    0    0    0  LSP  LSU    0  LSW    0    rn   rn   rn   rn  rd   rd   rd   rd   i81  i81  i81  i81   1    1    S    1   i82  i82  i82  i82  ))
(setq insn_ld4    '( c    c    c    c    0    0    0  LSP  LSU    0  LSW    1    rn   rn   rn   rn  rd   rd   rd   rd   i81  i81  i81  i81   1    1    H    1   i82  i82  i82  i82  ))
(setq insn_ld5    '( c    c    c    c    0    0    0  LSP  LSU    1  LSW    0    rn   rn   rn   rn  rd   rd   rd   rd   i81  i81  i81  i81   1    1    S    1   i82  i82  i82  i82  ))
(setq insn_ld6    '( c    c    c    c    0    0    0  LSP  LSU    1  LSW    1    rn   rn   rn   rn  rd   rd   rd   rd   i81  i81  i81  i81   1    1    H    1   i82  i82  i82  i82  ))
 
(setq insn_dp_i   '( c    c    c    c    0    0    1   op1  op1  op1  op1  dps  rn   rn   rn   rn   rd   rd   rd   rd   rot  rot  rot  rot  dpi  dpi  dpi  dpi  dpi  dpi  dpi  dpi ))
(setq insn_undef1 '( c    c    c    c    0    0    1    1    0   X2    0    0    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X  ))
(setq insn_misr   '( c    c    c    c    0    0    1    1    0    R    1    0   MSK  MSK  MSK  MSK  SBQ  SBQ  SBQ  SBQ  rot  rot  rot  rot  dpi  dpi  dpi  dpi  dpi  dpi  dpi  dpi ))
(setq insn_lsio   '( c    c    c    c    0    1    0   LSP  LSU  LSB  LSW  LSL  rn   rn   rn   rn   rd   rd   rd   rd   LSI  LSI  LSI  LSI  LSI  LSI  LSI  LSI  LSI  LSI  LSI  LSI ))
(setq insn_lsro   '( c    c    c    c    0    1    1   LSP  LSU  LSB  LSW  LSL  rn   rn   rn   rn   rd   rd   rd   rd   sha  sha  sha  sha  sha  sh   sh    0   rm   rm   rm   rm  ))
(setq insn_undef2 '( c    c    c    c    0    1    1    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    1    X2   X2   X2   X2  ))
(setq insn_undef3 '( 1    1    1    1    0    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X  ))
(setq insn_lsm    '( c    c    c    c    0    1    1   LSP  LSU  LMS  LSW  LSL  rn   rn   rn   rn   rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl  rgl ))
(setq insn_undef4 '( 1    1    1    1    1    0    0    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X  ))
(setq insn_bwl    '( c    c    c    c    1    0    1   BLL  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo))
(setq insn_bwlth  '( 1    1    1    1    1    0    1   BLH  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo  blo))
 
(setq insn_cpldst '( c    c    c    c    1    1    0   LSP  LSU  Cp_N  LSW LSL rn   rn   rn   rn   crd  crd  crd  crd  cpn  cpn  cpn  cpn  of8  of8  of8  of8  of8  of8  of8  of8 ))
(setq insn_cpdp   '( c    c    c    c    1    1    0    0   co1  co1  co1  co1  crn  crn  crn  crn   rd   rd   rd   rd  cpn  cpn  cpn  cpn  cp1  cp1  cp1   0   crm  crm  crm  crm ))
(setq insn_cpr    '( c    c    c    c    1    1    0    0   co1  co1  co1  LSL  crn  crn  crn  crn   rd   rd   rd   rd  cpn  cpn  cpn  cpn  cp1  cp1  cp1   1   crm  crm  crm  crm ))
 
(setq insn_swi    '( c    c    c    c    1    1    1    1    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X ))
(setq insn_undef  '( 1    1    1    1    1    1    1    1    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X ))
 
 
(setq insn '(
  insn_dp_i_s insn_msr insn_mrs insn_bex insn_clz insn_blx insn_dsa 
  insn_brk insn_dsm insn_dp_r_s insn_mula insn_mull insn_swp insn_ld1
  insn_ld2 insn_ld3 insn_ld4 insn_ld5 insn_ld6 insn_dp_i insn_undef1 
  insn_misr insn_lsio insn_lsro insn_undef2 insn_undef3 insn_lsm insn_undef4 
  insn_bwl insn_bwlth insn_cpldst insn_cpdp insn_cpr insn_swi insn_undef
 ))
 
(setq h (create-decoder-setenc (or-insn-set insn) insn 0))
;(insert (print-decoder h 0))
(insert (print-decoder-c-pre h))
(insert (print-decoder-c-structs insn insn-help))
;(insert (print-decoder-vhd-pre h))
 
)
 
 
 
 
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.