Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.                 page            0
  2.  
  3.                 cpu             mcf5202         ; ISA A
  4.                 supmode         on
  5.  
  6.                 cpu             mcf5208         ; ISA A+
  7.                 supmode         on
  8.  
  9.                 bitrev          d4              ; $00cn
  10.                 bitrev.l        d4
  11.                 byterev         d6              ; $02cn
  12.                 byterev.l       d6
  13.                 ff1             d2              ; $04cn
  14.                 ff1.l           d2
  15.  
  16.                 move.l          usp,a3          ; $4e6(8n)
  17.                 move.l          a5,usp          ; $4e6(0n)
  18.  
  19.                 stldsr          #$55aa          ; $40e7 $46fc iiii
  20.                 stldsr.w        #$55aa
  21.  
  22.                 cpu             mcf5407         ; ISA B
  23.  
  24.                 bra.x           *+100000        ; $60ff dddd dddd
  25.                 bra             *+100000
  26.                 bsr.x           *+100000        ; $61ff dddd dddd
  27.                 bsr             *+100000
  28.                 bne.x           *+100000        ; $66ff dddd dddd
  29.                 bne             *+100000
  30.  
  31.                 cmp.b           d3,d2           ; %1011 010(d2) 000(b)|001(w) eeeaaa
  32.                 cmp.w           d3,d2
  33.                 cmp.b           a3,d2
  34.                 cmp.w           a3,d2
  35.                 cmp.b           (a5),d2
  36.                 cmp.w           (a5),d2
  37.                 cmp.b           (a4)+,d2
  38.                 cmp.w           (a4)+,d2
  39.                 cmp.b           -(a1),d2
  40.                 cmp.w           -(a1),d2
  41.                 cmp.b           (1000,sp),d2
  42.                 cmp.w           (1000,sp),d2
  43.                 cmp.b           (-100,d4,a6),d2
  44.                 cmp.w           (-100,d4,a6),d2
  45.                 cmp.b           ($1234),d2
  46.                 cmp.b           ($1234.w),d2
  47.                 cmp.w           ($1234),d2
  48.                 cmp.w           ($1234.w),d2
  49.                 cmp.b           ($12345678),d2
  50.                 cmp.b           ($12345678.l),d2
  51.                 cmp.w           ($12345678),d2
  52.                 cmp.w           ($12345678.l),d2
  53.                 cmp.b           #$56,d2
  54.                 cmp.w           #$5678,d2
  55.                 cmp.b           (*+1000,pc),d2
  56.                 cmp.w           (*+1000,pc),d2
  57.                 cmp.b           (*-100,d3,pc),d2
  58.                 cmp.w           (*-100,d3,pc),d2
  59.  
  60.                 cmpa.w          d3,a2           ; %1011 010(a2) 011(w) eeeaaaa
  61.                 cmp.w           d3,a2
  62.                 cmpa.w          a3,a2
  63.                 cmp.w           a3,a2
  64.                 cmpa.w          (a5),a2
  65.                 cmp.w           (a5),a2
  66.                 cmpa.w          (a4)+,a2
  67.                 cmp.w           (a4)+,a2
  68.                 cmpa.w          -(a1),a2
  69.                 cmp.w           -(a1),a2
  70.                 cmpa.w          (1000,sp),a2
  71.                 cmp.w           (1000,sp),a2
  72.                 cmpa.w          (-100,d4,a6),a2
  73.                 cmp.w           (-100,d4,a6),a2
  74.                 cmpa.w          ($1234),a2
  75.                 cmpa.w          ($1234.w),a2
  76.                 cmp.w           ($1234),a2
  77.                 cmp.w           ($1234.w),a2
  78.                 cmpa.w          ($12345678),a2
  79.                 cmpa.w          ($12345678.l),a2
  80.                 cmp.w           ($12345678),a2
  81.                 cmp.w           ($12345678.l),a2
  82.                 cmpa.w          #$56,a2
  83.                 cmp.w           #$5678,a2
  84.                 cmpa.w          (*+1000,pc),a2
  85.                 cmp.w           (*+1000,pc),a2
  86.                 cmpa.w          (*-100,d3,pc),a2
  87.                 cmp.w           (*-100,d3,pc),a2
  88.  
  89.                 cmpi.b          #$55,d3
  90.                 cmpi.w          #$6666,d3
  91.  
  92.                 intouch         (a4)            ; $f42(1|reg)
  93.  
  94.                 mov3q           #-1,d3          ; %1010 iii1 01ee eaaa
  95.                 mov3q.l         #-1,d3
  96.                 mov3q           #1,d3
  97.                 mov3q.l         #1,d3
  98.                 mov3q           #7,d3
  99.                 mov3q.l         #7,d3
  100.                 mov3q           #1,a5
  101.                 mov3q.l         #1,a5
  102.                 mov3q           #1,(a4)
  103.                 mov3q.l         #1,(a4)
  104.                 mov3q           #1,(a1)+
  105.                 mov3q.l         #1,(a1)+
  106.                 mov3q           #1,-(a6)
  107.                 mov3q.l         #1,-(a6)
  108.                 mov3q           #1,(1000,a6)
  109.                 mov3q.l         #1,(a6,1000)
  110.                 mov3q           #1,(-100,a6,d5)
  111.                 mov3q.l         #1,(d5,a6,-100)
  112.                 mov3q           #1,($3456)
  113.                 mov3q.l         #1,$3456
  114.                 mov3q           #1,($123456)
  115.                 mov3q.l         #1,$123456
  116.  
  117.                 irp             instr,mvs,mvz
  118.                 irp             src,d3,a3,(a3),(a3)+,-(a3),(1000,a3),(-100,a3,d3),($1234),($12345678),(*+1000,pc),(*-100,pc,d3),#42
  119.                 instr           src,d7
  120.                 instr.b         src,d7
  121.                 instr.w         src,d7
  122.                 endm
  123.                 endm
  124.  
  125.                 sats            d4              ; $4c8(Dn)
  126.                 sats.l          d4
  127.  
  128.                 irp             dest,(a3),(a3)+,-(a3),(1000,a3),(-100,a3,d3),($1234),($12345678)
  129.                 tas             dest
  130.                 tas.b           dest
  131.                 endm
  132.  
  133.                 fpu             on
  134.  
  135.                 irp             instr,fabs,fsabs,fdabs
  136.                 instr.b         d2,fp4
  137.                 instr.w         d2,fp4
  138.                 instr.l         d2,fp4
  139.                 instr.s         d2,fp4
  140.                 irp             src,(a2),(a2)+,-(a2),(1000,a2),(*+1000,pc)
  141.                 instr.b         src,fp4
  142.                 instr.w         src,fp4
  143.                 instr.l         src,fp4
  144.                 instr.s         src,fp4
  145.                 instr.d         src,fp4
  146.                 instr           src,fp4
  147.                 endm
  148.                 instr           fp2,fp4
  149.                 instr.d         fp2,fp4
  150.                 instr           fp4
  151.                 instr.d         fp4
  152.                 endm
  153.  
  154.                 ; (E)MAC stuff
  155.  
  156.                 cpu             mcf5470
  157.  
  158.                 irp             instr,mac,msac
  159.                  irp            noshift,x
  160.                   instr.l       a4,d3
  161.                   instr.l       a4,d3,(a5),a6,acc
  162.                   instr.l       a4,d3,(1000,a5),a6,acc0
  163.                   instr.l       a4,d3,(a5)&,a6
  164.                   instr.l       a4,d3,(1000,a5)&,a6
  165.                   instr.l       a4,d3,(a5)&mask,a6
  166.                   instr.l       a4,d3,(1000,a5)&mask,a6
  167.                   irp           half1,l,u
  168.                   irp           half2,l,u
  169.                    instr.w      a4.half1,d3.half2
  170.                    ; we might iterate here through mask arg and other EMAC ACCs either...
  171.                   endm
  172.                   endm
  173.                  endm
  174.                  irp            shift,<<0,>>0,<<,>>,<<1,>>1
  175.                   instr.l       a4,d3,shift
  176.                   instr.l       a4,d3,shift,(a5),a6,acc
  177.                   instr.l       a4,d3,shift,(1000,a5),a6,acc0
  178.                   instr.l       a4,d3,shift,(a5)&,a6
  179.                   instr.l       a4,d3,shift,(1000,a5)&,a6
  180.                   instr.l       a4,d3,shift,(a5)&mask,a6
  181.                   instr.l       a4,d3,shift,(1000,a5)&mask,a6
  182.                   irp           half1,l,u
  183.                   irp           half2,l,u
  184.                    instr.w      a4.half1,d3.half2,shift
  185.                    ; we might iterate here through mask arg and other EMAC ACCs either...
  186.                   endm
  187.                   endm
  188.                  endm
  189.                 endm
  190.  
  191.                 irp             reg,acc,acc0,acc1,acc2,acc3,macsr,mask,accext01,accext23
  192.                  move           reg,d4
  193.                  move.l         reg,d4
  194.                  move           reg,a4
  195.                  move.l         reg,a4
  196.                  move           d4,reg
  197.                  move.l         d4,reg
  198.                  move           a4,reg
  199.                  move.l         a4,reg
  200.                  move           #$12345678,reg
  201.                  move.l         #$12345678,reg
  202.                 endm
  203.  
  204.                 move            MACSR,ccr
  205.                 move.l          MACSR,ccr
  206.  
  207.                 move            acc2,acc3
  208.                 move.l          acc2,acc3
  209.  
  210.                 irp             reg,acc,acc0,acc1,acc2,acc3
  211.                  movclr         reg,d4
  212.                  movclr.l       reg,d4
  213.                  movclr         reg,a4
  214.                  movclr.l       reg,a4
  215.                 endm
  216.  
  217.                 irp             instr,maaac,masac,msaac,mssac
  218.                  irp            noshift,x
  219.                   instr.l       a4,d3,acc1,acc3
  220.                   irp           half1,l,u
  221.                   irp           half2,l,u
  222.                    instr.w       a4.half1,d3.half2,acc1,acc3
  223.                   endm
  224.                   endm
  225.                  endm
  226.                  irp            shift,<<0,>>0,<<1,>>1
  227.                   instr.l       a4,d3,shift,acc1,acc3
  228.                   irp           half1,l,u
  229.                   irp           half2,l,u
  230.                    instr.w       a4.half1,d3.half2,shift,acc1,acc3
  231.                   endm
  232.                   endm
  233.                  endm
  234.                 endm
  235.  
  236.                 ; test CAU
  237.  
  238.                 cpu             mcf51qm
  239.  
  240.                 include         "regcold.inc"
  241.  
  242.                 ; it took me quite a while to get hold of cf_prm_coproc.pdf...
  243.  
  244.                 cp0ld.l         #CNOP           ; NOP
  245.                 cp0ld           #CNOP           ; 32 bit is default opsize (and only one allowed for CAU)
  246.                 cp0ld           d0,CNOP
  247.                 cp0ld           d0,d0,CNOP
  248.                 cp0ld           d0,0,CNOP
  249.                 cp0ld           d0,d0,0,CNOP
  250.                 cp0nop                          ; should be same...
  251.                 cp0nop          0
  252.                 cp0ld           d1,#LDR+CA0     ; Load D1 -> CA0
  253.                 cp0st           d2,#STR+CA1     ; Store CA1 -> D2
  254.                 cp0ld           d3,#ADR+CA2     ; CA2 += D3
  255.                 cp0ld           #ADRA+CA3       ; CAA += CA3
  256.                 cp0ld           d4,#XOR+CAA     ; CAA ^= D4
  257.                 cp0ld           #MVRA+CA5       ; CAA <- CA5
  258.                 cp0ld           #MVAR+CA6       ; CA6 <- CAA
  259.                 cp0ld           #AESS+CA7       ; CA7 <- AES-subsitution(CA7)
  260.                 cp0ld           #AESIS+CA8      ; CA8 <- AES-inverse-subsitution(CA8)
  261.                 cp0ld           d5,#AESC+CA1    ; CA1 <- AES-column-operation(D5)
  262.                 cp0ld           d6,#AESIC+CA2   ; CA2 <- AES-inverse-column-operation(D6)
  263.                 cp0ld           #AESR           ; AES row shift op on CA0...CA3
  264.                 cp0ld           #AESIR          ; AES inverse row shift op on CA0...CA3
  265.                 cp0ld           #DESR           ; DES round on CA0...CA3
  266.                 cp0ld           #DESR+IP        ; " with initial permutation
  267.                 cp0ld           #DESR+FP        ; " with final permutation
  268.                 cp0ld           #DESR+KSL2      ; " with left 2 key update
  269.                 cp0ld           #DESK           ; DES key transformation
  270.                 cp0ld           #DESK+CP        ; " with key parity error detection
  271.                 cp0ld           #DESK+DC        ; " for decryption
  272.                 cp0ld           #HASH+HFF       ; MD5 F() operation
  273.                 cp0ld           #HASH+HFG       ; MD5 G() operation
  274.                 cp0ld           #HASH+HFH       ; MD5 H() operation
  275.                 cp0ld           #HASH+HFI       ; MD5 I() operation
  276.                 cp0ld           #HASH+HFC       ; SHA Ch() operation
  277.                 cp0ld           #HASH+HFM       ; SHA Maj() operation
  278.                 cp0ld           #HASH+HF2C      ; SHA-256 Ch() operation
  279.                 cp0ld           #HASH+HF2M      ; SHA-256 Maj() operation
  280.                 cp0ld           #HASH+HF2S      ; SHA-256 Sigma 0 operation
  281.                 cp0ld           #HASH+HF2T      ; SHA-256 Sigma 1 operation
  282.                 cp0ld           #HASH+HF2U      ; SHA-256 Sigma 0 operation
  283.                 cp0ld           #HASH+HF2V      ; SHA-256 Sigma 1 operation
  284.                 cp0ld           #SHS            ; secure hash shift on CAA...CA4
  285.                 cp0ld           #MDS            ; message digest shift on CAA...CA3
  286.                 cp0ld           #SHS2           ; secure hash shift 2 on CAA...CA8
  287.                 cp0ld           #ILL            ; illegal command
  288.                 cp0bcbusy       *+4             ; not needed for CAU?
  289.                 cp1bcbusy       *-4
  290.