Commit f930d07eda320b221360556eaa0c695c48173567
1 parent
81732d19
More detabification
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3338 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
14 changed files
with
2547 additions
and
2547 deletions
hw/apb_pci.c
@@ -70,7 +70,7 @@ static CPUReadMemoryFunc *pci_apb_config_read[] = { | @@ -70,7 +70,7 @@ static CPUReadMemoryFunc *pci_apb_config_read[] = { | ||
70 | }; | 70 | }; |
71 | 71 | ||
72 | static void apb_config_writel (void *opaque, target_phys_addr_t addr, | 72 | static void apb_config_writel (void *opaque, target_phys_addr_t addr, |
73 | - uint32_t val) | 73 | + uint32_t val) |
74 | { | 74 | { |
75 | //PCIBus *s = opaque; | 75 | //PCIBus *s = opaque; |
76 | 76 | ||
@@ -80,14 +80,14 @@ static void apb_config_writel (void *opaque, target_phys_addr_t addr, | @@ -80,14 +80,14 @@ static void apb_config_writel (void *opaque, target_phys_addr_t addr, | ||
80 | case 0x18: // AFAR | 80 | case 0x18: // AFAR |
81 | case 0x20: // Diagnostic | 81 | case 0x20: // Diagnostic |
82 | case 0x28: // Target address space | 82 | case 0x28: // Target address space |
83 | - // XXX | 83 | + // XXX |
84 | default: | 84 | default: |
85 | - break; | 85 | + break; |
86 | } | 86 | } |
87 | } | 87 | } |
88 | 88 | ||
89 | static uint32_t apb_config_readl (void *opaque, | 89 | static uint32_t apb_config_readl (void *opaque, |
90 | - target_phys_addr_t addr) | 90 | + target_phys_addr_t addr) |
91 | { | 91 | { |
92 | //PCIBus *s = opaque; | 92 | //PCIBus *s = opaque; |
93 | uint32_t val; | 93 | uint32_t val; |
@@ -98,10 +98,10 @@ static uint32_t apb_config_readl (void *opaque, | @@ -98,10 +98,10 @@ static uint32_t apb_config_readl (void *opaque, | ||
98 | case 0x18: // AFAR | 98 | case 0x18: // AFAR |
99 | case 0x20: // Diagnostic | 99 | case 0x20: // Diagnostic |
100 | case 0x28: // Target address space | 100 | case 0x28: // Target address space |
101 | - // XXX | 101 | + // XXX |
102 | default: | 102 | default: |
103 | - val = 0; | ||
104 | - break; | 103 | + val = 0; |
104 | + break; | ||
105 | } | 105 | } |
106 | return val; | 106 | return val; |
107 | } | 107 | } |
@@ -222,7 +222,7 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base, | @@ -222,7 +222,7 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base, | ||
222 | pci_mem_config = cpu_register_io_memory(0, pci_apb_config_read, | 222 | pci_mem_config = cpu_register_io_memory(0, pci_apb_config_read, |
223 | pci_apb_config_write, s); | 223 | pci_apb_config_write, s); |
224 | apb_config = cpu_register_io_memory(0, apb_config_read, | 224 | apb_config = cpu_register_io_memory(0, apb_config_read, |
225 | - apb_config_write, s); | 225 | + apb_config_write, s); |
226 | pci_mem_data = cpu_register_io_memory(0, pci_apb_read, | 226 | pci_mem_data = cpu_register_io_memory(0, pci_apb_read, |
227 | pci_apb_write, s); | 227 | pci_apb_write, s); |
228 | pci_ioport = cpu_register_io_memory(0, pci_apb_ioread, | 228 | pci_ioport = cpu_register_io_memory(0, pci_apb_ioread, |
hw/cs4231.c
@@ -79,11 +79,11 @@ static uint32_t cs_mem_readl(void *opaque, target_phys_addr_t addr) | @@ -79,11 +79,11 @@ static uint32_t cs_mem_readl(void *opaque, target_phys_addr_t addr) | ||
79 | break; | 79 | break; |
80 | } | 80 | } |
81 | DPRINTF("read dreg[%d]: 0x%8.8x\n", CS_RAP(s), ret); | 81 | DPRINTF("read dreg[%d]: 0x%8.8x\n", CS_RAP(s), ret); |
82 | - break; | 82 | + break; |
83 | default: | 83 | default: |
84 | ret = s->regs[saddr]; | 84 | ret = s->regs[saddr]; |
85 | DPRINTF("read reg[%d]: 0x%8.8x\n", saddr, ret); | 85 | DPRINTF("read reg[%d]: 0x%8.8x\n", saddr, ret); |
86 | - break; | 86 | + break; |
87 | } | 87 | } |
88 | return ret; | 88 | return ret; |
89 | } | 89 | } |
@@ -122,7 +122,7 @@ static void cs_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val) | @@ -122,7 +122,7 @@ static void cs_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val) | ||
122 | break; | 122 | break; |
123 | default: | 123 | default: |
124 | s->regs[saddr] = val; | 124 | s->regs[saddr] = val; |
125 | - break; | 125 | + break; |
126 | } | 126 | } |
127 | } | 127 | } |
128 | 128 |
hw/esp.c
@@ -107,9 +107,9 @@ static int get_cmd(ESPState *s, uint8_t *buf) | @@ -107,9 +107,9 @@ static int get_cmd(ESPState *s, uint8_t *buf) | ||
107 | if (s->dma) { | 107 | if (s->dma) { |
108 | espdma_memory_read(s->dma_opaque, buf, dmalen); | 108 | espdma_memory_read(s->dma_opaque, buf, dmalen); |
109 | } else { | 109 | } else { |
110 | - buf[0] = 0; | ||
111 | - memcpy(&buf[1], s->ti_buf, dmalen); | ||
112 | - dmalen++; | 110 | + buf[0] = 0; |
111 | + memcpy(&buf[1], s->ti_buf, dmalen); | ||
112 | + dmalen++; | ||
113 | } | 113 | } |
114 | 114 | ||
115 | s->ti_size = 0; | 115 | s->ti_size = 0; |
@@ -124,11 +124,11 @@ static int get_cmd(ESPState *s, uint8_t *buf) | @@ -124,11 +124,11 @@ static int get_cmd(ESPState *s, uint8_t *buf) | ||
124 | 124 | ||
125 | if (target >= MAX_DISKS || !s->scsi_dev[target]) { | 125 | if (target >= MAX_DISKS || !s->scsi_dev[target]) { |
126 | // No such drive | 126 | // No such drive |
127 | - s->rregs[4] = STAT_IN; | ||
128 | - s->rregs[5] = INTR_DC; | ||
129 | - s->rregs[6] = SEQ_0; | ||
130 | - qemu_irq_raise(s->irq); | ||
131 | - return 0; | 127 | + s->rregs[4] = STAT_IN; |
128 | + s->rregs[5] = INTR_DC; | ||
129 | + s->rregs[6] = SEQ_0; | ||
130 | + qemu_irq_raise(s->irq); | ||
131 | + return 0; | ||
132 | } | 132 | } |
133 | s->current_dev = s->scsi_dev[target]; | 133 | s->current_dev = s->scsi_dev[target]; |
134 | return dmalen; | 134 | return dmalen; |
@@ -190,14 +190,14 @@ static void write_response(ESPState *s) | @@ -190,14 +190,14 @@ static void write_response(ESPState *s) | ||
190 | s->ti_buf[1] = 0; | 190 | s->ti_buf[1] = 0; |
191 | if (s->dma) { | 191 | if (s->dma) { |
192 | espdma_memory_write(s->dma_opaque, s->ti_buf, 2); | 192 | espdma_memory_write(s->dma_opaque, s->ti_buf, 2); |
193 | - s->rregs[4] = STAT_IN | STAT_TC | STAT_ST; | ||
194 | - s->rregs[5] = INTR_BS | INTR_FC; | ||
195 | - s->rregs[6] = SEQ_CD; | 193 | + s->rregs[4] = STAT_IN | STAT_TC | STAT_ST; |
194 | + s->rregs[5] = INTR_BS | INTR_FC; | ||
195 | + s->rregs[6] = SEQ_CD; | ||
196 | } else { | 196 | } else { |
197 | - s->ti_size = 2; | ||
198 | - s->ti_rptr = 0; | ||
199 | - s->ti_wptr = 0; | ||
200 | - s->rregs[7] = 2; | 197 | + s->ti_size = 2; |
198 | + s->ti_rptr = 0; | ||
199 | + s->ti_wptr = 0; | ||
200 | + s->rregs[7] = 2; | ||
201 | } | 201 | } |
202 | qemu_irq_raise(s->irq); | 202 | qemu_irq_raise(s->irq); |
203 | } | 203 | } |
@@ -359,9 +359,9 @@ static uint32_t esp_mem_readb(void *opaque, target_phys_addr_t addr) | @@ -359,9 +359,9 @@ static uint32_t esp_mem_readb(void *opaque, target_phys_addr_t addr) | ||
359 | DPRINTF("read reg[%d]: 0x%2.2x\n", saddr, s->rregs[saddr]); | 359 | DPRINTF("read reg[%d]: 0x%2.2x\n", saddr, s->rregs[saddr]); |
360 | switch (saddr) { | 360 | switch (saddr) { |
361 | case 2: | 361 | case 2: |
362 | - // FIFO | ||
363 | - if (s->ti_size > 0) { | ||
364 | - s->ti_size--; | 362 | + // FIFO |
363 | + if (s->ti_size > 0) { | ||
364 | + s->ti_size--; | ||
365 | if ((s->rregs[4] & 6) == 0) { | 365 | if ((s->rregs[4] & 6) == 0) { |
366 | /* Data in/out. */ | 366 | /* Data in/out. */ |
367 | fprintf(stderr, "esp: PIO data read not implemented\n"); | 367 | fprintf(stderr, "esp: PIO data read not implemented\n"); |
@@ -370,20 +370,20 @@ static uint32_t esp_mem_readb(void *opaque, target_phys_addr_t addr) | @@ -370,20 +370,20 @@ static uint32_t esp_mem_readb(void *opaque, target_phys_addr_t addr) | ||
370 | s->rregs[2] = s->ti_buf[s->ti_rptr++]; | 370 | s->rregs[2] = s->ti_buf[s->ti_rptr++]; |
371 | } | 371 | } |
372 | qemu_irq_raise(s->irq); | 372 | qemu_irq_raise(s->irq); |
373 | - } | ||
374 | - if (s->ti_size == 0) { | 373 | + } |
374 | + if (s->ti_size == 0) { | ||
375 | s->ti_rptr = 0; | 375 | s->ti_rptr = 0; |
376 | s->ti_wptr = 0; | 376 | s->ti_wptr = 0; |
377 | } | 377 | } |
378 | - break; | 378 | + break; |
379 | case 5: | 379 | case 5: |
380 | // interrupt | 380 | // interrupt |
381 | // Clear interrupt/error status bits | 381 | // Clear interrupt/error status bits |
382 | s->rregs[4] &= ~(STAT_IN | STAT_GE | STAT_PE); | 382 | s->rregs[4] &= ~(STAT_IN | STAT_GE | STAT_PE); |
383 | - qemu_irq_lower(s->irq); | 383 | + qemu_irq_lower(s->irq); |
384 | break; | 384 | break; |
385 | default: | 385 | default: |
386 | - break; | 386 | + break; |
387 | } | 387 | } |
388 | return s->rregs[saddr]; | 388 | return s->rregs[saddr]; |
389 | } | 389 | } |
@@ -401,7 +401,7 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) | @@ -401,7 +401,7 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) | ||
401 | s->rregs[4] &= ~STAT_TC; | 401 | s->rregs[4] &= ~STAT_TC; |
402 | break; | 402 | break; |
403 | case 2: | 403 | case 2: |
404 | - // FIFO | 404 | + // FIFO |
405 | if (s->do_cmd) { | 405 | if (s->do_cmd) { |
406 | s->cmdbuf[s->cmdlen++] = val & 0xff; | 406 | s->cmdbuf[s->cmdlen++] = val & 0xff; |
407 | } else if ((s->rregs[4] & 6) == 0) { | 407 | } else if ((s->rregs[4] & 6) == 0) { |
@@ -413,73 +413,73 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) | @@ -413,73 +413,73 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) | ||
413 | s->ti_size++; | 413 | s->ti_size++; |
414 | s->ti_buf[s->ti_wptr++] = val & 0xff; | 414 | s->ti_buf[s->ti_wptr++] = val & 0xff; |
415 | } | 415 | } |
416 | - break; | 416 | + break; |
417 | case 3: | 417 | case 3: |
418 | s->rregs[saddr] = val; | 418 | s->rregs[saddr] = val; |
419 | - // Command | ||
420 | - if (val & 0x80) { | ||
421 | - s->dma = 1; | 419 | + // Command |
420 | + if (val & 0x80) { | ||
421 | + s->dma = 1; | ||
422 | /* Reload DMA counter. */ | 422 | /* Reload DMA counter. */ |
423 | s->rregs[0] = s->wregs[0]; | 423 | s->rregs[0] = s->wregs[0]; |
424 | s->rregs[1] = s->wregs[1]; | 424 | s->rregs[1] = s->wregs[1]; |
425 | - } else { | ||
426 | - s->dma = 0; | ||
427 | - } | ||
428 | - switch(val & 0x7f) { | ||
429 | - case 0: | ||
430 | - DPRINTF("NOP (%2.2x)\n", val); | ||
431 | - break; | ||
432 | - case 1: | ||
433 | - DPRINTF("Flush FIFO (%2.2x)\n", val); | 425 | + } else { |
426 | + s->dma = 0; | ||
427 | + } | ||
428 | + switch(val & 0x7f) { | ||
429 | + case 0: | ||
430 | + DPRINTF("NOP (%2.2x)\n", val); | ||
431 | + break; | ||
432 | + case 1: | ||
433 | + DPRINTF("Flush FIFO (%2.2x)\n", val); | ||
434 | //s->ti_size = 0; | 434 | //s->ti_size = 0; |
435 | - s->rregs[5] = INTR_FC; | ||
436 | - s->rregs[6] = 0; | ||
437 | - break; | ||
438 | - case 2: | ||
439 | - DPRINTF("Chip reset (%2.2x)\n", val); | ||
440 | - esp_reset(s); | ||
441 | - break; | ||
442 | - case 3: | ||
443 | - DPRINTF("Bus reset (%2.2x)\n", val); | ||
444 | - s->rregs[5] = INTR_RST; | 435 | + s->rregs[5] = INTR_FC; |
436 | + s->rregs[6] = 0; | ||
437 | + break; | ||
438 | + case 2: | ||
439 | + DPRINTF("Chip reset (%2.2x)\n", val); | ||
440 | + esp_reset(s); | ||
441 | + break; | ||
442 | + case 3: | ||
443 | + DPRINTF("Bus reset (%2.2x)\n", val); | ||
444 | + s->rregs[5] = INTR_RST; | ||
445 | if (!(s->wregs[8] & 0x40)) { | 445 | if (!(s->wregs[8] & 0x40)) { |
446 | qemu_irq_raise(s->irq); | 446 | qemu_irq_raise(s->irq); |
447 | } | 447 | } |
448 | - break; | ||
449 | - case 0x10: | ||
450 | - handle_ti(s); | ||
451 | - break; | ||
452 | - case 0x11: | ||
453 | - DPRINTF("Initiator Command Complete Sequence (%2.2x)\n", val); | ||
454 | - write_response(s); | ||
455 | - break; | ||
456 | - case 0x12: | ||
457 | - DPRINTF("Message Accepted (%2.2x)\n", val); | ||
458 | - write_response(s); | ||
459 | - s->rregs[5] = INTR_DC; | ||
460 | - s->rregs[6] = 0; | ||
461 | - break; | ||
462 | - case 0x1a: | ||
463 | - DPRINTF("Set ATN (%2.2x)\n", val); | ||
464 | - break; | ||
465 | - case 0x42: | ||
466 | - DPRINTF("Set ATN (%2.2x)\n", val); | ||
467 | - handle_satn(s); | ||
468 | - break; | ||
469 | - case 0x43: | ||
470 | - DPRINTF("Set ATN & stop (%2.2x)\n", val); | ||
471 | - handle_satn_stop(s); | ||
472 | - break; | 448 | + break; |
449 | + case 0x10: | ||
450 | + handle_ti(s); | ||
451 | + break; | ||
452 | + case 0x11: | ||
453 | + DPRINTF("Initiator Command Complete Sequence (%2.2x)\n", val); | ||
454 | + write_response(s); | ||
455 | + break; | ||
456 | + case 0x12: | ||
457 | + DPRINTF("Message Accepted (%2.2x)\n", val); | ||
458 | + write_response(s); | ||
459 | + s->rregs[5] = INTR_DC; | ||
460 | + s->rregs[6] = 0; | ||
461 | + break; | ||
462 | + case 0x1a: | ||
463 | + DPRINTF("Set ATN (%2.2x)\n", val); | ||
464 | + break; | ||
465 | + case 0x42: | ||
466 | + DPRINTF("Set ATN (%2.2x)\n", val); | ||
467 | + handle_satn(s); | ||
468 | + break; | ||
469 | + case 0x43: | ||
470 | + DPRINTF("Set ATN & stop (%2.2x)\n", val); | ||
471 | + handle_satn_stop(s); | ||
472 | + break; | ||
473 | case 0x44: | 473 | case 0x44: |
474 | DPRINTF("Enable selection (%2.2x)\n", val); | 474 | DPRINTF("Enable selection (%2.2x)\n", val); |
475 | break; | 475 | break; |
476 | - default: | ||
477 | - DPRINTF("Unhandled ESP command (%2.2x)\n", val); | ||
478 | - break; | ||
479 | - } | ||
480 | - break; | 476 | + default: |
477 | + DPRINTF("Unhandled ESP command (%2.2x)\n", val); | ||
478 | + break; | ||
479 | + } | ||
480 | + break; | ||
481 | case 4 ... 7: | 481 | case 4 ... 7: |
482 | - break; | 482 | + break; |
483 | case 8: | 483 | case 8: |
484 | s->rregs[saddr] = val; | 484 | s->rregs[saddr] = val; |
485 | break; | 485 | break; |
@@ -492,7 +492,7 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) | @@ -492,7 +492,7 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) | ||
492 | s->rregs[saddr] = val; | 492 | s->rregs[saddr] = val; |
493 | break; | 493 | break; |
494 | default: | 494 | default: |
495 | - break; | 495 | + break; |
496 | } | 496 | } |
497 | s->wregs[saddr] = val; | 497 | s->wregs[saddr] = val; |
498 | } | 498 | } |
hw/iommu.c
@@ -81,7 +81,7 @@ do { printf("IOMMU: " fmt , ##args); } while (0) | @@ -81,7 +81,7 @@ do { printf("IOMMU: " fmt , ##args); } while (0) | ||
81 | #define IOMMU_SBCFG_BA16 0x00000004 /* Slave supports 16 byte bursts */ | 81 | #define IOMMU_SBCFG_BA16 0x00000004 /* Slave supports 16 byte bursts */ |
82 | #define IOMMU_SBCFG_BA8 0x00000002 /* Slave supports 8 byte bursts */ | 82 | #define IOMMU_SBCFG_BA8 0x00000002 /* Slave supports 8 byte bursts */ |
83 | #define IOMMU_SBCFG_BYPASS 0x00000001 /* Bypass IOMMU, treat all addresses | 83 | #define IOMMU_SBCFG_BYPASS 0x00000001 /* Bypass IOMMU, treat all addresses |
84 | - produced by this device as pure | 84 | + produced by this device as pure |
85 | physical. */ | 85 | physical. */ |
86 | #define IOMMU_SBCFG_MASK 0x00010003 | 86 | #define IOMMU_SBCFG_MASK 0x00010003 |
87 | 87 | ||
@@ -98,7 +98,7 @@ do { printf("IOMMU: " fmt , ##args); } while (0) | @@ -98,7 +98,7 @@ do { printf("IOMMU: " fmt , ##args); } while (0) | ||
98 | 98 | ||
99 | #define PAGE_SHIFT 12 | 99 | #define PAGE_SHIFT 12 |
100 | #define PAGE_SIZE (1 << PAGE_SHIFT) | 100 | #define PAGE_SIZE (1 << PAGE_SHIFT) |
101 | -#define PAGE_MASK (PAGE_SIZE - 1) | 101 | +#define PAGE_MASK (PAGE_SIZE - 1) |
102 | 102 | ||
103 | typedef struct IOMMUState { | 103 | typedef struct IOMMUState { |
104 | target_phys_addr_t addr; | 104 | target_phys_addr_t addr; |
@@ -114,9 +114,9 @@ static uint32_t iommu_mem_readw(void *opaque, target_phys_addr_t addr) | @@ -114,9 +114,9 @@ static uint32_t iommu_mem_readw(void *opaque, target_phys_addr_t addr) | ||
114 | saddr = (addr - s->addr) >> 2; | 114 | saddr = (addr - s->addr) >> 2; |
115 | switch (saddr) { | 115 | switch (saddr) { |
116 | default: | 116 | default: |
117 | - DPRINTF("read reg[%d] = %x\n", (int)saddr, s->regs[saddr]); | ||
118 | - return s->regs[saddr]; | ||
119 | - break; | 117 | + DPRINTF("read reg[%d] = %x\n", (int)saddr, s->regs[saddr]); |
118 | + return s->regs[saddr]; | ||
119 | + break; | ||
120 | } | 120 | } |
121 | return 0; | 121 | return 0; |
122 | } | 122 | } |
@@ -130,61 +130,61 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val | @@ -130,61 +130,61 @@ static void iommu_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val | ||
130 | DPRINTF("write reg[%d] = %x\n", (int)saddr, val); | 130 | DPRINTF("write reg[%d] = %x\n", (int)saddr, val); |
131 | switch (saddr) { | 131 | switch (saddr) { |
132 | case IOMMU_CTRL: | 132 | case IOMMU_CTRL: |
133 | - switch (val & IOMMU_CTRL_RNGE) { | ||
134 | - case IOMMU_RNGE_16MB: | ||
135 | - s->iostart = 0xffffffffff000000ULL; | ||
136 | - break; | ||
137 | - case IOMMU_RNGE_32MB: | ||
138 | - s->iostart = 0xfffffffffe000000ULL; | ||
139 | - break; | ||
140 | - case IOMMU_RNGE_64MB: | ||
141 | - s->iostart = 0xfffffffffc000000ULL; | ||
142 | - break; | ||
143 | - case IOMMU_RNGE_128MB: | ||
144 | - s->iostart = 0xfffffffff8000000ULL; | ||
145 | - break; | ||
146 | - case IOMMU_RNGE_256MB: | ||
147 | - s->iostart = 0xfffffffff0000000ULL; | ||
148 | - break; | ||
149 | - case IOMMU_RNGE_512MB: | ||
150 | - s->iostart = 0xffffffffe0000000ULL; | ||
151 | - break; | ||
152 | - case IOMMU_RNGE_1GB: | ||
153 | - s->iostart = 0xffffffffc0000000ULL; | ||
154 | - break; | ||
155 | - default: | ||
156 | - case IOMMU_RNGE_2GB: | ||
157 | - s->iostart = 0xffffffff80000000ULL; | ||
158 | - break; | ||
159 | - } | ||
160 | - DPRINTF("iostart = " TARGET_FMT_plx "\n", s->iostart); | ||
161 | - s->regs[saddr] = ((val & IOMMU_CTRL_MASK) | IOMMU_VERSION); | ||
162 | - break; | 133 | + switch (val & IOMMU_CTRL_RNGE) { |
134 | + case IOMMU_RNGE_16MB: | ||
135 | + s->iostart = 0xffffffffff000000ULL; | ||
136 | + break; | ||
137 | + case IOMMU_RNGE_32MB: | ||
138 | + s->iostart = 0xfffffffffe000000ULL; | ||
139 | + break; | ||
140 | + case IOMMU_RNGE_64MB: | ||
141 | + s->iostart = 0xfffffffffc000000ULL; | ||
142 | + break; | ||
143 | + case IOMMU_RNGE_128MB: | ||
144 | + s->iostart = 0xfffffffff8000000ULL; | ||
145 | + break; | ||
146 | + case IOMMU_RNGE_256MB: | ||
147 | + s->iostart = 0xfffffffff0000000ULL; | ||
148 | + break; | ||
149 | + case IOMMU_RNGE_512MB: | ||
150 | + s->iostart = 0xffffffffe0000000ULL; | ||
151 | + break; | ||
152 | + case IOMMU_RNGE_1GB: | ||
153 | + s->iostart = 0xffffffffc0000000ULL; | ||
154 | + break; | ||
155 | + default: | ||
156 | + case IOMMU_RNGE_2GB: | ||
157 | + s->iostart = 0xffffffff80000000ULL; | ||
158 | + break; | ||
159 | + } | ||
160 | + DPRINTF("iostart = " TARGET_FMT_plx "\n", s->iostart); | ||
161 | + s->regs[saddr] = ((val & IOMMU_CTRL_MASK) | IOMMU_VERSION); | ||
162 | + break; | ||
163 | case IOMMU_BASE: | 163 | case IOMMU_BASE: |
164 | - s->regs[saddr] = val & IOMMU_BASE_MASK; | ||
165 | - break; | 164 | + s->regs[saddr] = val & IOMMU_BASE_MASK; |
165 | + break; | ||
166 | case IOMMU_TLBFLUSH: | 166 | case IOMMU_TLBFLUSH: |
167 | - DPRINTF("tlb flush %x\n", val); | ||
168 | - s->regs[saddr] = val & IOMMU_TLBFLUSH_MASK; | ||
169 | - break; | 167 | + DPRINTF("tlb flush %x\n", val); |
168 | + s->regs[saddr] = val & IOMMU_TLBFLUSH_MASK; | ||
169 | + break; | ||
170 | case IOMMU_PGFLUSH: | 170 | case IOMMU_PGFLUSH: |
171 | - DPRINTF("page flush %x\n", val); | ||
172 | - s->regs[saddr] = val & IOMMU_PGFLUSH_MASK; | ||
173 | - break; | 171 | + DPRINTF("page flush %x\n", val); |
172 | + s->regs[saddr] = val & IOMMU_PGFLUSH_MASK; | ||
173 | + break; | ||
174 | case IOMMU_SBCFG0: | 174 | case IOMMU_SBCFG0: |
175 | case IOMMU_SBCFG1: | 175 | case IOMMU_SBCFG1: |
176 | case IOMMU_SBCFG2: | 176 | case IOMMU_SBCFG2: |
177 | case IOMMU_SBCFG3: | 177 | case IOMMU_SBCFG3: |
178 | - s->regs[saddr] = val & IOMMU_SBCFG_MASK; | ||
179 | - break; | 178 | + s->regs[saddr] = val & IOMMU_SBCFG_MASK; |
179 | + break; | ||
180 | case IOMMU_ARBEN: | 180 | case IOMMU_ARBEN: |
181 | // XXX implement SBus probing: fault when reading unmapped | 181 | // XXX implement SBus probing: fault when reading unmapped |
182 | // addresses, fault cause and address stored to MMU/IOMMU | 182 | // addresses, fault cause and address stored to MMU/IOMMU |
183 | - s->regs[saddr] = (val & IOMMU_ARBEN_MASK) | IOMMU_MID; | ||
184 | - break; | 183 | + s->regs[saddr] = (val & IOMMU_ARBEN_MASK) | IOMMU_MID; |
184 | + break; | ||
185 | default: | 185 | default: |
186 | - s->regs[saddr] = val; | ||
187 | - break; | 186 | + s->regs[saddr] = val; |
187 | + break; | ||
188 | } | 188 | } |
189 | } | 189 | } |
190 | 190 | ||
@@ -283,7 +283,7 @@ static void iommu_save(QEMUFile *f, void *opaque) | @@ -283,7 +283,7 @@ static void iommu_save(QEMUFile *f, void *opaque) | ||
283 | int i; | 283 | int i; |
284 | 284 | ||
285 | for (i = 0; i < IOMMU_NREGS; i++) | 285 | for (i = 0; i < IOMMU_NREGS; i++) |
286 | - qemu_put_be32s(f, &s->regs[i]); | 286 | + qemu_put_be32s(f, &s->regs[i]); |
287 | qemu_put_be64s(f, &s->iostart); | 287 | qemu_put_be64s(f, &s->iostart); |
288 | } | 288 | } |
289 | 289 |
hw/slavio_intctl.c
@@ -100,21 +100,21 @@ static void slavio_intctl_mem_writel(void *opaque, target_phys_addr_t addr, uint | @@ -100,21 +100,21 @@ static void slavio_intctl_mem_writel(void *opaque, target_phys_addr_t addr, uint | ||
100 | DPRINTF("write cpu %d reg 0x" TARGET_FMT_plx " = %x\n", cpu, addr, val); | 100 | DPRINTF("write cpu %d reg 0x" TARGET_FMT_plx " = %x\n", cpu, addr, val); |
101 | switch (saddr) { | 101 | switch (saddr) { |
102 | case 1: // clear pending softints | 102 | case 1: // clear pending softints |
103 | - if (val & 0x4000) | ||
104 | - val |= 80000000; | ||
105 | - val &= 0xfffe0000; | ||
106 | - s->intreg_pending[cpu] &= ~val; | 103 | + if (val & 0x4000) |
104 | + val |= 80000000; | ||
105 | + val &= 0xfffe0000; | ||
106 | + s->intreg_pending[cpu] &= ~val; | ||
107 | slavio_check_interrupts(s); | 107 | slavio_check_interrupts(s); |
108 | - DPRINTF("Cleared cpu %d irq mask %x, curmask %x\n", cpu, val, s->intreg_pending[cpu]); | ||
109 | - break; | 108 | + DPRINTF("Cleared cpu %d irq mask %x, curmask %x\n", cpu, val, s->intreg_pending[cpu]); |
109 | + break; | ||
110 | case 2: // set softint | 110 | case 2: // set softint |
111 | - val &= 0xfffe0000; | ||
112 | - s->intreg_pending[cpu] |= val; | 111 | + val &= 0xfffe0000; |
112 | + s->intreg_pending[cpu] |= val; | ||
113 | slavio_check_interrupts(s); | 113 | slavio_check_interrupts(s); |
114 | - DPRINTF("Set cpu %d irq mask %x, curmask %x\n", cpu, val, s->intreg_pending[cpu]); | ||
115 | - break; | 114 | + DPRINTF("Set cpu %d irq mask %x, curmask %x\n", cpu, val, s->intreg_pending[cpu]); |
115 | + break; | ||
116 | default: | 116 | default: |
117 | - break; | 117 | + break; |
118 | } | 118 | } |
119 | } | 119 | } |
120 | 120 | ||
@@ -165,27 +165,27 @@ static void slavio_intctlm_mem_writel(void *opaque, target_phys_addr_t addr, uin | @@ -165,27 +165,27 @@ static void slavio_intctlm_mem_writel(void *opaque, target_phys_addr_t addr, uin | ||
165 | DPRINTF("write system reg 0x" TARGET_FMT_plx " = %x\n", addr, val); | 165 | DPRINTF("write system reg 0x" TARGET_FMT_plx " = %x\n", addr, val); |
166 | switch (saddr) { | 166 | switch (saddr) { |
167 | case 2: // clear (enable) | 167 | case 2: // clear (enable) |
168 | - // Force clear unused bits | ||
169 | - val &= ~0x4fb2007f; | ||
170 | - s->intregm_disabled &= ~val; | ||
171 | - DPRINTF("Enabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); | ||
172 | - slavio_check_interrupts(s); | ||
173 | - break; | 168 | + // Force clear unused bits |
169 | + val &= ~0x4fb2007f; | ||
170 | + s->intregm_disabled &= ~val; | ||
171 | + DPRINTF("Enabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); | ||
172 | + slavio_check_interrupts(s); | ||
173 | + break; | ||
174 | case 3: // set (disable, clear pending) | 174 | case 3: // set (disable, clear pending) |
175 | - // Force clear unused bits | ||
176 | - val &= ~0x4fb2007f; | ||
177 | - s->intregm_disabled |= val; | ||
178 | - s->intregm_pending &= ~val; | 175 | + // Force clear unused bits |
176 | + val &= ~0x4fb2007f; | ||
177 | + s->intregm_disabled |= val; | ||
178 | + s->intregm_pending &= ~val; | ||
179 | slavio_check_interrupts(s); | 179 | slavio_check_interrupts(s); |
180 | - DPRINTF("Disabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); | ||
181 | - break; | 180 | + DPRINTF("Disabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); |
181 | + break; | ||
182 | case 4: | 182 | case 4: |
183 | - s->target_cpu = val & (MAX_CPUS - 1); | 183 | + s->target_cpu = val & (MAX_CPUS - 1); |
184 | slavio_check_interrupts(s); | 184 | slavio_check_interrupts(s); |
185 | - DPRINTF("Set master irq cpu %d\n", s->target_cpu); | ||
186 | - break; | 185 | + DPRINTF("Set master irq cpu %d\n", s->target_cpu); |
186 | + break; | ||
187 | default: | 187 | default: |
188 | - break; | 188 | + break; |
189 | } | 189 | } |
190 | } | 190 | } |
191 | 191 | ||
@@ -207,7 +207,7 @@ void slavio_pic_info(void *opaque) | @@ -207,7 +207,7 @@ void slavio_pic_info(void *opaque) | ||
207 | int i; | 207 | int i; |
208 | 208 | ||
209 | for (i = 0; i < MAX_CPUS; i++) { | 209 | for (i = 0; i < MAX_CPUS; i++) { |
210 | - term_printf("per-cpu %d: pending 0x%08x\n", i, s->intreg_pending[i]); | 210 | + term_printf("per-cpu %d: pending 0x%08x\n", i, s->intreg_pending[i]); |
211 | } | 211 | } |
212 | term_printf("master: pending 0x%08x, disabled 0x%08x\n", s->intregm_pending, s->intregm_disabled); | 212 | term_printf("master: pending 0x%08x, disabled 0x%08x\n", s->intregm_pending, s->intregm_disabled); |
213 | } | 213 | } |
@@ -310,7 +310,7 @@ static void slavio_intctl_save(QEMUFile *f, void *opaque) | @@ -310,7 +310,7 @@ static void slavio_intctl_save(QEMUFile *f, void *opaque) | ||
310 | int i; | 310 | int i; |
311 | 311 | ||
312 | for (i = 0; i < MAX_CPUS; i++) { | 312 | for (i = 0; i < MAX_CPUS; i++) { |
313 | - qemu_put_be32s(f, &s->intreg_pending[i]); | 313 | + qemu_put_be32s(f, &s->intreg_pending[i]); |
314 | } | 314 | } |
315 | qemu_put_be32s(f, &s->intregm_pending); | 315 | qemu_put_be32s(f, &s->intregm_pending); |
316 | qemu_put_be32s(f, &s->intregm_disabled); | 316 | qemu_put_be32s(f, &s->intregm_disabled); |
@@ -326,7 +326,7 @@ static int slavio_intctl_load(QEMUFile *f, void *opaque, int version_id) | @@ -326,7 +326,7 @@ static int slavio_intctl_load(QEMUFile *f, void *opaque, int version_id) | ||
326 | return -EINVAL; | 326 | return -EINVAL; |
327 | 327 | ||
328 | for (i = 0; i < MAX_CPUS; i++) { | 328 | for (i = 0; i < MAX_CPUS; i++) { |
329 | - qemu_get_be32s(f, &s->intreg_pending[i]); | 329 | + qemu_get_be32s(f, &s->intreg_pending[i]); |
330 | } | 330 | } |
331 | qemu_get_be32s(f, &s->intregm_pending); | 331 | qemu_get_be32s(f, &s->intregm_pending); |
332 | qemu_get_be32s(f, &s->intregm_disabled); | 332 | qemu_get_be32s(f, &s->intregm_disabled); |
@@ -341,7 +341,7 @@ static void slavio_intctl_reset(void *opaque) | @@ -341,7 +341,7 @@ static void slavio_intctl_reset(void *opaque) | ||
341 | int i; | 341 | int i; |
342 | 342 | ||
343 | for (i = 0; i < MAX_CPUS; i++) { | 343 | for (i = 0; i < MAX_CPUS; i++) { |
344 | - s->intreg_pending[i] = 0; | 344 | + s->intreg_pending[i] = 0; |
345 | } | 345 | } |
346 | s->intregm_disabled = ~0xffb2007f; | 346 | s->intregm_disabled = ~0xffb2007f; |
347 | s->intregm_pending = 0; | 347 | s->intregm_pending = 0; |
@@ -363,8 +363,8 @@ void *slavio_intctl_init(target_phys_addr_t addr, target_phys_addr_t addrg, | @@ -363,8 +363,8 @@ void *slavio_intctl_init(target_phys_addr_t addr, target_phys_addr_t addrg, | ||
363 | 363 | ||
364 | s->intbit_to_level = intbit_to_level; | 364 | s->intbit_to_level = intbit_to_level; |
365 | for (i = 0; i < MAX_CPUS; i++) { | 365 | for (i = 0; i < MAX_CPUS; i++) { |
366 | - slavio_intctl_io_memory = cpu_register_io_memory(0, slavio_intctl_mem_read, slavio_intctl_mem_write, s); | ||
367 | - cpu_register_physical_memory(addr + i * TARGET_PAGE_SIZE, INTCTL_SIZE, | 366 | + slavio_intctl_io_memory = cpu_register_io_memory(0, slavio_intctl_mem_read, slavio_intctl_mem_write, s); |
367 | + cpu_register_physical_memory(addr + i * TARGET_PAGE_SIZE, INTCTL_SIZE, | ||
368 | slavio_intctl_io_memory); | 368 | slavio_intctl_io_memory); |
369 | s->cpu_irqs[i] = parent_irq[i]; | 369 | s->cpu_irqs[i] = parent_irq[i]; |
370 | } | 370 | } |
hw/slavio_misc.c
@@ -76,9 +76,9 @@ void slavio_set_power_fail(void *opaque, int power_failing) | @@ -76,9 +76,9 @@ void slavio_set_power_fail(void *opaque, int power_failing) | ||
76 | 76 | ||
77 | MISC_DPRINTF("Power fail: %d, config: %d\n", power_failing, s->config); | 77 | MISC_DPRINTF("Power fail: %d, config: %d\n", power_failing, s->config); |
78 | if (power_failing && (s->config & 0x8)) { | 78 | if (power_failing && (s->config & 0x8)) { |
79 | - s->aux2 |= 0x4; | 79 | + s->aux2 |= 0x4; |
80 | } else { | 80 | } else { |
81 | - s->aux2 &= ~0x4; | 81 | + s->aux2 &= ~0x4; |
82 | } | 82 | } |
83 | slavio_misc_update_irq(s); | 83 | slavio_misc_update_irq(s); |
84 | } | 84 | } |
@@ -89,44 +89,44 @@ static void slavio_misc_mem_writeb(void *opaque, target_phys_addr_t addr, uint32 | @@ -89,44 +89,44 @@ static void slavio_misc_mem_writeb(void *opaque, target_phys_addr_t addr, uint32 | ||
89 | 89 | ||
90 | switch (addr & 0xfff0000) { | 90 | switch (addr & 0xfff0000) { |
91 | case 0x1800000: | 91 | case 0x1800000: |
92 | - MISC_DPRINTF("Write config %2.2x\n", val & 0xff); | ||
93 | - s->config = val & 0xff; | ||
94 | - slavio_misc_update_irq(s); | ||
95 | - break; | 92 | + MISC_DPRINTF("Write config %2.2x\n", val & 0xff); |
93 | + s->config = val & 0xff; | ||
94 | + slavio_misc_update_irq(s); | ||
95 | + break; | ||
96 | case 0x1900000: | 96 | case 0x1900000: |
97 | - MISC_DPRINTF("Write aux1 %2.2x\n", val & 0xff); | ||
98 | - s->aux1 = val & 0xff; | ||
99 | - break; | 97 | + MISC_DPRINTF("Write aux1 %2.2x\n", val & 0xff); |
98 | + s->aux1 = val & 0xff; | ||
99 | + break; | ||
100 | case 0x1910000: | 100 | case 0x1910000: |
101 | - val &= 0x3; | ||
102 | - MISC_DPRINTF("Write aux2 %2.2x\n", val); | ||
103 | - val |= s->aux2 & 0x4; | ||
104 | - if (val & 0x2) // Clear Power Fail int | ||
105 | - val &= 0x1; | ||
106 | - s->aux2 = val; | ||
107 | - if (val & 1) | ||
108 | - qemu_system_shutdown_request(); | ||
109 | - slavio_misc_update_irq(s); | ||
110 | - break; | 101 | + val &= 0x3; |
102 | + MISC_DPRINTF("Write aux2 %2.2x\n", val); | ||
103 | + val |= s->aux2 & 0x4; | ||
104 | + if (val & 0x2) // Clear Power Fail int | ||
105 | + val &= 0x1; | ||
106 | + s->aux2 = val; | ||
107 | + if (val & 1) | ||
108 | + qemu_system_shutdown_request(); | ||
109 | + slavio_misc_update_irq(s); | ||
110 | + break; | ||
111 | case 0x1a00000: | 111 | case 0x1a00000: |
112 | - MISC_DPRINTF("Write diag %2.2x\n", val & 0xff); | ||
113 | - s->diag = val & 0xff; | ||
114 | - break; | 112 | + MISC_DPRINTF("Write diag %2.2x\n", val & 0xff); |
113 | + s->diag = val & 0xff; | ||
114 | + break; | ||
115 | case 0x1b00000: | 115 | case 0x1b00000: |
116 | - MISC_DPRINTF("Write modem control %2.2x\n", val & 0xff); | ||
117 | - s->mctrl = val & 0xff; | ||
118 | - break; | 116 | + MISC_DPRINTF("Write modem control %2.2x\n", val & 0xff); |
117 | + s->mctrl = val & 0xff; | ||
118 | + break; | ||
119 | case 0x1f00000: | 119 | case 0x1f00000: |
120 | - MISC_DPRINTF("Write system control %2.2x\n", val & 0xff); | ||
121 | - if (val & 1) { | ||
122 | - s->sysctrl = 0x2; | ||
123 | - qemu_system_reset_request(); | ||
124 | - } | ||
125 | - break; | 120 | + MISC_DPRINTF("Write system control %2.2x\n", val & 0xff); |
121 | + if (val & 1) { | ||
122 | + s->sysctrl = 0x2; | ||
123 | + qemu_system_reset_request(); | ||
124 | + } | ||
125 | + break; | ||
126 | case 0xa000000: | 126 | case 0xa000000: |
127 | - MISC_DPRINTF("Write power management %2.2x\n", val & 0xff); | 127 | + MISC_DPRINTF("Write power management %2.2x\n", val & 0xff); |
128 | cpu_interrupt(cpu_single_env, CPU_INTERRUPT_HALT); | 128 | cpu_interrupt(cpu_single_env, CPU_INTERRUPT_HALT); |
129 | - break; | 129 | + break; |
130 | } | 130 | } |
131 | } | 131 | } |
132 | 132 | ||
@@ -137,32 +137,32 @@ static uint32_t slavio_misc_mem_readb(void *opaque, target_phys_addr_t addr) | @@ -137,32 +137,32 @@ static uint32_t slavio_misc_mem_readb(void *opaque, target_phys_addr_t addr) | ||
137 | 137 | ||
138 | switch (addr & 0xfff0000) { | 138 | switch (addr & 0xfff0000) { |
139 | case 0x1800000: | 139 | case 0x1800000: |
140 | - ret = s->config; | ||
141 | - MISC_DPRINTF("Read config %2.2x\n", ret); | ||
142 | - break; | 140 | + ret = s->config; |
141 | + MISC_DPRINTF("Read config %2.2x\n", ret); | ||
142 | + break; | ||
143 | case 0x1900000: | 143 | case 0x1900000: |
144 | - ret = s->aux1; | ||
145 | - MISC_DPRINTF("Read aux1 %2.2x\n", ret); | ||
146 | - break; | 144 | + ret = s->aux1; |
145 | + MISC_DPRINTF("Read aux1 %2.2x\n", ret); | ||
146 | + break; | ||
147 | case 0x1910000: | 147 | case 0x1910000: |
148 | - ret = s->aux2; | ||
149 | - MISC_DPRINTF("Read aux2 %2.2x\n", ret); | ||
150 | - break; | 148 | + ret = s->aux2; |
149 | + MISC_DPRINTF("Read aux2 %2.2x\n", ret); | ||
150 | + break; | ||
151 | case 0x1a00000: | 151 | case 0x1a00000: |
152 | - ret = s->diag; | ||
153 | - MISC_DPRINTF("Read diag %2.2x\n", ret); | ||
154 | - break; | 152 | + ret = s->diag; |
153 | + MISC_DPRINTF("Read diag %2.2x\n", ret); | ||
154 | + break; | ||
155 | case 0x1b00000: | 155 | case 0x1b00000: |
156 | - ret = s->mctrl; | ||
157 | - MISC_DPRINTF("Read modem control %2.2x\n", ret); | ||
158 | - break; | 156 | + ret = s->mctrl; |
157 | + MISC_DPRINTF("Read modem control %2.2x\n", ret); | ||
158 | + break; | ||
159 | case 0x1f00000: | 159 | case 0x1f00000: |
160 | - MISC_DPRINTF("Read system control %2.2x\n", ret); | ||
161 | - ret = s->sysctrl; | ||
162 | - break; | 160 | + MISC_DPRINTF("Read system control %2.2x\n", ret); |
161 | + ret = s->sysctrl; | ||
162 | + break; | ||
163 | case 0xa000000: | 163 | case 0xa000000: |
164 | - MISC_DPRINTF("Read power management %2.2x\n", ret); | ||
165 | - break; | 164 | + MISC_DPRINTF("Read power management %2.2x\n", ret); |
165 | + break; | ||
166 | } | 166 | } |
167 | return ret; | 167 | return ret; |
168 | } | 168 | } |
hw/slavio_serial.c
@@ -139,7 +139,7 @@ static uint32_t get_queue(void *opaque) | @@ -139,7 +139,7 @@ static uint32_t get_queue(void *opaque) | ||
139 | int val; | 139 | int val; |
140 | 140 | ||
141 | if (q->count == 0) { | 141 | if (q->count == 0) { |
142 | - return 0; | 142 | + return 0; |
143 | } else { | 143 | } else { |
144 | val = q->data[q->rptr]; | 144 | val = q->data[q->rptr]; |
145 | if (++q->rptr == SERIO_QUEUE_SIZE) | 145 | if (++q->rptr == SERIO_QUEUE_SIZE) |
@@ -148,17 +148,17 @@ static uint32_t get_queue(void *opaque) | @@ -148,17 +148,17 @@ static uint32_t get_queue(void *opaque) | ||
148 | } | 148 | } |
149 | SER_DPRINTF("channel %c get 0x%02x\n", CHN_C(s), val); | 149 | SER_DPRINTF("channel %c get 0x%02x\n", CHN_C(s), val); |
150 | if (q->count > 0) | 150 | if (q->count > 0) |
151 | - serial_receive_byte(s, 0); | 151 | + serial_receive_byte(s, 0); |
152 | return val; | 152 | return val; |
153 | } | 153 | } |
154 | 154 | ||
155 | static int slavio_serial_update_irq_chn(ChannelState *s) | 155 | static int slavio_serial_update_irq_chn(ChannelState *s) |
156 | { | 156 | { |
157 | if ((s->wregs[1] & 1) && // interrupts enabled | 157 | if ((s->wregs[1] & 1) && // interrupts enabled |
158 | - (((s->wregs[1] & 2) && s->txint == 1) || // tx ints enabled, pending | ||
159 | - ((((s->wregs[1] & 0x18) == 8) || ((s->wregs[1] & 0x18) == 0x10)) && | ||
160 | - s->rxint == 1) || // rx ints enabled, pending | ||
161 | - ((s->wregs[15] & 0x80) && (s->rregs[0] & 0x80)))) { // break int e&p | 158 | + (((s->wregs[1] & 2) && s->txint == 1) || // tx ints enabled, pending |
159 | + ((((s->wregs[1] & 0x18) == 8) || ((s->wregs[1] & 0x18) == 0x10)) && | ||
160 | + s->rxint == 1) || // rx ints enabled, pending | ||
161 | + ((s->wregs[15] & 0x80) && (s->rregs[0] & 0x80)))) { // break int e&p | ||
162 | return 1; | 162 | return 1; |
163 | } | 163 | } |
164 | return 0; | 164 | return 0; |
@@ -181,8 +181,8 @@ static void slavio_serial_reset_chn(ChannelState *s) | @@ -181,8 +181,8 @@ static void slavio_serial_reset_chn(ChannelState *s) | ||
181 | 181 | ||
182 | s->reg = 0; | 182 | s->reg = 0; |
183 | for (i = 0; i < SERIAL_SIZE; i++) { | 183 | for (i = 0; i < SERIAL_SIZE; i++) { |
184 | - s->rregs[i] = 0; | ||
185 | - s->wregs[i] = 0; | 184 | + s->rregs[i] = 0; |
185 | + s->wregs[i] = 0; | ||
186 | } | 186 | } |
187 | s->wregs[4] = 4; | 187 | s->wregs[4] = 4; |
188 | s->wregs[9] = 0xc0; | 188 | s->wregs[9] = 0xc0; |
@@ -367,82 +367,82 @@ static void slavio_serial_mem_writeb(void *opaque, target_phys_addr_t addr, uint | @@ -367,82 +367,82 @@ static void slavio_serial_mem_writeb(void *opaque, target_phys_addr_t addr, uint | ||
367 | s = &serial->chn[channel]; | 367 | s = &serial->chn[channel]; |
368 | switch (saddr) { | 368 | switch (saddr) { |
369 | case 0: | 369 | case 0: |
370 | - SER_DPRINTF("Write channel %c, reg[%d] = %2.2x\n", CHN_C(s), s->reg, val & 0xff); | ||
371 | - newreg = 0; | ||
372 | - switch (s->reg) { | ||
373 | - case 0: | ||
374 | - newreg = val & 7; | ||
375 | - val &= 0x38; | ||
376 | - switch (val) { | ||
377 | - case 8: | ||
378 | - newreg |= 0x8; | ||
379 | - break; | ||
380 | - case 0x28: | 370 | + SER_DPRINTF("Write channel %c, reg[%d] = %2.2x\n", CHN_C(s), s->reg, val & 0xff); |
371 | + newreg = 0; | ||
372 | + switch (s->reg) { | ||
373 | + case 0: | ||
374 | + newreg = val & 7; | ||
375 | + val &= 0x38; | ||
376 | + switch (val) { | ||
377 | + case 8: | ||
378 | + newreg |= 0x8; | ||
379 | + break; | ||
380 | + case 0x28: | ||
381 | clr_txint(s); | 381 | clr_txint(s); |
382 | - break; | ||
383 | - case 0x38: | 382 | + break; |
383 | + case 0x38: | ||
384 | if (s->rxint_under_svc) | 384 | if (s->rxint_under_svc) |
385 | clr_rxint(s); | 385 | clr_rxint(s); |
386 | else if (s->txint_under_svc) | 386 | else if (s->txint_under_svc) |
387 | clr_txint(s); | 387 | clr_txint(s); |
388 | - break; | ||
389 | - default: | ||
390 | - break; | ||
391 | - } | ||
392 | - break; | 388 | + break; |
389 | + default: | ||
390 | + break; | ||
391 | + } | ||
392 | + break; | ||
393 | case 1 ... 3: | 393 | case 1 ... 3: |
394 | case 6 ... 8: | 394 | case 6 ... 8: |
395 | case 10 ... 11: | 395 | case 10 ... 11: |
396 | case 14 ... 15: | 396 | case 14 ... 15: |
397 | - s->wregs[s->reg] = val; | ||
398 | - break; | 397 | + s->wregs[s->reg] = val; |
398 | + break; | ||
399 | case 4: | 399 | case 4: |
400 | case 5: | 400 | case 5: |
401 | case 12: | 401 | case 12: |
402 | case 13: | 402 | case 13: |
403 | - s->wregs[s->reg] = val; | 403 | + s->wregs[s->reg] = val; |
404 | slavio_serial_update_parameters(s); | 404 | slavio_serial_update_parameters(s); |
405 | - break; | ||
406 | - case 9: | ||
407 | - switch (val & 0xc0) { | ||
408 | - case 0: | ||
409 | - default: | ||
410 | - break; | ||
411 | - case 0x40: | ||
412 | - slavio_serial_reset_chn(&serial->chn[1]); | ||
413 | - return; | ||
414 | - case 0x80: | ||
415 | - slavio_serial_reset_chn(&serial->chn[0]); | ||
416 | - return; | ||
417 | - case 0xc0: | ||
418 | - slavio_serial_reset(serial); | ||
419 | - return; | ||
420 | - } | ||
421 | - break; | ||
422 | - default: | ||
423 | - break; | ||
424 | - } | ||
425 | - if (s->reg == 0) | ||
426 | - s->reg = newreg; | ||
427 | - else | ||
428 | - s->reg = 0; | ||
429 | - break; | 405 | + break; |
406 | + case 9: | ||
407 | + switch (val & 0xc0) { | ||
408 | + case 0: | ||
409 | + default: | ||
410 | + break; | ||
411 | + case 0x40: | ||
412 | + slavio_serial_reset_chn(&serial->chn[1]); | ||
413 | + return; | ||
414 | + case 0x80: | ||
415 | + slavio_serial_reset_chn(&serial->chn[0]); | ||
416 | + return; | ||
417 | + case 0xc0: | ||
418 | + slavio_serial_reset(serial); | ||
419 | + return; | ||
420 | + } | ||
421 | + break; | ||
422 | + default: | ||
423 | + break; | ||
424 | + } | ||
425 | + if (s->reg == 0) | ||
426 | + s->reg = newreg; | ||
427 | + else | ||
428 | + s->reg = 0; | ||
429 | + break; | ||
430 | case 1: | 430 | case 1: |
431 | - SER_DPRINTF("Write channel %c, ch %d\n", CHN_C(s), val); | 431 | + SER_DPRINTF("Write channel %c, ch %d\n", CHN_C(s), val); |
432 | s->tx = val; | 432 | s->tx = val; |
433 | - if (s->wregs[5] & 8) { // tx enabled | ||
434 | - if (s->chr) | ||
435 | - qemu_chr_write(s->chr, &s->tx, 1); | ||
436 | - else if (s->type == kbd) { | ||
437 | - handle_kbd_command(s, val); | ||
438 | - } | ||
439 | - } | 433 | + if (s->wregs[5] & 8) { // tx enabled |
434 | + if (s->chr) | ||
435 | + qemu_chr_write(s->chr, &s->tx, 1); | ||
436 | + else if (s->type == kbd) { | ||
437 | + handle_kbd_command(s, val); | ||
438 | + } | ||
439 | + } | ||
440 | s->rregs[0] |= 4; // Tx buffer empty | 440 | s->rregs[0] |= 4; // Tx buffer empty |
441 | s->rregs[1] |= 1; // All sent | 441 | s->rregs[1] |= 1; // All sent |
442 | set_txint(s); | 442 | set_txint(s); |
443 | - break; | 443 | + break; |
444 | default: | 444 | default: |
445 | - break; | 445 | + break; |
446 | } | 446 | } |
447 | } | 447 | } |
448 | 448 | ||
@@ -459,21 +459,21 @@ static uint32_t slavio_serial_mem_readb(void *opaque, target_phys_addr_t addr) | @@ -459,21 +459,21 @@ static uint32_t slavio_serial_mem_readb(void *opaque, target_phys_addr_t addr) | ||
459 | s = &serial->chn[channel]; | 459 | s = &serial->chn[channel]; |
460 | switch (saddr) { | 460 | switch (saddr) { |
461 | case 0: | 461 | case 0: |
462 | - SER_DPRINTF("Read channel %c, reg[%d] = %2.2x\n", CHN_C(s), s->reg, s->rregs[s->reg]); | ||
463 | - ret = s->rregs[s->reg]; | ||
464 | - s->reg = 0; | ||
465 | - return ret; | 462 | + SER_DPRINTF("Read channel %c, reg[%d] = %2.2x\n", CHN_C(s), s->reg, s->rregs[s->reg]); |
463 | + ret = s->rregs[s->reg]; | ||
464 | + s->reg = 0; | ||
465 | + return ret; | ||
466 | case 1: | 466 | case 1: |
467 | - s->rregs[0] &= ~1; | 467 | + s->rregs[0] &= ~1; |
468 | clr_rxint(s); | 468 | clr_rxint(s); |
469 | - if (s->type == kbd || s->type == mouse) | ||
470 | - ret = get_queue(s); | ||
471 | - else | ||
472 | - ret = s->rx; | ||
473 | - SER_DPRINTF("Read channel %c, ch %d\n", CHN_C(s), ret); | ||
474 | - return ret; | 469 | + if (s->type == kbd || s->type == mouse) |
470 | + ret = get_queue(s); | ||
471 | + else | ||
472 | + ret = s->rx; | ||
473 | + SER_DPRINTF("Read channel %c, ch %d\n", CHN_C(s), ret); | ||
474 | + return ret; | ||
475 | default: | 475 | default: |
476 | - break; | 476 | + break; |
477 | } | 477 | } |
478 | return 0; | 478 | return 0; |
479 | } | 479 | } |
@@ -484,10 +484,10 @@ static int serial_can_receive(void *opaque) | @@ -484,10 +484,10 @@ static int serial_can_receive(void *opaque) | ||
484 | int ret; | 484 | int ret; |
485 | 485 | ||
486 | if (((s->wregs[3] & 1) == 0) // Rx not enabled | 486 | if (((s->wregs[3] & 1) == 0) // Rx not enabled |
487 | - || ((s->rregs[0] & 1) == 1)) // char already available | ||
488 | - ret = 0; | 487 | + || ((s->rregs[0] & 1) == 1)) // char already available |
488 | + ret = 0; | ||
489 | else | 489 | else |
490 | - ret = 1; | 490 | + ret = 1; |
491 | //SER_DPRINTF("channel %c can receive %d\n", CHN_C(s), ret); | 491 | //SER_DPRINTF("channel %c can receive %d\n", CHN_C(s), ret); |
492 | return ret; | 492 | return ret; |
493 | } | 493 | } |
@@ -584,7 +584,7 @@ static int slavio_serial_load(QEMUFile *f, void *opaque, int version_id) | @@ -584,7 +584,7 @@ static int slavio_serial_load(QEMUFile *f, void *opaque, int version_id) | ||
584 | 584 | ||
585 | ret = slavio_serial_load_chn(f, &s->chn[0], version_id); | 585 | ret = slavio_serial_load_chn(f, &s->chn[0], version_id); |
586 | if (ret != 0) | 586 | if (ret != 0) |
587 | - return ret; | 587 | + return ret; |
588 | ret = slavio_serial_load_chn(f, &s->chn[1], version_id); | 588 | ret = slavio_serial_load_chn(f, &s->chn[1], version_id); |
589 | return ret; | 589 | return ret; |
590 | 590 | ||
@@ -607,13 +607,13 @@ SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq, | @@ -607,13 +607,13 @@ SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq, | ||
607 | s->chn[1].chr = chr2; | 607 | s->chn[1].chr = chr2; |
608 | 608 | ||
609 | for (i = 0; i < 2; i++) { | 609 | for (i = 0; i < 2; i++) { |
610 | - s->chn[i].irq = irq; | ||
611 | - s->chn[i].chn = 1 - i; | ||
612 | - s->chn[i].type = ser; | ||
613 | - if (s->chn[i].chr) { | ||
614 | - qemu_chr_add_handlers(s->chn[i].chr, serial_can_receive, | 610 | + s->chn[i].irq = irq; |
611 | + s->chn[i].chn = 1 - i; | ||
612 | + s->chn[i].type = ser; | ||
613 | + if (s->chn[i].chr) { | ||
614 | + qemu_chr_add_handlers(s->chn[i].chr, serial_can_receive, | ||
615 | serial_receive1, serial_event, &s->chn[i]); | 615 | serial_receive1, serial_event, &s->chn[i]); |
616 | - } | 616 | + } |
617 | } | 617 | } |
618 | s->chn[0].otherchn = &s->chn[1]; | 618 | s->chn[0].otherchn = &s->chn[1]; |
619 | s->chn[1].otherchn = &s->chn[0]; | 619 | s->chn[1].otherchn = &s->chn[0]; |
@@ -698,21 +698,21 @@ static void handle_kbd_command(ChannelState *s, int val) | @@ -698,21 +698,21 @@ static void handle_kbd_command(ChannelState *s, int val) | ||
698 | switch (val) { | 698 | switch (val) { |
699 | case 1: // Reset, return type code | 699 | case 1: // Reset, return type code |
700 | clear_queue(s); | 700 | clear_queue(s); |
701 | - put_queue(s, 0xff); | ||
702 | - put_queue(s, 4); // Type 4 | ||
703 | - put_queue(s, 0x7f); | ||
704 | - break; | 701 | + put_queue(s, 0xff); |
702 | + put_queue(s, 4); // Type 4 | ||
703 | + put_queue(s, 0x7f); | ||
704 | + break; | ||
705 | case 0xe: // Set leds | 705 | case 0xe: // Set leds |
706 | s->led_mode = 1; | 706 | s->led_mode = 1; |
707 | break; | 707 | break; |
708 | case 7: // Query layout | 708 | case 7: // Query layout |
709 | case 0xf: | 709 | case 0xf: |
710 | clear_queue(s); | 710 | clear_queue(s); |
711 | - put_queue(s, 0xfe); | ||
712 | - put_queue(s, 0); // XXX, layout? | ||
713 | - break; | 711 | + put_queue(s, 0xfe); |
712 | + put_queue(s, 0); // XXX, layout? | ||
713 | + break; | ||
714 | default: | 714 | default: |
715 | - break; | 715 | + break; |
716 | } | 716 | } |
717 | } | 717 | } |
718 | 718 | ||
@@ -768,9 +768,9 @@ void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq) | @@ -768,9 +768,9 @@ void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq) | ||
768 | if (!s) | 768 | if (!s) |
769 | return; | 769 | return; |
770 | for (i = 0; i < 2; i++) { | 770 | for (i = 0; i < 2; i++) { |
771 | - s->chn[i].irq = irq; | ||
772 | - s->chn[i].chn = 1 - i; | ||
773 | - s->chn[i].chr = NULL; | 771 | + s->chn[i].irq = irq; |
772 | + s->chn[i].chn = 1 - i; | ||
773 | + s->chn[i].chr = NULL; | ||
774 | } | 774 | } |
775 | s->chn[0].otherchn = &s->chn[1]; | 775 | s->chn[0].otherchn = &s->chn[1]; |
776 | s->chn[1].otherchn = &s->chn[0]; | 776 | s->chn[1].otherchn = &s->chn[0]; |
hw/slavio_timer.c
@@ -86,7 +86,7 @@ static void slavio_timer_irq(void *opaque) | @@ -86,7 +86,7 @@ static void slavio_timer_irq(void *opaque) | ||
86 | DPRINTF("callback: count %x%08x\n", s->counthigh, s->count); | 86 | DPRINTF("callback: count %x%08x\n", s->counthigh, s->count); |
87 | s->reached = 0x80000000; | 87 | s->reached = 0x80000000; |
88 | if (s->mode != 1) | 88 | if (s->mode != 1) |
89 | - qemu_irq_raise(s->irq); | 89 | + qemu_irq_raise(s->irq); |
90 | } | 90 | } |
91 | 91 | ||
92 | static uint32_t slavio_timer_mem_readl(void *opaque, target_phys_addr_t addr) | 92 | static uint32_t slavio_timer_mem_readl(void *opaque, target_phys_addr_t addr) |
@@ -97,34 +97,34 @@ static uint32_t slavio_timer_mem_readl(void *opaque, target_phys_addr_t addr) | @@ -97,34 +97,34 @@ static uint32_t slavio_timer_mem_readl(void *opaque, target_phys_addr_t addr) | ||
97 | saddr = (addr & TIMER_MAXADDR) >> 2; | 97 | saddr = (addr & TIMER_MAXADDR) >> 2; |
98 | switch (saddr) { | 98 | switch (saddr) { |
99 | case 0: | 99 | case 0: |
100 | - // read limit (system counter mode) or read most signifying | ||
101 | - // part of counter (user mode) | ||
102 | - if (s->mode != 1) { | ||
103 | - // clear irq | 100 | + // read limit (system counter mode) or read most signifying |
101 | + // part of counter (user mode) | ||
102 | + if (s->mode != 1) { | ||
103 | + // clear irq | ||
104 | qemu_irq_lower(s->irq); | 104 | qemu_irq_lower(s->irq); |
105 | - s->reached = 0; | 105 | + s->reached = 0; |
106 | ret = s->limit & 0x7fffffff; | 106 | ret = s->limit & 0x7fffffff; |
107 | - } | ||
108 | - else { | ||
109 | - slavio_timer_get_out(s); | 107 | + } |
108 | + else { | ||
109 | + slavio_timer_get_out(s); | ||
110 | ret = s->counthigh & 0x7fffffff; | 110 | ret = s->counthigh & 0x7fffffff; |
111 | - } | 111 | + } |
112 | break; | 112 | break; |
113 | case 1: | 113 | case 1: |
114 | - // read counter and reached bit (system mode) or read lsbits | ||
115 | - // of counter (user mode) | ||
116 | - slavio_timer_get_out(s); | ||
117 | - if (s->mode != 1) | 114 | + // read counter and reached bit (system mode) or read lsbits |
115 | + // of counter (user mode) | ||
116 | + slavio_timer_get_out(s); | ||
117 | + if (s->mode != 1) | ||
118 | ret = (s->count & 0x7fffffff) | s->reached; | 118 | ret = (s->count & 0x7fffffff) | s->reached; |
119 | - else | 119 | + else |
120 | ret = s->count; | 120 | ret = s->count; |
121 | break; | 121 | break; |
122 | case 3: | 122 | case 3: |
123 | - // read start/stop status | 123 | + // read start/stop status |
124 | ret = s->stopped; | 124 | ret = s->stopped; |
125 | break; | 125 | break; |
126 | case 4: | 126 | case 4: |
127 | - // read user/system mode | 127 | + // read user/system mode |
128 | ret = s->slave_mode; | 128 | ret = s->slave_mode; |
129 | break; | 129 | break; |
130 | default: | 130 | default: |
@@ -161,14 +161,14 @@ static void slavio_timer_mem_writel(void *opaque, target_phys_addr_t addr, uint3 | @@ -161,14 +161,14 @@ static void slavio_timer_mem_writel(void *opaque, target_phys_addr_t addr, uint3 | ||
161 | qemu_irq_lower(s->irq); | 161 | qemu_irq_lower(s->irq); |
162 | // fall through | 162 | // fall through |
163 | case 2: | 163 | case 2: |
164 | - // set limit without resetting counter | 164 | + // set limit without resetting counter |
165 | s->limit = val & 0x7ffffe00ULL; | 165 | s->limit = val & 0x7ffffe00ULL; |
166 | if (!s->limit) | 166 | if (!s->limit) |
167 | s->limit = 0x7ffffe00ULL; | 167 | s->limit = 0x7ffffe00ULL; |
168 | ptimer_set_limit(s->timer, s->limit >> 9, reload); | 168 | ptimer_set_limit(s->timer, s->limit >> 9, reload); |
169 | - break; | 169 | + break; |
170 | case 1: | 170 | case 1: |
171 | - // set user counter limit LSW, reset counter | 171 | + // set user counter limit LSW, reset counter |
172 | if (s->mode == 1) { | 172 | if (s->mode == 1) { |
173 | qemu_irq_lower(s->irq); | 173 | qemu_irq_lower(s->irq); |
174 | s->limit &= 0x7fffffff00000000ULL; | 174 | s->limit &= 0x7fffffff00000000ULL; |
@@ -179,20 +179,20 @@ static void slavio_timer_mem_writel(void *opaque, target_phys_addr_t addr, uint3 | @@ -179,20 +179,20 @@ static void slavio_timer_mem_writel(void *opaque, target_phys_addr_t addr, uint3 | ||
179 | } | 179 | } |
180 | break; | 180 | break; |
181 | case 3: | 181 | case 3: |
182 | - // start/stop user counter | ||
183 | - if (s->mode == 1) { | ||
184 | - if (val & 1) { | 182 | + // start/stop user counter |
183 | + if (s->mode == 1) { | ||
184 | + if (val & 1) { | ||
185 | ptimer_stop(s->timer); | 185 | ptimer_stop(s->timer); |
186 | - s->stopped = 1; | ||
187 | - } | ||
188 | - else { | 186 | + s->stopped = 1; |
187 | + } | ||
188 | + else { | ||
189 | ptimer_run(s->timer, 0); | 189 | ptimer_run(s->timer, 0); |
190 | - s->stopped = 0; | ||
191 | - } | ||
192 | - } | ||
193 | - break; | 190 | + s->stopped = 0; |
191 | + } | ||
192 | + } | ||
193 | + break; | ||
194 | case 4: | 194 | case 4: |
195 | - // bit 0: user (1) or system (0) counter mode | 195 | + // bit 0: user (1) or system (0) counter mode |
196 | { | 196 | { |
197 | unsigned int i; | 197 | unsigned int i; |
198 | 198 | ||
@@ -211,9 +211,9 @@ static void slavio_timer_mem_writel(void *opaque, target_phys_addr_t addr, uint3 | @@ -211,9 +211,9 @@ static void slavio_timer_mem_writel(void *opaque, target_phys_addr_t addr, uint3 | ||
211 | } | 211 | } |
212 | s->slave_mode = val & ((1 << MAX_CPUS) - 1); | 212 | s->slave_mode = val & ((1 << MAX_CPUS) - 1); |
213 | } | 213 | } |
214 | - break; | 214 | + break; |
215 | default: | 215 | default: |
216 | - break; | 216 | + break; |
217 | } | 217 | } |
218 | } | 218 | } |
219 | 219 | ||
@@ -294,7 +294,7 @@ static SLAVIO_TIMERState *slavio_timer_init(target_phys_addr_t addr, | @@ -294,7 +294,7 @@ static SLAVIO_TIMERState *slavio_timer_init(target_phys_addr_t addr, | ||
294 | ptimer_set_period(s->timer, 500ULL); | 294 | ptimer_set_period(s->timer, 500ULL); |
295 | 295 | ||
296 | slavio_timer_io_memory = cpu_register_io_memory(0, slavio_timer_mem_read, | 296 | slavio_timer_io_memory = cpu_register_io_memory(0, slavio_timer_mem_read, |
297 | - slavio_timer_mem_write, s); | 297 | + slavio_timer_mem_write, s); |
298 | if (mode < 2) | 298 | if (mode < 2) |
299 | cpu_register_physical_memory(addr, CPU_TIMER_SIZE, slavio_timer_io_memory); | 299 | cpu_register_physical_memory(addr, CPU_TIMER_SIZE, slavio_timer_io_memory); |
300 | else | 300 | else |
hw/sun4m.c
@@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
52 | #define PROM_SIZE_MAX (512 * 1024) | 52 | #define PROM_SIZE_MAX (512 * 1024) |
53 | #define PROM_PADDR 0xff0000000ULL | 53 | #define PROM_PADDR 0xff0000000ULL |
54 | #define PROM_VADDR 0xffd00000 | 54 | #define PROM_VADDR 0xffd00000 |
55 | -#define PROM_FILENAME "openbios-sparc32" | 55 | +#define PROM_FILENAME "openbios-sparc32" |
56 | 56 | ||
57 | #define MAX_CPUS 16 | 57 | #define MAX_CPUS 16 |
58 | #define MAX_PILS 16 | 58 | #define MAX_PILS 16 |
@@ -158,9 +158,9 @@ static void nvram_finish_partition (m48t59_t *nvram, uint32_t start, | @@ -158,9 +158,9 @@ static void nvram_finish_partition (m48t59_t *nvram, uint32_t start, | ||
158 | extern int nographic; | 158 | extern int nographic; |
159 | 159 | ||
160 | static void nvram_init(m48t59_t *nvram, uint8_t *macaddr, const char *cmdline, | 160 | static void nvram_init(m48t59_t *nvram, uint8_t *macaddr, const char *cmdline, |
161 | - int boot_device, uint32_t RAM_size, | ||
162 | - uint32_t kernel_size, | ||
163 | - int width, int height, int depth, | 161 | + int boot_device, uint32_t RAM_size, |
162 | + uint32_t kernel_size, | ||
163 | + int width, int height, int depth, | ||
164 | int machine_id) | 164 | int machine_id) |
165 | { | 165 | { |
166 | unsigned char tmp = 0; | 166 | unsigned char tmp = 0; |
@@ -179,8 +179,8 @@ static void nvram_init(m48t59_t *nvram, uint8_t *macaddr, const char *cmdline, | @@ -179,8 +179,8 @@ static void nvram_init(m48t59_t *nvram, uint8_t *macaddr, const char *cmdline, | ||
179 | nvram_set_lword(nvram, 0x38, KERNEL_LOAD_ADDR); | 179 | nvram_set_lword(nvram, 0x38, KERNEL_LOAD_ADDR); |
180 | nvram_set_lword(nvram, 0x3C, kernel_size); | 180 | nvram_set_lword(nvram, 0x3C, kernel_size); |
181 | if (cmdline) { | 181 | if (cmdline) { |
182 | - strcpy(phys_ram_base + CMDLINE_ADDR, cmdline); | ||
183 | - nvram_set_lword(nvram, 0x40, CMDLINE_ADDR); | 182 | + strcpy(phys_ram_base + CMDLINE_ADDR, cmdline); |
183 | + nvram_set_lword(nvram, 0x40, CMDLINE_ADDR); | ||
184 | nvram_set_lword(nvram, 0x44, strlen(cmdline)); | 184 | nvram_set_lword(nvram, 0x44, strlen(cmdline)); |
185 | } | 185 | } |
186 | // initrd_image, initrd_size passed differently | 186 | // initrd_image, initrd_size passed differently |
@@ -444,13 +444,13 @@ static void sun4m_load_kernel(long vram_size, int RAM_size, int boot_device, | @@ -444,13 +444,13 @@ static void sun4m_load_kernel(long vram_size, int RAM_size, int boot_device, | ||
444 | kernel_size = load_elf(kernel_filename, -0xf0000000ULL, NULL, NULL, | 444 | kernel_size = load_elf(kernel_filename, -0xf0000000ULL, NULL, NULL, |
445 | NULL); | 445 | NULL); |
446 | if (kernel_size < 0) | 446 | if (kernel_size < 0) |
447 | - kernel_size = load_aout(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); | ||
448 | - if (kernel_size < 0) | ||
449 | - kernel_size = load_image(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); | 447 | + kernel_size = load_aout(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); |
448 | + if (kernel_size < 0) | ||
449 | + kernel_size = load_image(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); | ||
450 | if (kernel_size < 0) { | 450 | if (kernel_size < 0) { |
451 | fprintf(stderr, "qemu: could not load kernel '%s'\n", | 451 | fprintf(stderr, "qemu: could not load kernel '%s'\n", |
452 | kernel_filename); | 452 | kernel_filename); |
453 | - exit(1); | 453 | + exit(1); |
454 | } | 454 | } |
455 | 455 | ||
456 | /* load initrd */ | 456 | /* load initrd */ |
@@ -464,14 +464,14 @@ static void sun4m_load_kernel(long vram_size, int RAM_size, int boot_device, | @@ -464,14 +464,14 @@ static void sun4m_load_kernel(long vram_size, int RAM_size, int boot_device, | ||
464 | } | 464 | } |
465 | } | 465 | } |
466 | if (initrd_size > 0) { | 466 | if (initrd_size > 0) { |
467 | - for (i = 0; i < 64 * TARGET_PAGE_SIZE; i += TARGET_PAGE_SIZE) { | ||
468 | - if (ldl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i) | ||
469 | - == 0x48647253) { // HdrS | ||
470 | - stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 16, INITRD_LOAD_ADDR); | ||
471 | - stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 20, initrd_size); | ||
472 | - break; | ||
473 | - } | ||
474 | - } | 467 | + for (i = 0; i < 64 * TARGET_PAGE_SIZE; i += TARGET_PAGE_SIZE) { |
468 | + if (ldl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i) | ||
469 | + == 0x48647253) { // HdrS | ||
470 | + stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 16, INITRD_LOAD_ADDR); | ||
471 | + stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 20, initrd_size); | ||
472 | + break; | ||
473 | + } | ||
474 | + } | ||
475 | } | 475 | } |
476 | } | 476 | } |
477 | nvram_init(nvram, (uint8_t *)&nd_table[0].macaddr, kernel_cmdline, | 477 | nvram_init(nvram, (uint8_t *)&nd_table[0].macaddr, kernel_cmdline, |
@@ -509,8 +509,8 @@ static const struct hwdef hwdefs[] = { | @@ -509,8 +509,8 @@ static const struct hwdef hwdefs[] = { | ||
509 | .cs_irq = 5, | 509 | .cs_irq = 5, |
510 | .machine_id = 0x80, | 510 | .machine_id = 0x80, |
511 | .intbit_to_level = { | 511 | .intbit_to_level = { |
512 | - 2, 3, 5, 7, 9, 11, 0, 14, 3, 5, 7, 9, 11, 13, 12, 12, | ||
513 | - 6, 0, 4, 10, 8, 0, 11, 0, 0, 0, 0, 0, 15, 0, 15, 0, | 512 | + 2, 3, 5, 7, 9, 11, 0, 14, 3, 5, 7, 9, 11, 13, 12, 12, |
513 | + 6, 0, 4, 10, 8, 0, 11, 0, 0, 0, 0, 0, 15, 0, 15, 0, | ||
514 | }, | 514 | }, |
515 | }, | 515 | }, |
516 | /* SS-10 */ | 516 | /* SS-10 */ |
@@ -542,8 +542,8 @@ static const struct hwdef hwdefs[] = { | @@ -542,8 +542,8 @@ static const struct hwdef hwdefs[] = { | ||
542 | .cs_irq = -1, | 542 | .cs_irq = -1, |
543 | .machine_id = 0x72, | 543 | .machine_id = 0x72, |
544 | .intbit_to_level = { | 544 | .intbit_to_level = { |
545 | - 2, 3, 5, 7, 9, 11, 0, 14, 3, 5, 7, 9, 11, 13, 12, 12, | ||
546 | - 6, 0, 4, 10, 8, 0, 11, 0, 0, 0, 0, 0, 15, 0, 15, 0, | 545 | + 2, 3, 5, 7, 9, 11, 0, 14, 3, 5, 7, 9, 11, 13, 12, 12, |
546 | + 6, 0, 4, 10, 8, 0, 11, 0, 0, 0, 0, 0, 15, 0, 15, 0, | ||
547 | }, | 547 | }, |
548 | }, | 548 | }, |
549 | }; | 549 | }; |
hw/sun4u.c
@@ -28,12 +28,12 @@ | @@ -28,12 +28,12 @@ | ||
28 | #define CMDLINE_ADDR 0x003ff000 | 28 | #define CMDLINE_ADDR 0x003ff000 |
29 | #define INITRD_LOAD_ADDR 0x00300000 | 29 | #define INITRD_LOAD_ADDR 0x00300000 |
30 | #define PROM_SIZE_MAX (512 * 1024) | 30 | #define PROM_SIZE_MAX (512 * 1024) |
31 | -#define PROM_ADDR 0x1fff0000000ULL | ||
32 | -#define PROM_VADDR 0x000ffd00000ULL | 31 | +#define PROM_ADDR 0x1fff0000000ULL |
32 | +#define PROM_VADDR 0x000ffd00000ULL | ||
33 | #define APB_SPECIAL_BASE 0x1fe00000000ULL | 33 | #define APB_SPECIAL_BASE 0x1fe00000000ULL |
34 | -#define APB_MEM_BASE 0x1ff00000000ULL | ||
35 | -#define VGA_BASE (APB_MEM_BASE + 0x400000ULL) | ||
36 | -#define PROM_FILENAME "openbios-sparc64" | 34 | +#define APB_MEM_BASE 0x1ff00000000ULL |
35 | +#define VGA_BASE (APB_MEM_BASE + 0x400000ULL) | ||
36 | +#define PROM_FILENAME "openbios-sparc64" | ||
37 | #define NVRAM_SIZE 0x2000 | 37 | #define NVRAM_SIZE 0x2000 |
38 | 38 | ||
39 | /* TSC handling */ | 39 | /* TSC handling */ |
@@ -162,10 +162,10 @@ uint16_t NVRAM_compute_crc (m48t59_t *nvram, uint32_t start, uint32_t count) | @@ -162,10 +162,10 @@ uint16_t NVRAM_compute_crc (m48t59_t *nvram, uint32_t start, uint32_t count) | ||
162 | odd = count & 1; | 162 | odd = count & 1; |
163 | count &= ~1; | 163 | count &= ~1; |
164 | for (i = 0; i != count; i++) { | 164 | for (i = 0; i != count; i++) { |
165 | - crc = NVRAM_crc_update(crc, NVRAM_get_word(nvram, start + i)); | 165 | + crc = NVRAM_crc_update(crc, NVRAM_get_word(nvram, start + i)); |
166 | } | 166 | } |
167 | if (odd) { | 167 | if (odd) { |
168 | - crc = NVRAM_crc_update(crc, NVRAM_get_byte(nvram, start + i) << 8); | 168 | + crc = NVRAM_crc_update(crc, NVRAM_get_byte(nvram, start + i) << 8); |
169 | } | 169 | } |
170 | 170 | ||
171 | return crc; | 171 | return crc; |
@@ -387,9 +387,9 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | @@ -387,9 +387,9 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | ||
387 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name); | 387 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name); |
388 | ret = load_elf(buf, PROM_ADDR - PROM_VADDR, NULL, NULL, NULL); | 388 | ret = load_elf(buf, PROM_ADDR - PROM_VADDR, NULL, NULL, NULL); |
389 | if (ret < 0) { | 389 | if (ret < 0) { |
390 | - fprintf(stderr, "qemu: could not load prom '%s'\n", | ||
391 | - buf); | ||
392 | - exit(1); | 390 | + fprintf(stderr, "qemu: could not load prom '%s'\n", |
391 | + buf); | ||
392 | + exit(1); | ||
393 | } | 393 | } |
394 | 394 | ||
395 | kernel_size = 0; | 395 | kernel_size = 0; |
@@ -398,13 +398,13 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | @@ -398,13 +398,13 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | ||
398 | /* XXX: put correct offset */ | 398 | /* XXX: put correct offset */ |
399 | kernel_size = load_elf(kernel_filename, 0, NULL, NULL, NULL); | 399 | kernel_size = load_elf(kernel_filename, 0, NULL, NULL, NULL); |
400 | if (kernel_size < 0) | 400 | if (kernel_size < 0) |
401 | - kernel_size = load_aout(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); | ||
402 | - if (kernel_size < 0) | ||
403 | - kernel_size = load_image(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); | 401 | + kernel_size = load_aout(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); |
402 | + if (kernel_size < 0) | ||
403 | + kernel_size = load_image(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); | ||
404 | if (kernel_size < 0) { | 404 | if (kernel_size < 0) { |
405 | fprintf(stderr, "qemu: could not load kernel '%s'\n", | 405 | fprintf(stderr, "qemu: could not load kernel '%s'\n", |
406 | kernel_filename); | 406 | kernel_filename); |
407 | - exit(1); | 407 | + exit(1); |
408 | } | 408 | } |
409 | 409 | ||
410 | /* load initrd */ | 410 | /* load initrd */ |
@@ -417,14 +417,14 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | @@ -417,14 +417,14 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | ||
417 | } | 417 | } |
418 | } | 418 | } |
419 | if (initrd_size > 0) { | 419 | if (initrd_size > 0) { |
420 | - for (i = 0; i < 64 * TARGET_PAGE_SIZE; i += TARGET_PAGE_SIZE) { | ||
421 | - if (ldl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i) | ||
422 | - == 0x48647253) { // HdrS | ||
423 | - stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 16, INITRD_LOAD_ADDR); | ||
424 | - stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 20, initrd_size); | ||
425 | - break; | ||
426 | - } | ||
427 | - } | 420 | + for (i = 0; i < 64 * TARGET_PAGE_SIZE; i += TARGET_PAGE_SIZE) { |
421 | + if (ldl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i) | ||
422 | + == 0x48647253) { // HdrS | ||
423 | + stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 16, INITRD_LOAD_ADDR); | ||
424 | + stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 20, initrd_size); | ||
425 | + break; | ||
426 | + } | ||
427 | + } | ||
428 | } | 428 | } |
429 | } | 429 | } |
430 | pci_bus = pci_apb_init(APB_SPECIAL_BASE, APB_MEM_BASE, NULL); | 430 | pci_bus = pci_apb_init(APB_SPECIAL_BASE, APB_MEM_BASE, NULL); |
@@ -446,7 +446,7 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | @@ -446,7 +446,7 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, | ||
446 | for(i = 0; i < nb_nics; i++) { | 446 | for(i = 0; i < nb_nics; i++) { |
447 | if (!nd_table[i].model) | 447 | if (!nd_table[i].model) |
448 | nd_table[i].model = "ne2k_pci"; | 448 | nd_table[i].model = "ne2k_pci"; |
449 | - pci_nic_init(pci_bus, &nd_table[i], -1); | 449 | + pci_nic_init(pci_bus, &nd_table[i], -1); |
450 | } | 450 | } |
451 | 451 | ||
452 | irq = qemu_allocate_irqs(dummy_cpu_set_irq, NULL, 32); | 452 | irq = qemu_allocate_irqs(dummy_cpu_set_irq, NULL, 32); |
hw/tcx.c
@@ -84,39 +84,39 @@ static void update_palette_entries(TCXState *s, int start, int end) | @@ -84,39 +84,39 @@ static void update_palette_entries(TCXState *s, int start, int end) | ||
84 | } | 84 | } |
85 | 85 | ||
86 | static void tcx_draw_line32(TCXState *s1, uint8_t *d, | 86 | static void tcx_draw_line32(TCXState *s1, uint8_t *d, |
87 | - const uint8_t *s, int width) | 87 | + const uint8_t *s, int width) |
88 | { | 88 | { |
89 | int x; | 89 | int x; |
90 | uint8_t val; | 90 | uint8_t val; |
91 | uint32_t *p = (uint32_t *)d; | 91 | uint32_t *p = (uint32_t *)d; |
92 | 92 | ||
93 | for(x = 0; x < width; x++) { | 93 | for(x = 0; x < width; x++) { |
94 | - val = *s++; | 94 | + val = *s++; |
95 | *p++ = s1->palette[val]; | 95 | *p++ = s1->palette[val]; |
96 | } | 96 | } |
97 | } | 97 | } |
98 | 98 | ||
99 | static void tcx_draw_line16(TCXState *s1, uint8_t *d, | 99 | static void tcx_draw_line16(TCXState *s1, uint8_t *d, |
100 | - const uint8_t *s, int width) | 100 | + const uint8_t *s, int width) |
101 | { | 101 | { |
102 | int x; | 102 | int x; |
103 | uint8_t val; | 103 | uint8_t val; |
104 | uint16_t *p = (uint16_t *)d; | 104 | uint16_t *p = (uint16_t *)d; |
105 | 105 | ||
106 | for(x = 0; x < width; x++) { | 106 | for(x = 0; x < width; x++) { |
107 | - val = *s++; | 107 | + val = *s++; |
108 | *p++ = s1->palette[val]; | 108 | *p++ = s1->palette[val]; |
109 | } | 109 | } |
110 | } | 110 | } |
111 | 111 | ||
112 | static void tcx_draw_line8(TCXState *s1, uint8_t *d, | 112 | static void tcx_draw_line8(TCXState *s1, uint8_t *d, |
113 | - const uint8_t *s, int width) | 113 | + const uint8_t *s, int width) |
114 | { | 114 | { |
115 | int x; | 115 | int x; |
116 | uint8_t val; | 116 | uint8_t val; |
117 | 117 | ||
118 | for(x = 0; x < width; x++) { | 118 | for(x = 0; x < width; x++) { |
119 | - val = *s++; | 119 | + val = *s++; |
120 | *d++ = s1->palette[val]; | 120 | *d++ = s1->palette[val]; |
121 | } | 121 | } |
122 | } | 122 | } |
@@ -183,7 +183,7 @@ static void tcx_update_display(void *opaque) | @@ -183,7 +183,7 @@ static void tcx_update_display(void *opaque) | ||
183 | void (*f)(TCXState *s1, uint8_t *dst, const uint8_t *src, int width); | 183 | void (*f)(TCXState *s1, uint8_t *dst, const uint8_t *src, int width); |
184 | 184 | ||
185 | if (ts->ds->depth == 0) | 185 | if (ts->ds->depth == 0) |
186 | - return; | 186 | + return; |
187 | page = ts->vram_offset; | 187 | page = ts->vram_offset; |
188 | y_start = -1; | 188 | y_start = -1; |
189 | page_min = 0xffffffff; | 189 | page_min = 0xffffffff; |
@@ -195,55 +195,55 @@ static void tcx_update_display(void *opaque) | @@ -195,55 +195,55 @@ static void tcx_update_display(void *opaque) | ||
195 | 195 | ||
196 | switch (ts->ds->depth) { | 196 | switch (ts->ds->depth) { |
197 | case 32: | 197 | case 32: |
198 | - f = tcx_draw_line32; | ||
199 | - break; | 198 | + f = tcx_draw_line32; |
199 | + break; | ||
200 | case 15: | 200 | case 15: |
201 | case 16: | 201 | case 16: |
202 | - f = tcx_draw_line16; | ||
203 | - break; | 202 | + f = tcx_draw_line16; |
203 | + break; | ||
204 | default: | 204 | default: |
205 | case 8: | 205 | case 8: |
206 | - f = tcx_draw_line8; | ||
207 | - break; | 206 | + f = tcx_draw_line8; |
207 | + break; | ||
208 | case 0: | 208 | case 0: |
209 | - return; | 209 | + return; |
210 | } | 210 | } |
211 | 211 | ||
212 | for(y = 0; y < ts->height; y += 4, page += TARGET_PAGE_SIZE) { | 212 | for(y = 0; y < ts->height; y += 4, page += TARGET_PAGE_SIZE) { |
213 | - if (cpu_physical_memory_get_dirty(page, VGA_DIRTY_FLAG)) { | ||
214 | - if (y_start < 0) | 213 | + if (cpu_physical_memory_get_dirty(page, VGA_DIRTY_FLAG)) { |
214 | + if (y_start < 0) | ||
215 | y_start = y; | 215 | y_start = y; |
216 | if (page < page_min) | 216 | if (page < page_min) |
217 | page_min = page; | 217 | page_min = page; |
218 | if (page > page_max) | 218 | if (page > page_max) |
219 | page_max = page; | 219 | page_max = page; |
220 | - f(ts, d, s, ts->width); | ||
221 | - d += dd; | ||
222 | - s += ds; | ||
223 | - f(ts, d, s, ts->width); | ||
224 | - d += dd; | ||
225 | - s += ds; | ||
226 | - f(ts, d, s, ts->width); | ||
227 | - d += dd; | ||
228 | - s += ds; | ||
229 | - f(ts, d, s, ts->width); | ||
230 | - d += dd; | ||
231 | - s += ds; | ||
232 | - } else { | 220 | + f(ts, d, s, ts->width); |
221 | + d += dd; | ||
222 | + s += ds; | ||
223 | + f(ts, d, s, ts->width); | ||
224 | + d += dd; | ||
225 | + s += ds; | ||
226 | + f(ts, d, s, ts->width); | ||
227 | + d += dd; | ||
228 | + s += ds; | ||
229 | + f(ts, d, s, ts->width); | ||
230 | + d += dd; | ||
231 | + s += ds; | ||
232 | + } else { | ||
233 | if (y_start >= 0) { | 233 | if (y_start >= 0) { |
234 | /* flush to display */ | 234 | /* flush to display */ |
235 | dpy_update(ts->ds, 0, y_start, | 235 | dpy_update(ts->ds, 0, y_start, |
236 | ts->width, y - y_start); | 236 | ts->width, y - y_start); |
237 | y_start = -1; | 237 | y_start = -1; |
238 | } | 238 | } |
239 | - d += dd * 4; | ||
240 | - s += ds * 4; | ||
241 | - } | 239 | + d += dd * 4; |
240 | + s += ds * 4; | ||
241 | + } | ||
242 | } | 242 | } |
243 | if (y_start >= 0) { | 243 | if (y_start >= 0) { |
244 | - /* flush to display */ | ||
245 | - dpy_update(ts->ds, 0, y_start, | ||
246 | - ts->width, y - y_start); | 244 | + /* flush to display */ |
245 | + dpy_update(ts->ds, 0, y_start, | ||
246 | + ts->width, y - y_start); | ||
247 | } | 247 | } |
248 | /* reset modified pages */ | 248 | /* reset modified pages */ |
249 | if (page_min <= page_max) { | 249 | if (page_min <= page_max) { |
@@ -334,7 +334,7 @@ static void tcx_invalidate_display(void *opaque) | @@ -334,7 +334,7 @@ static void tcx_invalidate_display(void *opaque) | ||
334 | int i; | 334 | int i; |
335 | 335 | ||
336 | for (i = 0; i < MAXX*MAXY; i += TARGET_PAGE_SIZE) { | 336 | for (i = 0; i < MAXX*MAXY; i += TARGET_PAGE_SIZE) { |
337 | - cpu_physical_memory_set_dirty(s->vram_offset + i); | 337 | + cpu_physical_memory_set_dirty(s->vram_offset + i); |
338 | } | 338 | } |
339 | } | 339 | } |
340 | 340 | ||
@@ -424,32 +424,32 @@ static void tcx_dac_writel(void *opaque, target_phys_addr_t addr, uint32_t val) | @@ -424,32 +424,32 @@ static void tcx_dac_writel(void *opaque, target_phys_addr_t addr, uint32_t val) | ||
424 | saddr = (addr & (TCX_DAC_NREGS - 1)) >> 2; | 424 | saddr = (addr & (TCX_DAC_NREGS - 1)) >> 2; |
425 | switch (saddr) { | 425 | switch (saddr) { |
426 | case 0: | 426 | case 0: |
427 | - s->dac_index = val >> 24; | ||
428 | - s->dac_state = 0; | ||
429 | - break; | 427 | + s->dac_index = val >> 24; |
428 | + s->dac_state = 0; | ||
429 | + break; | ||
430 | case 1: | 430 | case 1: |
431 | - switch (s->dac_state) { | ||
432 | - case 0: | ||
433 | - s->r[s->dac_index] = val >> 24; | 431 | + switch (s->dac_state) { |
432 | + case 0: | ||
433 | + s->r[s->dac_index] = val >> 24; | ||
434 | update_palette_entries(s, s->dac_index, s->dac_index + 1); | 434 | update_palette_entries(s, s->dac_index, s->dac_index + 1); |
435 | - s->dac_state++; | ||
436 | - break; | ||
437 | - case 1: | ||
438 | - s->g[s->dac_index] = val >> 24; | 435 | + s->dac_state++; |
436 | + break; | ||
437 | + case 1: | ||
438 | + s->g[s->dac_index] = val >> 24; | ||
439 | update_palette_entries(s, s->dac_index, s->dac_index + 1); | 439 | update_palette_entries(s, s->dac_index, s->dac_index + 1); |
440 | - s->dac_state++; | ||
441 | - break; | ||
442 | - case 2: | ||
443 | - s->b[s->dac_index] = val >> 24; | 440 | + s->dac_state++; |
441 | + break; | ||
442 | + case 2: | ||
443 | + s->b[s->dac_index] = val >> 24; | ||
444 | update_palette_entries(s, s->dac_index, s->dac_index + 1); | 444 | update_palette_entries(s, s->dac_index, s->dac_index + 1); |
445 | s->dac_index = (s->dac_index + 1) & 255; // Index autoincrement | 445 | s->dac_index = (s->dac_index + 1) & 255; // Index autoincrement |
446 | - default: | ||
447 | - s->dac_state = 0; | ||
448 | - break; | ||
449 | - } | ||
450 | - break; | 446 | + default: |
447 | + s->dac_state = 0; | ||
448 | + break; | ||
449 | + } | ||
450 | + break; | ||
451 | default: | 451 | default: |
452 | - break; | 452 | + break; |
453 | } | 453 | } |
454 | return; | 454 | return; |
455 | } | 455 | } |
sparc-dis.c
@@ -88,21 +88,21 @@ extern enum sparc_opcode_arch_val sparc_opcode_lookup_arch | @@ -88,21 +88,21 @@ extern enum sparc_opcode_arch_val sparc_opcode_lookup_arch | ||
88 | 88 | ||
89 | struct sparc_opcode { | 89 | struct sparc_opcode { |
90 | const char *name; | 90 | const char *name; |
91 | - unsigned long match; /* Bits that must be set. */ | ||
92 | - unsigned long lose; /* Bits that must not be set. */ | 91 | + unsigned long match; /* Bits that must be set. */ |
92 | + unsigned long lose; /* Bits that must not be set. */ | ||
93 | const char *args; | 93 | const char *args; |
94 | /* This was called "delayed" in versions before the flags. */ | 94 | /* This was called "delayed" in versions before the flags. */ |
95 | char flags; | 95 | char flags; |
96 | - short architecture; /* Bitmask of sparc_opcode_arch_val's. */ | 96 | + short architecture; /* Bitmask of sparc_opcode_arch_val's. */ |
97 | }; | 97 | }; |
98 | 98 | ||
99 | -#define F_DELAYED 1 /* Delayed branch */ | ||
100 | -#define F_ALIAS 2 /* Alias for a "real" instruction */ | ||
101 | -#define F_UNBR 4 /* Unconditional branch */ | ||
102 | -#define F_CONDBR 8 /* Conditional branch */ | ||
103 | -#define F_JSR 16 /* Subroutine call */ | ||
104 | -#define F_FLOAT 32 /* Floating point instruction (not a branch) */ | ||
105 | -#define F_FBR 64 /* Floating point branch */ | 99 | +#define F_DELAYED 1 /* Delayed branch */ |
100 | +#define F_ALIAS 2 /* Alias for a "real" instruction */ | ||
101 | +#define F_UNBR 4 /* Unconditional branch */ | ||
102 | +#define F_CONDBR 8 /* Conditional branch */ | ||
103 | +#define F_JSR 16 /* Subroutine call */ | ||
104 | +#define F_FLOAT 32 /* Floating point instruction (not a branch) */ | ||
105 | +#define F_FBR 64 /* Floating point branch */ | ||
106 | /* FIXME: Add F_ANACHRONISTIC flag for v9. */ | 106 | /* FIXME: Add F_ANACHRONISTIC flag for v9. */ |
107 | 107 | ||
108 | /* | 108 | /* |
@@ -117,104 +117,104 @@ The args component is a string containing one character for each operand of the | @@ -117,104 +117,104 @@ The args component is a string containing one character for each operand of the | ||
117 | instruction. | 117 | instruction. |
118 | 118 | ||
119 | Kinds of operands: | 119 | Kinds of operands: |
120 | - # Number used by optimizer. It is ignored. | ||
121 | - 1 rs1 register. | ||
122 | - 2 rs2 register. | ||
123 | - d rd register. | ||
124 | - e frs1 floating point register. | ||
125 | - v frs1 floating point register (double/even). | ||
126 | - V frs1 floating point register (quad/multiple of 4). | ||
127 | - f frs2 floating point register. | ||
128 | - B frs2 floating point register (double/even). | ||
129 | - R frs2 floating point register (quad/multiple of 4). | ||
130 | - g frsd floating point register. | ||
131 | - H frsd floating point register (double/even). | ||
132 | - J frsd floating point register (quad/multiple of 4). | ||
133 | - b crs1 coprocessor register | ||
134 | - c crs2 coprocessor register | ||
135 | - D crsd coprocessor register | ||
136 | - m alternate space register (asr) in rd | ||
137 | - M alternate space register (asr) in rs1 | ||
138 | - h 22 high bits. | ||
139 | - X 5 bit unsigned immediate | ||
140 | - Y 6 bit unsigned immediate | ||
141 | - 3 SIAM mode (3 bits). (v9b) | ||
142 | - K MEMBAR mask (7 bits). (v9) | ||
143 | - j 10 bit Immediate. (v9) | ||
144 | - I 11 bit Immediate. (v9) | ||
145 | - i 13 bit Immediate. | ||
146 | - n 22 bit immediate. | ||
147 | - k 2+14 bit PC relative immediate. (v9) | ||
148 | - G 19 bit PC relative immediate. (v9) | ||
149 | - l 22 bit PC relative immediate. | ||
150 | - L 30 bit PC relative immediate. | ||
151 | - a Annul. The annul bit is set. | ||
152 | - A Alternate address space. Stored as 8 bits. | ||
153 | - C Coprocessor state register. | ||
154 | - F floating point state register. | ||
155 | - p Processor state register. | ||
156 | - N Branch predict clear ",pn" (v9) | ||
157 | - T Branch predict set ",pt" (v9) | ||
158 | - z %icc. (v9) | ||
159 | - Z %xcc. (v9) | ||
160 | - q Floating point queue. | ||
161 | - r Single register that is both rs1 and rd. | ||
162 | - O Single register that is both rs2 and rd. | ||
163 | - Q Coprocessor queue. | ||
164 | - S Special case. | ||
165 | - t Trap base register. | ||
166 | - w Window invalid mask register. | ||
167 | - y Y register. | ||
168 | - u sparclet coprocessor registers in rd position | ||
169 | - U sparclet coprocessor registers in rs1 position | ||
170 | - E %ccr. (v9) | ||
171 | - s %fprs. (v9) | ||
172 | - P %pc. (v9) | ||
173 | - W %tick. (v9) | ||
174 | - o %asi. (v9) | ||
175 | - 6 %fcc0. (v9) | ||
176 | - 7 %fcc1. (v9) | ||
177 | - 8 %fcc2. (v9) | ||
178 | - 9 %fcc3. (v9) | ||
179 | - ! Privileged Register in rd (v9) | ||
180 | - ? Privileged Register in rs1 (v9) | ||
181 | - * Prefetch function constant. (v9) | ||
182 | - x OPF field (v9 impdep). | ||
183 | - 0 32/64 bit immediate for set or setx (v9) insns | ||
184 | - _ Ancillary state register in rd (v9a) | ||
185 | - / Ancillary state register in rs1 (v9a) | 120 | + # Number used by optimizer. It is ignored. |
121 | + 1 rs1 register. | ||
122 | + 2 rs2 register. | ||
123 | + d rd register. | ||
124 | + e frs1 floating point register. | ||
125 | + v frs1 floating point register (double/even). | ||
126 | + V frs1 floating point register (quad/multiple of 4). | ||
127 | + f frs2 floating point register. | ||
128 | + B frs2 floating point register (double/even). | ||
129 | + R frs2 floating point register (quad/multiple of 4). | ||
130 | + g frsd floating point register. | ||
131 | + H frsd floating point register (double/even). | ||
132 | + J frsd floating point register (quad/multiple of 4). | ||
133 | + b crs1 coprocessor register | ||
134 | + c crs2 coprocessor register | ||
135 | + D crsd coprocessor register | ||
136 | + m alternate space register (asr) in rd | ||
137 | + M alternate space register (asr) in rs1 | ||
138 | + h 22 high bits. | ||
139 | + X 5 bit unsigned immediate | ||
140 | + Y 6 bit unsigned immediate | ||
141 | + 3 SIAM mode (3 bits). (v9b) | ||
142 | + K MEMBAR mask (7 bits). (v9) | ||
143 | + j 10 bit Immediate. (v9) | ||
144 | + I 11 bit Immediate. (v9) | ||
145 | + i 13 bit Immediate. | ||
146 | + n 22 bit immediate. | ||
147 | + k 2+14 bit PC relative immediate. (v9) | ||
148 | + G 19 bit PC relative immediate. (v9) | ||
149 | + l 22 bit PC relative immediate. | ||
150 | + L 30 bit PC relative immediate. | ||
151 | + a Annul. The annul bit is set. | ||
152 | + A Alternate address space. Stored as 8 bits. | ||
153 | + C Coprocessor state register. | ||
154 | + F floating point state register. | ||
155 | + p Processor state register. | ||
156 | + N Branch predict clear ",pn" (v9) | ||
157 | + T Branch predict set ",pt" (v9) | ||
158 | + z %icc. (v9) | ||
159 | + Z %xcc. (v9) | ||
160 | + q Floating point queue. | ||
161 | + r Single register that is both rs1 and rd. | ||
162 | + O Single register that is both rs2 and rd. | ||
163 | + Q Coprocessor queue. | ||
164 | + S Special case. | ||
165 | + t Trap base register. | ||
166 | + w Window invalid mask register. | ||
167 | + y Y register. | ||
168 | + u sparclet coprocessor registers in rd position | ||
169 | + U sparclet coprocessor registers in rs1 position | ||
170 | + E %ccr. (v9) | ||
171 | + s %fprs. (v9) | ||
172 | + P %pc. (v9) | ||
173 | + W %tick. (v9) | ||
174 | + o %asi. (v9) | ||
175 | + 6 %fcc0. (v9) | ||
176 | + 7 %fcc1. (v9) | ||
177 | + 8 %fcc2. (v9) | ||
178 | + 9 %fcc3. (v9) | ||
179 | + ! Privileged Register in rd (v9) | ||
180 | + ? Privileged Register in rs1 (v9) | ||
181 | + * Prefetch function constant. (v9) | ||
182 | + x OPF field (v9 impdep). | ||
183 | + 0 32/64 bit immediate for set or setx (v9) insns | ||
184 | + _ Ancillary state register in rd (v9a) | ||
185 | + / Ancillary state register in rs1 (v9a) | ||
186 | 186 | ||
187 | The following chars are unused: (note: ,[] are used as punctuation) | 187 | The following chars are unused: (note: ,[] are used as punctuation) |
188 | [45] | 188 | [45] |
189 | 189 | ||
190 | */ | 190 | */ |
191 | 191 | ||
192 | -#define OP2(x) (((x)&0x7) << 22) /* op2 field of format2 insns */ | ||
193 | -#define OP3(x) (((x)&0x3f) << 19) /* op3 field of format3 insns */ | ||
194 | -#define OP(x) ((unsigned)((x)&0x3) << 30) /* op field of all insns */ | ||
195 | -#define OPF(x) (((x)&0x1ff) << 5) /* opf field of float insns */ | ||
196 | -#define OPF_LOW5(x) OPF((x)&0x1f) /* v9 */ | ||
197 | -#define F3F(x, y, z) (OP(x) | OP3(y) | OPF(z)) /* format3 float insns */ | ||
198 | -#define F3I(x) (((x)&0x1) << 13) /* immediate field of format 3 insns */ | ||
199 | -#define F2(x, y) (OP(x) | OP2(y)) /* format 2 insns */ | ||
200 | -#define F3(x, y, z) (OP(x) | OP3(y) | F3I(z)) /* format3 insns */ | ||
201 | -#define F1(x) (OP(x)) | ||
202 | -#define DISP30(x) ((x)&0x3fffffff) | ||
203 | -#define ASI(x) (((x)&0xff) << 5) /* asi field of format3 insns */ | ||
204 | -#define RS2(x) ((x)&0x1f) /* rs2 field */ | ||
205 | -#define SIMM13(x) ((x)&0x1fff) /* simm13 field */ | ||
206 | -#define RD(x) (((x)&0x1f) << 25) /* destination register field */ | ||
207 | -#define RS1(x) (((x)&0x1f) << 14) /* rs1 field */ | ||
208 | -#define ASI_RS2(x) (SIMM13(x)) | ||
209 | -#define MEMBAR(x) ((x)&0x7f) | ||
210 | -#define SLCPOP(x) (((x)&0x7f) << 6) /* sparclet cpop */ | ||
211 | - | ||
212 | -#define ANNUL (1<<29) | ||
213 | -#define BPRED (1<<19) /* v9 */ | ||
214 | -#define IMMED F3I(1) | ||
215 | -#define RD_G0 RD(~0) | ||
216 | -#define RS1_G0 RS1(~0) | ||
217 | -#define RS2_G0 RS2(~0) | 192 | +#define OP2(x) (((x)&0x7) << 22) /* op2 field of format2 insns */ |
193 | +#define OP3(x) (((x)&0x3f) << 19) /* op3 field of format3 insns */ | ||
194 | +#define OP(x) ((unsigned)((x)&0x3) << 30) /* op field of all insns */ | ||
195 | +#define OPF(x) (((x)&0x1ff) << 5) /* opf field of float insns */ | ||
196 | +#define OPF_LOW5(x) OPF((x)&0x1f) /* v9 */ | ||
197 | +#define F3F(x, y, z) (OP(x) | OP3(y) | OPF(z)) /* format3 float insns */ | ||
198 | +#define F3I(x) (((x)&0x1) << 13) /* immediate field of format 3 insns */ | ||
199 | +#define F2(x, y) (OP(x) | OP2(y)) /* format 2 insns */ | ||
200 | +#define F3(x, y, z) (OP(x) | OP3(y) | F3I(z)) /* format3 insns */ | ||
201 | +#define F1(x) (OP(x)) | ||
202 | +#define DISP30(x) ((x)&0x3fffffff) | ||
203 | +#define ASI(x) (((x)&0xff) << 5) /* asi field of format3 insns */ | ||
204 | +#define RS2(x) ((x)&0x1f) /* rs2 field */ | ||
205 | +#define SIMM13(x) ((x)&0x1fff) /* simm13 field */ | ||
206 | +#define RD(x) (((x)&0x1f) << 25) /* destination register field */ | ||
207 | +#define RS1(x) (((x)&0x1f) << 14) /* rs1 field */ | ||
208 | +#define ASI_RS2(x) (SIMM13(x)) | ||
209 | +#define MEMBAR(x) ((x)&0x7f) | ||
210 | +#define SLCPOP(x) (((x)&0x7f) << 6) /* sparclet cpop */ | ||
211 | + | ||
212 | +#define ANNUL (1<<29) | ||
213 | +#define BPRED (1<<19) /* v9 */ | ||
214 | +#define IMMED F3I(1) | ||
215 | +#define RD_G0 RD(~0) | ||
216 | +#define RS1_G0 RS1(~0) | ||
217 | +#define RS2_G0 RS2(~0) | ||
218 | 218 | ||
219 | extern const struct sparc_opcode sparc_opcodes[]; | 219 | extern const struct sparc_opcode sparc_opcodes[]; |
220 | extern const int sparc_num_opcodes; | 220 | extern const int sparc_num_opcodes; |
@@ -229,43 +229,43 @@ extern int sparc_encode_sparclet_cpreg PARAMS ((const char *)); | @@ -229,43 +229,43 @@ extern int sparc_encode_sparclet_cpreg PARAMS ((const char *)); | ||
229 | extern const char *sparc_decode_sparclet_cpreg PARAMS ((int)); | 229 | extern const char *sparc_decode_sparclet_cpreg PARAMS ((int)); |
230 | 230 | ||
231 | /* Some defines to make life easy. */ | 231 | /* Some defines to make life easy. */ |
232 | -#define MASK_V6 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V6) | ||
233 | -#define MASK_V7 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V7) | ||
234 | -#define MASK_V8 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8) | ||
235 | -#define MASK_SPARCLET SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLET) | ||
236 | -#define MASK_SPARCLITE SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE) | ||
237 | -#define MASK_V9 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9) | ||
238 | -#define MASK_V9A SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A) | ||
239 | -#define MASK_V9B SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9B) | 232 | +#define MASK_V6 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V6) |
233 | +#define MASK_V7 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V7) | ||
234 | +#define MASK_V8 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8) | ||
235 | +#define MASK_SPARCLET SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLET) | ||
236 | +#define MASK_SPARCLITE SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE) | ||
237 | +#define MASK_V9 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9) | ||
238 | +#define MASK_V9A SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A) | ||
239 | +#define MASK_V9B SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9B) | ||
240 | 240 | ||
241 | /* Bit masks of architectures supporting the insn. */ | 241 | /* Bit masks of architectures supporting the insn. */ |
242 | 242 | ||
243 | -#define v6 (MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLET \ | ||
244 | - | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) | 243 | +#define v6 (MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLET \ |
244 | + | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) | ||
245 | /* v6 insns not supported on the sparclet */ | 245 | /* v6 insns not supported on the sparclet */ |
246 | -#define v6notlet (MASK_V6 | MASK_V7 | MASK_V8 \ | ||
247 | - | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) | ||
248 | -#define v7 (MASK_V7 | MASK_V8 | MASK_SPARCLET \ | ||
249 | - | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) | 246 | +#define v6notlet (MASK_V6 | MASK_V7 | MASK_V8 \ |
247 | + | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) | ||
248 | +#define v7 (MASK_V7 | MASK_V8 | MASK_SPARCLET \ | ||
249 | + | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) | ||
250 | /* Although not all insns are implemented in hardware, sparclite is defined | 250 | /* Although not all insns are implemented in hardware, sparclite is defined |
251 | to be a superset of v8. Unimplemented insns trap and are then theoretically | 251 | to be a superset of v8. Unimplemented insns trap and are then theoretically |
252 | implemented in software. | 252 | implemented in software. |
253 | It's not clear that the same is true for sparclet, although the docs | 253 | It's not clear that the same is true for sparclet, although the docs |
254 | suggest it is. Rather than complicating things, the sparclet assembler | 254 | suggest it is. Rather than complicating things, the sparclet assembler |
255 | recognizes all v8 insns. */ | 255 | recognizes all v8 insns. */ |
256 | -#define v8 (MASK_V8 | MASK_SPARCLET | MASK_SPARCLITE \ | ||
257 | - | MASK_V9 | MASK_V9A | MASK_V9B) | ||
258 | -#define sparclet (MASK_SPARCLET) | ||
259 | -#define sparclite (MASK_SPARCLITE) | ||
260 | -#define v9 (MASK_V9 | MASK_V9A | MASK_V9B) | ||
261 | -#define v9a (MASK_V9A | MASK_V9B) | ||
262 | -#define v9b (MASK_V9B) | 256 | +#define v8 (MASK_V8 | MASK_SPARCLET | MASK_SPARCLITE \ |
257 | + | MASK_V9 | MASK_V9A | MASK_V9B) | ||
258 | +#define sparclet (MASK_SPARCLET) | ||
259 | +#define sparclite (MASK_SPARCLITE) | ||
260 | +#define v9 (MASK_V9 | MASK_V9A | MASK_V9B) | ||
261 | +#define v9a (MASK_V9A | MASK_V9B) | ||
262 | +#define v9b (MASK_V9B) | ||
263 | /* v6 insns not supported by v9 */ | 263 | /* v6 insns not supported by v9 */ |
264 | -#define v6notv9 (MASK_V6 | MASK_V7 | MASK_V8 \ | ||
265 | - | MASK_SPARCLET | MASK_SPARCLITE) | 264 | +#define v6notv9 (MASK_V6 | MASK_V7 | MASK_V8 \ |
265 | + | MASK_SPARCLET | MASK_SPARCLITE) | ||
266 | /* v9a instructions which would appear to be aliases to v9's impdep's | 266 | /* v9a instructions which would appear to be aliases to v9's impdep's |
267 | otherwise */ | 267 | otherwise */ |
268 | -#define v9notv9a (MASK_V9) | 268 | +#define v9notv9a (MASK_V9) |
269 | 269 | ||
270 | /* Table of opcode architectures. | 270 | /* Table of opcode architectures. |
271 | The order is defined in opcode/sparc.h. */ | 271 | The order is defined in opcode/sparc.h. */ |
@@ -296,959 +296,959 @@ sparc_opcode_lookup_arch (name) | @@ -296,959 +296,959 @@ sparc_opcode_lookup_arch (name) | ||
296 | for (p = &sparc_opcode_archs[0]; p->name; ++p) | 296 | for (p = &sparc_opcode_archs[0]; p->name; ++p) |
297 | { | 297 | { |
298 | if (strcmp (name, p->name) == 0) | 298 | if (strcmp (name, p->name) == 0) |
299 | - return (enum sparc_opcode_arch_val) (p - &sparc_opcode_archs[0]); | 299 | + return (enum sparc_opcode_arch_val) (p - &sparc_opcode_archs[0]); |
300 | } | 300 | } |
301 | 301 | ||
302 | return SPARC_OPCODE_ARCH_BAD; | 302 | return SPARC_OPCODE_ARCH_BAD; |
303 | } | 303 | } |
304 | 304 | ||
305 | /* Branch condition field. */ | 305 | /* Branch condition field. */ |
306 | -#define COND(x) (((x)&0xf)<<25) | 306 | +#define COND(x) (((x)&0xf)<<25) |
307 | 307 | ||
308 | /* v9: Move (MOVcc and FMOVcc) condition field. */ | 308 | /* v9: Move (MOVcc and FMOVcc) condition field. */ |
309 | -#define MCOND(x,i_or_f) ((((i_or_f)&1)<<18)|(((x)>>11)&(0xf<<14))) /* v9 */ | 309 | +#define MCOND(x,i_or_f) ((((i_or_f)&1)<<18)|(((x)>>11)&(0xf<<14))) /* v9 */ |
310 | 310 | ||
311 | /* v9: Move register (MOVRcc and FMOVRcc) condition field. */ | 311 | /* v9: Move register (MOVRcc and FMOVRcc) condition field. */ |
312 | -#define RCOND(x) (((x)&0x7)<<10) /* v9 */ | ||
313 | - | ||
314 | -#define CONDA (COND(0x8)) | ||
315 | -#define CONDCC (COND(0xd)) | ||
316 | -#define CONDCS (COND(0x5)) | ||
317 | -#define CONDE (COND(0x1)) | ||
318 | -#define CONDG (COND(0xa)) | ||
319 | -#define CONDGE (COND(0xb)) | ||
320 | -#define CONDGU (COND(0xc)) | ||
321 | -#define CONDL (COND(0x3)) | ||
322 | -#define CONDLE (COND(0x2)) | ||
323 | -#define CONDLEU (COND(0x4)) | ||
324 | -#define CONDN (COND(0x0)) | ||
325 | -#define CONDNE (COND(0x9)) | ||
326 | -#define CONDNEG (COND(0x6)) | ||
327 | -#define CONDPOS (COND(0xe)) | ||
328 | -#define CONDVC (COND(0xf)) | ||
329 | -#define CONDVS (COND(0x7)) | ||
330 | - | ||
331 | -#define CONDNZ CONDNE | ||
332 | -#define CONDZ CONDE | ||
333 | -#define CONDGEU CONDCC | ||
334 | -#define CONDLU CONDCS | ||
335 | - | ||
336 | -#define FCONDA (COND(0x8)) | ||
337 | -#define FCONDE (COND(0x9)) | ||
338 | -#define FCONDG (COND(0x6)) | ||
339 | -#define FCONDGE (COND(0xb)) | ||
340 | -#define FCONDL (COND(0x4)) | ||
341 | -#define FCONDLE (COND(0xd)) | ||
342 | -#define FCONDLG (COND(0x2)) | ||
343 | -#define FCONDN (COND(0x0)) | ||
344 | -#define FCONDNE (COND(0x1)) | ||
345 | -#define FCONDO (COND(0xf)) | ||
346 | -#define FCONDU (COND(0x7)) | ||
347 | -#define FCONDUE (COND(0xa)) | ||
348 | -#define FCONDUG (COND(0x5)) | ||
349 | -#define FCONDUGE (COND(0xc)) | ||
350 | -#define FCONDUL (COND(0x3)) | ||
351 | -#define FCONDULE (COND(0xe)) | ||
352 | - | ||
353 | -#define FCONDNZ FCONDNE | ||
354 | -#define FCONDZ FCONDE | ||
355 | - | ||
356 | -#define ICC (0) /* v9 */ | 312 | +#define RCOND(x) (((x)&0x7)<<10) /* v9 */ |
313 | + | ||
314 | +#define CONDA (COND(0x8)) | ||
315 | +#define CONDCC (COND(0xd)) | ||
316 | +#define CONDCS (COND(0x5)) | ||
317 | +#define CONDE (COND(0x1)) | ||
318 | +#define CONDG (COND(0xa)) | ||
319 | +#define CONDGE (COND(0xb)) | ||
320 | +#define CONDGU (COND(0xc)) | ||
321 | +#define CONDL (COND(0x3)) | ||
322 | +#define CONDLE (COND(0x2)) | ||
323 | +#define CONDLEU (COND(0x4)) | ||
324 | +#define CONDN (COND(0x0)) | ||
325 | +#define CONDNE (COND(0x9)) | ||
326 | +#define CONDNEG (COND(0x6)) | ||
327 | +#define CONDPOS (COND(0xe)) | ||
328 | +#define CONDVC (COND(0xf)) | ||
329 | +#define CONDVS (COND(0x7)) | ||
330 | + | ||
331 | +#define CONDNZ CONDNE | ||
332 | +#define CONDZ CONDE | ||
333 | +#define CONDGEU CONDCC | ||
334 | +#define CONDLU CONDCS | ||
335 | + | ||
336 | +#define FCONDA (COND(0x8)) | ||
337 | +#define FCONDE (COND(0x9)) | ||
338 | +#define FCONDG (COND(0x6)) | ||
339 | +#define FCONDGE (COND(0xb)) | ||
340 | +#define FCONDL (COND(0x4)) | ||
341 | +#define FCONDLE (COND(0xd)) | ||
342 | +#define FCONDLG (COND(0x2)) | ||
343 | +#define FCONDN (COND(0x0)) | ||
344 | +#define FCONDNE (COND(0x1)) | ||
345 | +#define FCONDO (COND(0xf)) | ||
346 | +#define FCONDU (COND(0x7)) | ||
347 | +#define FCONDUE (COND(0xa)) | ||
348 | +#define FCONDUG (COND(0x5)) | ||
349 | +#define FCONDUGE (COND(0xc)) | ||
350 | +#define FCONDUL (COND(0x3)) | ||
351 | +#define FCONDULE (COND(0xe)) | ||
352 | + | ||
353 | +#define FCONDNZ FCONDNE | ||
354 | +#define FCONDZ FCONDE | ||
355 | + | ||
356 | +#define ICC (0) /* v9 */ | ||
357 | #define XCC (1<<12) /* v9 */ | 357 | #define XCC (1<<12) /* v9 */ |
358 | -#define FCC(x) (((x)&0x3)<<11) /* v9 */ | ||
359 | -#define FBFCC(x) (((x)&0x3)<<20) /* v9 */ | 358 | +#define FCC(x) (((x)&0x3)<<11) /* v9 */ |
359 | +#define FBFCC(x) (((x)&0x3)<<20) /* v9 */ | ||
360 | 360 | ||
361 | /* The order of the opcodes in the table is significant: | 361 | /* The order of the opcodes in the table is significant: |
362 | 362 | ||
363 | - * The assembler requires that all instances of the same mnemonic must | ||
364 | - be consecutive. If they aren't, the assembler will bomb at runtime. | 363 | + * The assembler requires that all instances of the same mnemonic must |
364 | + be consecutive. If they aren't, the assembler will bomb at runtime. | ||
365 | 365 | ||
366 | - * The disassembler should not care about the order of the opcodes. | 366 | + * The disassembler should not care about the order of the opcodes. |
367 | 367 | ||
368 | */ | 368 | */ |
369 | 369 | ||
370 | /* Entries for commutative arithmetic operations. */ | 370 | /* Entries for commutative arithmetic operations. */ |
371 | /* ??? More entries can make use of this. */ | 371 | /* ??? More entries can make use of this. */ |
372 | #define COMMUTEOP(opcode, op3, arch_mask) \ | 372 | #define COMMUTEOP(opcode, op3, arch_mask) \ |
373 | -{ opcode, F3(2, op3, 0), F3(~2, ~op3, ~0)|ASI(~0), "1,2,d", 0, arch_mask }, \ | ||
374 | -{ opcode, F3(2, op3, 1), F3(~2, ~op3, ~1), "1,i,d", 0, arch_mask }, \ | ||
375 | -{ opcode, F3(2, op3, 1), F3(~2, ~op3, ~1), "i,1,d", 0, arch_mask } | 373 | +{ opcode, F3(2, op3, 0), F3(~2, ~op3, ~0)|ASI(~0), "1,2,d", 0, arch_mask }, \ |
374 | +{ opcode, F3(2, op3, 1), F3(~2, ~op3, ~1), "1,i,d", 0, arch_mask }, \ | ||
375 | +{ opcode, F3(2, op3, 1), F3(~2, ~op3, ~1), "i,1,d", 0, arch_mask } | ||
376 | 376 | ||
377 | const struct sparc_opcode sparc_opcodes[] = { | 377 | const struct sparc_opcode sparc_opcodes[] = { |
378 | 378 | ||
379 | -{ "ld", F3(3, 0x00, 0), F3(~3, ~0x00, ~0), "[1+2],d", 0, v6 }, | ||
380 | -{ "ld", F3(3, 0x00, 0), F3(~3, ~0x00, ~0)|RS2_G0, "[1],d", 0, v6 }, /* ld [rs1+%g0],d */ | ||
381 | -{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[1+i],d", 0, v6 }, | ||
382 | -{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[i+1],d", 0, v6 }, | ||
383 | -{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
384 | -{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ld [rs1+0],d */ | ||
385 | -{ "ld", F3(3, 0x20, 0), F3(~3, ~0x20, ~0), "[1+2],g", 0, v6 }, | ||
386 | -{ "ld", F3(3, 0x20, 0), F3(~3, ~0x20, ~0)|RS2_G0, "[1],g", 0, v6 }, /* ld [rs1+%g0],d */ | ||
387 | -{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1), "[1+i],g", 0, v6 }, | ||
388 | -{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1), "[i+1],g", 0, v6 }, | ||
389 | -{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|RS1_G0, "[i],g", 0, v6 }, | ||
390 | -{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|SIMM13(~0), "[1],g", 0, v6 }, /* ld [rs1+0],d */ | ||
391 | - | ||
392 | -{ "ld", F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RD(~0), "[1+2],F", 0, v6 }, | ||
393 | -{ "ld", F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RS2_G0|RD(~0),"[1],F", 0, v6 }, /* ld [rs1+%g0],d */ | ||
394 | -{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RD(~0), "[1+i],F", 0, v6 }, | ||
395 | -{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RD(~0), "[i+1],F", 0, v6 }, | ||
396 | -{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RS1_G0|RD(~0),"[i],F", 0, v6 }, | ||
397 | -{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|SIMM13(~0)|RD(~0),"[1],F", 0, v6 }, /* ld [rs1+0],d */ | ||
398 | - | ||
399 | -{ "ld", F3(3, 0x30, 0), F3(~3, ~0x30, ~0), "[1+2],D", 0, v6notv9 }, | ||
400 | -{ "ld", F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0, "[1],D", 0, v6notv9 }, /* ld [rs1+%g0],d */ | ||
401 | -{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[1+i],D", 0, v6notv9 }, | ||
402 | -{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[i+1],D", 0, v6notv9 }, | ||
403 | -{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0, "[i],D", 0, v6notv9 }, | ||
404 | -{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0), "[1],D", 0, v6notv9 }, /* ld [rs1+0],d */ | ||
405 | -{ "ld", F3(3, 0x31, 0), F3(~3, ~0x31, ~0), "[1+2],C", 0, v6notv9 }, | ||
406 | -{ "ld", F3(3, 0x31, 0), F3(~3, ~0x31, ~0)|RS2_G0, "[1],C", 0, v6notv9 }, /* ld [rs1+%g0],d */ | ||
407 | -{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1), "[1+i],C", 0, v6notv9 }, | ||
408 | -{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1), "[i+1],C", 0, v6notv9 }, | ||
409 | -{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|RS1_G0, "[i],C", 0, v6notv9 }, | ||
410 | -{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|SIMM13(~0), "[1],C", 0, v6notv9 }, /* ld [rs1+0],d */ | 379 | +{ "ld", F3(3, 0x00, 0), F3(~3, ~0x00, ~0), "[1+2],d", 0, v6 }, |
380 | +{ "ld", F3(3, 0x00, 0), F3(~3, ~0x00, ~0)|RS2_G0, "[1],d", 0, v6 }, /* ld [rs1+%g0],d */ | ||
381 | +{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[1+i],d", 0, v6 }, | ||
382 | +{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[i+1],d", 0, v6 }, | ||
383 | +{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
384 | +{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ld [rs1+0],d */ | ||
385 | +{ "ld", F3(3, 0x20, 0), F3(~3, ~0x20, ~0), "[1+2],g", 0, v6 }, | ||
386 | +{ "ld", F3(3, 0x20, 0), F3(~3, ~0x20, ~0)|RS2_G0, "[1],g", 0, v6 }, /* ld [rs1+%g0],d */ | ||
387 | +{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1), "[1+i],g", 0, v6 }, | ||
388 | +{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1), "[i+1],g", 0, v6 }, | ||
389 | +{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|RS1_G0, "[i],g", 0, v6 }, | ||
390 | +{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|SIMM13(~0), "[1],g", 0, v6 }, /* ld [rs1+0],d */ | ||
391 | + | ||
392 | +{ "ld", F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RD(~0), "[1+2],F", 0, v6 }, | ||
393 | +{ "ld", F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RS2_G0|RD(~0),"[1],F", 0, v6 }, /* ld [rs1+%g0],d */ | ||
394 | +{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RD(~0), "[1+i],F", 0, v6 }, | ||
395 | +{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RD(~0), "[i+1],F", 0, v6 }, | ||
396 | +{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RS1_G0|RD(~0),"[i],F", 0, v6 }, | ||
397 | +{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|SIMM13(~0)|RD(~0),"[1],F", 0, v6 }, /* ld [rs1+0],d */ | ||
398 | + | ||
399 | +{ "ld", F3(3, 0x30, 0), F3(~3, ~0x30, ~0), "[1+2],D", 0, v6notv9 }, | ||
400 | +{ "ld", F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0, "[1],D", 0, v6notv9 }, /* ld [rs1+%g0],d */ | ||
401 | +{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[1+i],D", 0, v6notv9 }, | ||
402 | +{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[i+1],D", 0, v6notv9 }, | ||
403 | +{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0, "[i],D", 0, v6notv9 }, | ||
404 | +{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0), "[1],D", 0, v6notv9 }, /* ld [rs1+0],d */ | ||
405 | +{ "ld", F3(3, 0x31, 0), F3(~3, ~0x31, ~0), "[1+2],C", 0, v6notv9 }, | ||
406 | +{ "ld", F3(3, 0x31, 0), F3(~3, ~0x31, ~0)|RS2_G0, "[1],C", 0, v6notv9 }, /* ld [rs1+%g0],d */ | ||
407 | +{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1), "[1+i],C", 0, v6notv9 }, | ||
408 | +{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1), "[i+1],C", 0, v6notv9 }, | ||
409 | +{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|RS1_G0, "[i],C", 0, v6notv9 }, | ||
410 | +{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|SIMM13(~0), "[1],C", 0, v6notv9 }, /* ld [rs1+0],d */ | ||
411 | 411 | ||
412 | /* The v9 LDUW is the same as the old 'ld' opcode, it is not the same as the | 412 | /* The v9 LDUW is the same as the old 'ld' opcode, it is not the same as the |
413 | 'ld' pseudo-op in v9. */ | 413 | 'ld' pseudo-op in v9. */ |
414 | -{ "lduw", F3(3, 0x00, 0), F3(~3, ~0x00, ~0), "[1+2],d", F_ALIAS, v9 }, | ||
415 | -{ "lduw", F3(3, 0x00, 0), F3(~3, ~0x00, ~0)|RS2_G0, "[1],d", F_ALIAS, v9 }, /* ld [rs1+%g0],d */ | ||
416 | -{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[1+i],d", F_ALIAS, v9 }, | ||
417 | -{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[i+1],d", F_ALIAS, v9 }, | ||
418 | -{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|RS1_G0, "[i],d", F_ALIAS, v9 }, | ||
419 | -{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|SIMM13(~0), "[1],d", F_ALIAS, v9 }, /* ld [rs1+0],d */ | ||
420 | - | ||
421 | -{ "ldd", F3(3, 0x03, 0), F3(~3, ~0x03, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
422 | -{ "ldd", F3(3, 0x03, 0), F3(~3, ~0x03, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldd [rs1+%g0],d */ | ||
423 | -{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1), "[1+i],d", 0, v6 }, | ||
424 | -{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1), "[i+1],d", 0, v6 }, | ||
425 | -{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
426 | -{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldd [rs1+0],d */ | ||
427 | -{ "ldd", F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI(~0), "[1+2],H", 0, v6 }, | ||
428 | -{ "ldd", F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI_RS2(~0), "[1],H", 0, v6 }, /* ldd [rs1+%g0],d */ | ||
429 | -{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1), "[1+i],H", 0, v6 }, | ||
430 | -{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1), "[i+1],H", 0, v6 }, | ||
431 | -{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|RS1_G0, "[i],H", 0, v6 }, | ||
432 | -{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|SIMM13(~0), "[1],H", 0, v6 }, /* ldd [rs1+0],d */ | ||
433 | - | ||
434 | -{ "ldd", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI(~0), "[1+2],D", 0, v6notv9 }, | ||
435 | -{ "ldd", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI_RS2(~0), "[1],D", 0, v6notv9 }, /* ldd [rs1+%g0],d */ | ||
436 | -{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[1+i],D", 0, v6notv9 }, | ||
437 | -{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[i+1],D", 0, v6notv9 }, | ||
438 | -{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0, "[i],D", 0, v6notv9 }, | ||
439 | -{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0), "[1],D", 0, v6notv9 }, /* ldd [rs1+0],d */ | ||
440 | - | ||
441 | -{ "ldq", F3(3, 0x22, 0), F3(~3, ~0x22, ~0)|ASI(~0), "[1+2],J", 0, v9 }, | ||
442 | -{ "ldq", F3(3, 0x22, 0), F3(~3, ~0x22, ~0)|ASI_RS2(~0), "[1],J", 0, v9 }, /* ldd [rs1+%g0],d */ | ||
443 | -{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1), "[1+i],J", 0, v9 }, | ||
444 | -{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1), "[i+1],J", 0, v9 }, | ||
445 | -{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1)|RS1_G0, "[i],J", 0, v9 }, | ||
446 | -{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1)|SIMM13(~0), "[1],J", 0, v9 }, /* ldd [rs1+0],d */ | ||
447 | - | ||
448 | -{ "ldsb", F3(3, 0x09, 0), F3(~3, ~0x09, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
449 | -{ "ldsb", F3(3, 0x09, 0), F3(~3, ~0x09, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldsb [rs1+%g0],d */ | ||
450 | -{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1), "[1+i],d", 0, v6 }, | ||
451 | -{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1), "[i+1],d", 0, v6 }, | ||
452 | -{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
453 | -{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldsb [rs1+0],d */ | ||
454 | - | ||
455 | -{ "ldsh", F3(3, 0x0a, 0), F3(~3, ~0x0a, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldsh [rs1+%g0],d */ | ||
456 | -{ "ldsh", F3(3, 0x0a, 0), F3(~3, ~0x0a, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
457 | -{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1), "[1+i],d", 0, v6 }, | ||
458 | -{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1), "[i+1],d", 0, v6 }, | ||
459 | -{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
460 | -{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldsh [rs1+0],d */ | ||
461 | - | ||
462 | -{ "ldstub", F3(3, 0x0d, 0), F3(~3, ~0x0d, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
463 | -{ "ldstub", F3(3, 0x0d, 0), F3(~3, ~0x0d, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldstub [rs1+%g0],d */ | ||
464 | -{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1), "[1+i],d", 0, v6 }, | ||
465 | -{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1), "[i+1],d", 0, v6 }, | ||
466 | -{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
467 | -{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldstub [rs1+0],d */ | ||
468 | - | ||
469 | -{ "ldsw", F3(3, 0x08, 0), F3(~3, ~0x08, ~0)|ASI(~0), "[1+2],d", 0, v9 }, | ||
470 | -{ "ldsw", F3(3, 0x08, 0), F3(~3, ~0x08, ~0)|ASI_RS2(~0), "[1],d", 0, v9 }, /* ldsw [rs1+%g0],d */ | ||
471 | -{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1), "[1+i],d", 0, v9 }, | ||
472 | -{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1), "[i+1],d", 0, v9 }, | ||
473 | -{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1)|RS1_G0, "[i],d", 0, v9 }, | ||
474 | -{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1)|SIMM13(~0), "[1],d", 0, v9 }, /* ldsw [rs1+0],d */ | ||
475 | - | ||
476 | -{ "ldub", F3(3, 0x01, 0), F3(~3, ~0x01, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
477 | -{ "ldub", F3(3, 0x01, 0), F3(~3, ~0x01, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldub [rs1+%g0],d */ | ||
478 | -{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1), "[1+i],d", 0, v6 }, | ||
479 | -{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1), "[i+1],d", 0, v6 }, | ||
480 | -{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
481 | -{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldub [rs1+0],d */ | ||
482 | - | ||
483 | -{ "lduh", F3(3, 0x02, 0), F3(~3, ~0x02, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
484 | -{ "lduh", F3(3, 0x02, 0), F3(~3, ~0x02, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* lduh [rs1+%g0],d */ | ||
485 | -{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1), "[1+i],d", 0, v6 }, | ||
486 | -{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1), "[i+1],d", 0, v6 }, | ||
487 | -{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
488 | -{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* lduh [rs1+0],d */ | ||
489 | - | ||
490 | -{ "ldx", F3(3, 0x0b, 0), F3(~3, ~0x0b, ~0)|ASI(~0), "[1+2],d", 0, v9 }, | ||
491 | -{ "ldx", F3(3, 0x0b, 0), F3(~3, ~0x0b, ~0)|ASI_RS2(~0), "[1],d", 0, v9 }, /* ldx [rs1+%g0],d */ | ||
492 | -{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1), "[1+i],d", 0, v9 }, | ||
493 | -{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1), "[i+1],d", 0, v9 }, | ||
494 | -{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1)|RS1_G0, "[i],d", 0, v9 }, | ||
495 | -{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1)|SIMM13(~0), "[1],d", 0, v9 }, /* ldx [rs1+0],d */ | ||
496 | - | ||
497 | -{ "ldx", F3(3, 0x21, 0)|RD(1), F3(~3, ~0x21, ~0)|RD(~1), "[1+2],F", 0, v9 }, | ||
498 | -{ "ldx", F3(3, 0x21, 0)|RD(1), F3(~3, ~0x21, ~0)|RS2_G0|RD(~1), "[1],F", 0, v9 }, /* ld [rs1+%g0],d */ | ||
499 | -{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RD(~1), "[1+i],F", 0, v9 }, | ||
500 | -{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RD(~1), "[i+1],F", 0, v9 }, | ||
501 | -{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RS1_G0|RD(~1), "[i],F", 0, v9 }, | ||
502 | -{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|SIMM13(~0)|RD(~1),"[1],F", 0, v9 }, /* ld [rs1+0],d */ | ||
503 | - | ||
504 | -{ "lda", F3(3, 0x10, 0), F3(~3, ~0x10, ~0), "[1+2]A,d", 0, v6 }, | ||
505 | -{ "lda", F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lda [rs1+%g0],d */ | ||
506 | -{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[1+i]o,d", 0, v9 }, | ||
507 | -{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[i+1]o,d", 0, v9 }, | ||
508 | -{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
509 | -{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
510 | -{ "lda", F3(3, 0x30, 0), F3(~3, ~0x30, ~0), "[1+2]A,g", 0, v9 }, | ||
511 | -{ "lda", F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0, "[1]A,g", 0, v9 }, /* lda [rs1+%g0],d */ | ||
512 | -{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[1+i]o,g", 0, v9 }, | ||
513 | -{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[i+1]o,g", 0, v9 }, | ||
514 | -{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0, "[i]o,g", 0, v9 }, | ||
515 | -{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0), "[1]o,g", 0, v9 }, /* ld [rs1+0],d */ | ||
516 | - | ||
517 | -{ "ldda", F3(3, 0x13, 0), F3(~3, ~0x13, ~0), "[1+2]A,d", 0, v6 }, | ||
518 | -{ "ldda", F3(3, 0x13, 0), F3(~3, ~0x13, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldda [rs1+%g0],d */ | ||
519 | -{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1), "[1+i]o,d", 0, v9 }, | ||
520 | -{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1), "[i+1]o,d", 0, v9 }, | ||
521 | -{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
522 | -{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
523 | - | ||
524 | -{ "ldda", F3(3, 0x33, 0), F3(~3, ~0x33, ~0), "[1+2]A,H", 0, v9 }, | ||
525 | -{ "ldda", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|RS2_G0, "[1]A,H", 0, v9 }, /* ldda [rs1+%g0],d */ | ||
526 | -{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[1+i]o,H", 0, v9 }, | ||
527 | -{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[i+1]o,H", 0, v9 }, | ||
528 | -{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0, "[i]o,H", 0, v9 }, | ||
529 | -{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0), "[1]o,H", 0, v9 }, /* ld [rs1+0],d */ | ||
530 | - | ||
531 | -{ "ldqa", F3(3, 0x32, 0), F3(~3, ~0x32, ~0), "[1+2]A,J", 0, v9 }, | ||
532 | -{ "ldqa", F3(3, 0x32, 0), F3(~3, ~0x32, ~0)|RS2_G0, "[1]A,J", 0, v9 }, /* ldd [rs1+%g0],d */ | ||
533 | -{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1), "[1+i]o,J", 0, v9 }, | ||
534 | -{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1), "[i+1]o,J", 0, v9 }, | ||
535 | -{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1)|RS1_G0, "[i]o,J", 0, v9 }, | ||
536 | -{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1)|SIMM13(~0), "[1]o,J", 0, v9 }, /* ldd [rs1+0],d */ | ||
537 | - | ||
538 | -{ "ldsba", F3(3, 0x19, 0), F3(~3, ~0x19, ~0), "[1+2]A,d", 0, v6 }, | ||
539 | -{ "ldsba", F3(3, 0x19, 0), F3(~3, ~0x19, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldsba [rs1+%g0],d */ | ||
540 | -{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1), "[1+i]o,d", 0, v9 }, | ||
541 | -{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1), "[i+1]o,d", 0, v9 }, | ||
542 | -{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
543 | -{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
544 | - | ||
545 | -{ "ldsha", F3(3, 0x1a, 0), F3(~3, ~0x1a, ~0), "[1+2]A,d", 0, v6 }, | ||
546 | -{ "ldsha", F3(3, 0x1a, 0), F3(~3, ~0x1a, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldsha [rs1+%g0],d */ | ||
547 | -{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1), "[1+i]o,d", 0, v9 }, | ||
548 | -{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1), "[i+1]o,d", 0, v9 }, | ||
549 | -{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
550 | -{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
551 | - | ||
552 | -{ "ldstuba", F3(3, 0x1d, 0), F3(~3, ~0x1d, ~0), "[1+2]A,d", 0, v6 }, | ||
553 | -{ "ldstuba", F3(3, 0x1d, 0), F3(~3, ~0x1d, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldstuba [rs1+%g0],d */ | ||
554 | -{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1), "[1+i]o,d", 0, v9 }, | ||
555 | -{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1), "[i+1]o,d", 0, v9 }, | ||
556 | -{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
557 | -{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
558 | - | ||
559 | -{ "ldswa", F3(3, 0x18, 0), F3(~3, ~0x18, ~0), "[1+2]A,d", 0, v9 }, | ||
560 | -{ "ldswa", F3(3, 0x18, 0), F3(~3, ~0x18, ~0)|RS2_G0, "[1]A,d", 0, v9 }, /* lda [rs1+%g0],d */ | ||
561 | -{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1), "[1+i]o,d", 0, v9 }, | ||
562 | -{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1), "[i+1]o,d", 0, v9 }, | ||
563 | -{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
564 | -{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
565 | - | ||
566 | -{ "lduba", F3(3, 0x11, 0), F3(~3, ~0x11, ~0), "[1+2]A,d", 0, v6 }, | ||
567 | -{ "lduba", F3(3, 0x11, 0), F3(~3, ~0x11, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lduba [rs1+%g0],d */ | ||
568 | -{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1), "[1+i]o,d", 0, v9 }, | ||
569 | -{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1), "[i+1]o,d", 0, v9 }, | ||
570 | -{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
571 | -{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
572 | - | ||
573 | -{ "lduha", F3(3, 0x12, 0), F3(~3, ~0x12, ~0), "[1+2]A,d", 0, v6 }, | ||
574 | -{ "lduha", F3(3, 0x12, 0), F3(~3, ~0x12, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lduha [rs1+%g0],d */ | ||
575 | -{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1), "[1+i]o,d", 0, v9 }, | ||
576 | -{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1), "[i+1]o,d", 0, v9 }, | ||
577 | -{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
578 | -{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
579 | - | ||
580 | -{ "lduwa", F3(3, 0x10, 0), F3(~3, ~0x10, ~0), "[1+2]A,d", F_ALIAS, v9 }, /* lduwa === lda */ | ||
581 | -{ "lduwa", F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0, "[1]A,d", F_ALIAS, v9 }, /* lda [rs1+%g0],d */ | ||
582 | -{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[1+i]o,d", F_ALIAS, v9 }, | ||
583 | -{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[i+1]o,d", F_ALIAS, v9 }, | ||
584 | -{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|RS1_G0, "[i]o,d", F_ALIAS, v9 }, | ||
585 | -{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|SIMM13(~0), "[1]o,d", F_ALIAS, v9 }, /* ld [rs1+0],d */ | ||
586 | - | ||
587 | -{ "ldxa", F3(3, 0x1b, 0), F3(~3, ~0x1b, ~0), "[1+2]A,d", 0, v9 }, | ||
588 | -{ "ldxa", F3(3, 0x1b, 0), F3(~3, ~0x1b, ~0)|RS2_G0, "[1]A,d", 0, v9 }, /* lda [rs1+%g0],d */ | ||
589 | -{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1), "[1+i]o,d", 0, v9 }, | ||
590 | -{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1), "[i+1]o,d", 0, v9 }, | ||
591 | -{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
592 | -{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
593 | - | ||
594 | -{ "st", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, | ||
595 | -{ "st", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* st d,[rs1+%g0] */ | ||
596 | -{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", 0, v6 }, | ||
597 | -{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", 0, v6 }, | ||
598 | -{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", 0, v6 }, | ||
599 | -{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* st d,[rs1+0] */ | ||
600 | -{ "st", F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI(~0), "g,[1+2]", 0, v6 }, | ||
601 | -{ "st", F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI_RS2(~0), "g,[1]", 0, v6 }, /* st d[rs1+%g0] */ | ||
602 | -{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1), "g,[1+i]", 0, v6 }, | ||
603 | -{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1), "g,[i+1]", 0, v6 }, | ||
604 | -{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|RS1_G0, "g,[i]", 0, v6 }, | ||
605 | -{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|SIMM13(~0), "g,[1]", 0, v6 }, /* st d,[rs1+0] */ | ||
606 | - | ||
607 | -{ "st", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI(~0), "D,[1+2]", 0, v6notv9 }, | ||
608 | -{ "st", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI_RS2(~0), "D,[1]", 0, v6notv9 }, /* st d,[rs1+%g0] */ | ||
609 | -{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "D,[1+i]", 0, v6notv9 }, | ||
610 | -{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "D,[i+1]", 0, v6notv9 }, | ||
611 | -{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0, "D,[i]", 0, v6notv9 }, | ||
612 | -{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0), "D,[1]", 0, v6notv9 }, /* st d,[rs1+0] */ | ||
613 | -{ "st", F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI(~0), "C,[1+2]", 0, v6notv9 }, | ||
614 | -{ "st", F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI_RS2(~0), "C,[1]", 0, v6notv9 }, /* st d,[rs1+%g0] */ | ||
615 | -{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1), "C,[1+i]", 0, v6notv9 }, | ||
616 | -{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1), "C,[i+1]", 0, v6notv9 }, | ||
617 | -{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|RS1_G0, "C,[i]", 0, v6notv9 }, | ||
618 | -{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|SIMM13(~0), "C,[1]", 0, v6notv9 }, /* st d,[rs1+0] */ | ||
619 | - | ||
620 | -{ "st", F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI(~0), "F,[1+2]", 0, v6 }, | ||
621 | -{ "st", F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI_RS2(~0), "F,[1]", 0, v6 }, /* st d,[rs1+%g0] */ | ||
622 | -{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0, "F,[1+i]", 0, v6 }, | ||
623 | -{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0, "F,[i+1]", 0, v6 }, | ||
624 | -{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|RS1_G0, "F,[i]", 0, v6 }, | ||
625 | -{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|SIMM13(~0), "F,[1]", 0, v6 }, /* st d,[rs1+0] */ | ||
626 | - | ||
627 | -{ "stw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, | ||
628 | -{ "stw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ | ||
629 | -{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, | ||
630 | -{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, | ||
631 | -{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, | ||
632 | -{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
633 | -{ "stsw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, | ||
634 | -{ "stsw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ | ||
635 | -{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, | ||
636 | -{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, | ||
637 | -{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, | ||
638 | -{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
639 | -{ "stuw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, | ||
640 | -{ "stuw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ | ||
641 | -{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, | ||
642 | -{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, | ||
643 | -{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, | ||
644 | -{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
645 | - | ||
646 | -{ "spill", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
647 | -{ "spill", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* st d,[rs1+%g0] */ | ||
648 | -{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
649 | -{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
650 | -{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
651 | -{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* st d,[rs1+0] */ | ||
652 | - | ||
653 | -{ "sta", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", 0, v6 }, | ||
654 | -{ "sta", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* sta d,[rs1+%g0] */ | ||
655 | -{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", 0, v9 }, | ||
656 | -{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", 0, v9 }, | ||
657 | -{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
658 | -{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* st d,[rs1+0] */ | ||
659 | - | ||
660 | -{ "sta", F3(3, 0x34, 0), F3(~3, ~0x34, ~0), "g,[1+2]A", 0, v9 }, | ||
661 | -{ "sta", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|RS2(~0), "g,[1]A", 0, v9 }, /* sta d,[rs1+%g0] */ | ||
662 | -{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "g,[1+i]o", 0, v9 }, | ||
663 | -{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "g,[i+1]o", 0, v9 }, | ||
664 | -{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0, "g,[i]o", 0, v9 }, | ||
665 | -{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0), "g,[1]o", 0, v9 }, /* st d,[rs1+0] */ | ||
666 | - | ||
667 | -{ "stwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, | ||
668 | -{ "stwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ | ||
669 | -{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
670 | -{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
671 | -{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
672 | -{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
673 | -{ "stswa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, | ||
674 | -{ "stswa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ | ||
675 | -{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
676 | -{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
677 | -{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
678 | -{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
679 | -{ "stuwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, | ||
680 | -{ "stuwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ | ||
681 | -{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
682 | -{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
683 | -{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
684 | -{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
685 | - | ||
686 | -{ "stb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, | ||
687 | -{ "stb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* stb d,[rs1+%g0] */ | ||
688 | -{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", 0, v6 }, | ||
689 | -{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", 0, v6 }, | ||
690 | -{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", 0, v6 }, | ||
691 | -{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* stb d,[rs1+0] */ | ||
692 | - | ||
693 | -{ "stsb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
694 | -{ "stsb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+%g0] */ | ||
695 | -{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
696 | -{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
697 | -{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
698 | -{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+0] */ | ||
699 | -{ "stub", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
700 | -{ "stub", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+%g0] */ | ||
701 | -{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
702 | -{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
703 | -{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
704 | -{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+0] */ | ||
705 | - | ||
706 | -{ "stba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", 0, v6 }, | ||
707 | -{ "stba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stba d,[rs1+%g0] */ | ||
708 | -{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", 0, v9 }, | ||
709 | -{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", 0, v9 }, | ||
710 | -{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
711 | -{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* stb d,[rs1+0] */ | ||
712 | - | ||
713 | -{ "stsba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", F_ALIAS, v6 }, | ||
714 | -{ "stsba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stba d,[rs1+%g0] */ | ||
715 | -{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
716 | -{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
717 | -{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
718 | -{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* stb d,[rs1+0] */ | ||
719 | -{ "stuba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", F_ALIAS, v6 }, | ||
720 | -{ "stuba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stba d,[rs1+%g0] */ | ||
721 | -{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
722 | -{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
723 | -{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
724 | -{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* stb d,[rs1+0] */ | ||
725 | - | ||
726 | -{ "std", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, | ||
727 | -{ "std", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* std d,[rs1+%g0] */ | ||
728 | -{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[1+i]", 0, v6 }, | ||
729 | -{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[i+1]", 0, v6 }, | ||
730 | -{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|RS1_G0, "d,[i]", 0, v6 }, | ||
731 | -{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* std d,[rs1+0] */ | ||
732 | - | ||
733 | -{ "std", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0), "q,[1+2]", 0, v6notv9 }, | ||
734 | -{ "std", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0), "q,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ | ||
735 | -{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "q,[1+i]", 0, v6notv9 }, | ||
736 | -{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "q,[i+1]", 0, v6notv9 }, | ||
737 | -{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0, "q,[i]", 0, v6notv9 }, | ||
738 | -{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0), "q,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ | ||
739 | -{ "std", F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI(~0), "H,[1+2]", 0, v6 }, | ||
740 | -{ "std", F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI_RS2(~0), "H,[1]", 0, v6 }, /* std d,[rs1+%g0] */ | ||
741 | -{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1), "H,[1+i]", 0, v6 }, | ||
742 | -{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1), "H,[i+1]", 0, v6 }, | ||
743 | -{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|RS1_G0, "H,[i]", 0, v6 }, | ||
744 | -{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|SIMM13(~0), "H,[1]", 0, v6 }, /* std d,[rs1+0] */ | ||
745 | - | ||
746 | -{ "std", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0), "Q,[1+2]", 0, v6notv9 }, | ||
747 | -{ "std", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0), "Q,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ | ||
748 | -{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "Q,[1+i]", 0, v6notv9 }, | ||
749 | -{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "Q,[i+1]", 0, v6notv9 }, | ||
750 | -{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0, "Q,[i]", 0, v6notv9 }, | ||
751 | -{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0), "Q,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ | ||
752 | -{ "std", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI(~0), "D,[1+2]", 0, v6notv9 }, | ||
753 | -{ "std", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI_RS2(~0), "D,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ | ||
754 | -{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "D,[1+i]", 0, v6notv9 }, | ||
755 | -{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "D,[i+1]", 0, v6notv9 }, | ||
756 | -{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0, "D,[i]", 0, v6notv9 }, | ||
757 | -{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0), "D,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ | ||
758 | - | ||
759 | -{ "spilld", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
760 | -{ "spilld", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* std d,[rs1+%g0] */ | ||
761 | -{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
762 | -{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
763 | -{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
764 | -{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* std d,[rs1+0] */ | ||
765 | - | ||
766 | -{ "stda", F3(3, 0x17, 0), F3(~3, ~0x17, ~0), "d,[1+2]A", 0, v6 }, | ||
767 | -{ "stda", F3(3, 0x17, 0), F3(~3, ~0x17, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stda d,[rs1+%g0] */ | ||
768 | -{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1), "d,[1+i]o", 0, v9 }, | ||
769 | -{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1), "d,[i+1]o", 0, v9 }, | ||
770 | -{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
771 | -{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* std d,[rs1+0] */ | ||
772 | -{ "stda", F3(3, 0x37, 0), F3(~3, ~0x37, ~0), "H,[1+2]A", 0, v9 }, | ||
773 | -{ "stda", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|RS2(~0), "H,[1]A", 0, v9 }, /* stda d,[rs1+%g0] */ | ||
774 | -{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "H,[1+i]o", 0, v9 }, | ||
775 | -{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "H,[i+1]o", 0, v9 }, | ||
776 | -{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0, "H,[i]o", 0, v9 }, | ||
777 | -{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0), "H,[1]o", 0, v9 }, /* std d,[rs1+0] */ | ||
778 | - | ||
779 | -{ "sth", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, | ||
780 | -{ "sth", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* sth d,[rs1+%g0] */ | ||
781 | -{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", 0, v6 }, | ||
782 | -{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", 0, v6 }, | ||
783 | -{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", 0, v6 }, | ||
784 | -{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* sth d,[rs1+0] */ | ||
785 | - | ||
786 | -{ "stsh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
787 | -{ "stsh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+%g0] */ | ||
788 | -{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
789 | -{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
790 | -{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
791 | -{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+0] */ | ||
792 | -{ "stuh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
793 | -{ "stuh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+%g0] */ | ||
794 | -{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
795 | -{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
796 | -{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
797 | -{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+0] */ | ||
798 | - | ||
799 | -{ "stha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", 0, v6 }, | ||
800 | -{ "stha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stha ,[rs1+%g0] */ | ||
801 | -{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", 0, v9 }, | ||
802 | -{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", 0, v9 }, | ||
803 | -{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
804 | -{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* sth d,[rs1+0] */ | ||
805 | - | ||
806 | -{ "stsha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", F_ALIAS, v6 }, | ||
807 | -{ "stsha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stha ,[rs1+%g0] */ | ||
808 | -{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
809 | -{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
810 | -{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
811 | -{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* sth d,[rs1+0] */ | ||
812 | -{ "stuha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", F_ALIAS, v6 }, | ||
813 | -{ "stuha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stha ,[rs1+%g0] */ | ||
814 | -{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
815 | -{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
816 | -{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
817 | -{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* sth d,[rs1+0] */ | ||
818 | - | ||
819 | -{ "stx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI(~0), "d,[1+2]", 0, v9 }, | ||
820 | -{ "stx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI_RS2(~0), "d,[1]", 0, v9 }, /* stx d,[rs1+%g0] */ | ||
821 | -{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1), "d,[1+i]", 0, v9 }, | ||
822 | -{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1), "d,[i+1]", 0, v9 }, | ||
823 | -{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RS1_G0, "d,[i]", 0, v9 }, | ||
824 | -{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|SIMM13(~0), "d,[1]", 0, v9 }, /* stx d,[rs1+0] */ | ||
825 | - | ||
826 | -{ "stx", F3(3, 0x25, 0)|RD(1), F3(~3, ~0x25, ~0)|ASI(~0)|RD(~1), "F,[1+2]", 0, v9 }, | ||
827 | -{ "stx", F3(3, 0x25, 0)|RD(1), F3(~3, ~0x25, ~0)|ASI_RS2(~0)|RD(~1),"F,[1]", 0, v9 }, /* stx d,[rs1+%g0] */ | ||
828 | -{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RD(~1), "F,[1+i]", 0, v9 }, | ||
829 | -{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RD(~1), "F,[i+1]", 0, v9 }, | ||
830 | -{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RS1_G0|RD(~1), "F,[i]", 0, v9 }, | ||
831 | -{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|SIMM13(~0)|RD(~1),"F,[1]", 0, v9 }, /* stx d,[rs1+0] */ | ||
832 | - | ||
833 | -{ "stxa", F3(3, 0x1e, 0), F3(~3, ~0x1e, ~0), "d,[1+2]A", 0, v9 }, | ||
834 | -{ "stxa", F3(3, 0x1e, 0), F3(~3, ~0x1e, ~0)|RS2(~0), "d,[1]A", 0, v9 }, /* stxa d,[rs1+%g0] */ | ||
835 | -{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1), "d,[1+i]o", 0, v9 }, | ||
836 | -{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1), "d,[i+1]o", 0, v9 }, | ||
837 | -{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
838 | -{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* stx d,[rs1+0] */ | ||
839 | - | ||
840 | -{ "stq", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0), "J,[1+2]", 0, v9 }, | ||
841 | -{ "stq", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0), "J,[1]", 0, v9 }, /* stq [rs1+%g0] */ | ||
842 | -{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "J,[1+i]", 0, v9 }, | ||
843 | -{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "J,[i+1]", 0, v9 }, | ||
844 | -{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0, "J,[i]", 0, v9 }, | ||
845 | -{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0), "J,[1]", 0, v9 }, /* stq [rs1+0] */ | ||
846 | - | ||
847 | -{ "stqa", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0), "J,[1+2]A", 0, v9 }, | ||
848 | -{ "stqa", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0), "J,[1]A", 0, v9 }, /* stqa [rs1+%g0] */ | ||
849 | -{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "J,[1+i]o", 0, v9 }, | ||
850 | -{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "J,[i+1]o", 0, v9 }, | ||
851 | -{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0, "J,[i]o", 0, v9 }, | ||
852 | -{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0), "J,[1]o", 0, v9 }, /* stqa [rs1+0] */ | ||
853 | - | ||
854 | -{ "swap", F3(3, 0x0f, 0), F3(~3, ~0x0f, ~0)|ASI(~0), "[1+2],d", 0, v7 }, | ||
855 | -{ "swap", F3(3, 0x0f, 0), F3(~3, ~0x0f, ~0)|ASI_RS2(~0), "[1],d", 0, v7 }, /* swap [rs1+%g0],d */ | ||
856 | -{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1), "[1+i],d", 0, v7 }, | ||
857 | -{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1), "[i+1],d", 0, v7 }, | ||
858 | -{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1)|RS1_G0, "[i],d", 0, v7 }, | ||
859 | -{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1)|SIMM13(~0), "[1],d", 0, v7 }, /* swap [rs1+0],d */ | ||
860 | - | ||
861 | -{ "swapa", F3(3, 0x1f, 0), F3(~3, ~0x1f, ~0), "[1+2]A,d", 0, v7 }, | ||
862 | -{ "swapa", F3(3, 0x1f, 0), F3(~3, ~0x1f, ~0)|RS2(~0), "[1]A,d", 0, v7 }, /* swapa [rs1+%g0],d */ | ||
863 | -{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1), "[1+i]o,d", 0, v9 }, | ||
864 | -{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1), "[i+1]o,d", 0, v9 }, | ||
865 | -{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
866 | -{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* swap [rs1+0],d */ | ||
867 | - | ||
868 | -{ "restore", F3(2, 0x3d, 0), F3(~2, ~0x3d, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
869 | -{ "restore", F3(2, 0x3d, 0), F3(~2, ~0x3d, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "", 0, v6 }, /* restore %g0,%g0,%g0 */ | ||
870 | -{ "restore", F3(2, 0x3d, 1), F3(~2, ~0x3d, ~1), "1,i,d", 0, v6 }, | ||
871 | -{ "restore", F3(2, 0x3d, 1), F3(~2, ~0x3d, ~1)|RD_G0|RS1_G0|SIMM13(~0), "", 0, v6 }, /* restore %g0,0,%g0 */ | ||
872 | - | ||
873 | -{ "rett", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|RD_G0|ASI(~0), "1+2", F_UNBR|F_DELAYED, v6 }, /* rett rs1+rs2 */ | ||
874 | -{ "rett", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|RD_G0|ASI_RS2(~0), "1", F_UNBR|F_DELAYED, v6 }, /* rett rs1,%g0 */ | ||
875 | -{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0, "1+i", F_UNBR|F_DELAYED, v6 }, /* rett rs1+X */ | ||
876 | -{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0, "i+1", F_UNBR|F_DELAYED, v6 }, /* rett X+rs1 */ | ||
877 | -{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* rett X+rs1 */ | ||
878 | -{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* rett X */ | ||
879 | -{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|SIMM13(~0), "1", F_UNBR|F_DELAYED, v6 }, /* rett rs1+0 */ | ||
880 | - | ||
881 | -{ "save", F3(2, 0x3c, 0), F3(~2, ~0x3c, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
882 | -{ "save", F3(2, 0x3c, 1), F3(~2, ~0x3c, ~1), "1,i,d", 0, v6 }, | ||
883 | -{ "save", 0x81e00000, ~0x81e00000, "", F_ALIAS, v6 }, | ||
884 | - | ||
885 | -{ "ret", F3(2, 0x38, 1)|RS1(0x1f)|SIMM13(8), F3(~2, ~0x38, ~1)|SIMM13(~8), "", F_UNBR|F_DELAYED, v6 }, /* jmpl %i7+8,%g0 */ | 414 | +{ "lduw", F3(3, 0x00, 0), F3(~3, ~0x00, ~0), "[1+2],d", F_ALIAS, v9 }, |
415 | +{ "lduw", F3(3, 0x00, 0), F3(~3, ~0x00, ~0)|RS2_G0, "[1],d", F_ALIAS, v9 }, /* ld [rs1+%g0],d */ | ||
416 | +{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[1+i],d", F_ALIAS, v9 }, | ||
417 | +{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[i+1],d", F_ALIAS, v9 }, | ||
418 | +{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|RS1_G0, "[i],d", F_ALIAS, v9 }, | ||
419 | +{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|SIMM13(~0), "[1],d", F_ALIAS, v9 }, /* ld [rs1+0],d */ | ||
420 | + | ||
421 | +{ "ldd", F3(3, 0x03, 0), F3(~3, ~0x03, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
422 | +{ "ldd", F3(3, 0x03, 0), F3(~3, ~0x03, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldd [rs1+%g0],d */ | ||
423 | +{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1), "[1+i],d", 0, v6 }, | ||
424 | +{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1), "[i+1],d", 0, v6 }, | ||
425 | +{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
426 | +{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldd [rs1+0],d */ | ||
427 | +{ "ldd", F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI(~0), "[1+2],H", 0, v6 }, | ||
428 | +{ "ldd", F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI_RS2(~0), "[1],H", 0, v6 }, /* ldd [rs1+%g0],d */ | ||
429 | +{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1), "[1+i],H", 0, v6 }, | ||
430 | +{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1), "[i+1],H", 0, v6 }, | ||
431 | +{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|RS1_G0, "[i],H", 0, v6 }, | ||
432 | +{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|SIMM13(~0), "[1],H", 0, v6 }, /* ldd [rs1+0],d */ | ||
433 | + | ||
434 | +{ "ldd", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI(~0), "[1+2],D", 0, v6notv9 }, | ||
435 | +{ "ldd", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI_RS2(~0), "[1],D", 0, v6notv9 }, /* ldd [rs1+%g0],d */ | ||
436 | +{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[1+i],D", 0, v6notv9 }, | ||
437 | +{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[i+1],D", 0, v6notv9 }, | ||
438 | +{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0, "[i],D", 0, v6notv9 }, | ||
439 | +{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0), "[1],D", 0, v6notv9 }, /* ldd [rs1+0],d */ | ||
440 | + | ||
441 | +{ "ldq", F3(3, 0x22, 0), F3(~3, ~0x22, ~0)|ASI(~0), "[1+2],J", 0, v9 }, | ||
442 | +{ "ldq", F3(3, 0x22, 0), F3(~3, ~0x22, ~0)|ASI_RS2(~0), "[1],J", 0, v9 }, /* ldd [rs1+%g0],d */ | ||
443 | +{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1), "[1+i],J", 0, v9 }, | ||
444 | +{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1), "[i+1],J", 0, v9 }, | ||
445 | +{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1)|RS1_G0, "[i],J", 0, v9 }, | ||
446 | +{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1)|SIMM13(~0), "[1],J", 0, v9 }, /* ldd [rs1+0],d */ | ||
447 | + | ||
448 | +{ "ldsb", F3(3, 0x09, 0), F3(~3, ~0x09, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
449 | +{ "ldsb", F3(3, 0x09, 0), F3(~3, ~0x09, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldsb [rs1+%g0],d */ | ||
450 | +{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1), "[1+i],d", 0, v6 }, | ||
451 | +{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1), "[i+1],d", 0, v6 }, | ||
452 | +{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
453 | +{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldsb [rs1+0],d */ | ||
454 | + | ||
455 | +{ "ldsh", F3(3, 0x0a, 0), F3(~3, ~0x0a, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldsh [rs1+%g0],d */ | ||
456 | +{ "ldsh", F3(3, 0x0a, 0), F3(~3, ~0x0a, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
457 | +{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1), "[1+i],d", 0, v6 }, | ||
458 | +{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1), "[i+1],d", 0, v6 }, | ||
459 | +{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
460 | +{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldsh [rs1+0],d */ | ||
461 | + | ||
462 | +{ "ldstub", F3(3, 0x0d, 0), F3(~3, ~0x0d, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
463 | +{ "ldstub", F3(3, 0x0d, 0), F3(~3, ~0x0d, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldstub [rs1+%g0],d */ | ||
464 | +{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1), "[1+i],d", 0, v6 }, | ||
465 | +{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1), "[i+1],d", 0, v6 }, | ||
466 | +{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
467 | +{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldstub [rs1+0],d */ | ||
468 | + | ||
469 | +{ "ldsw", F3(3, 0x08, 0), F3(~3, ~0x08, ~0)|ASI(~0), "[1+2],d", 0, v9 }, | ||
470 | +{ "ldsw", F3(3, 0x08, 0), F3(~3, ~0x08, ~0)|ASI_RS2(~0), "[1],d", 0, v9 }, /* ldsw [rs1+%g0],d */ | ||
471 | +{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1), "[1+i],d", 0, v9 }, | ||
472 | +{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1), "[i+1],d", 0, v9 }, | ||
473 | +{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1)|RS1_G0, "[i],d", 0, v9 }, | ||
474 | +{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1)|SIMM13(~0), "[1],d", 0, v9 }, /* ldsw [rs1+0],d */ | ||
475 | + | ||
476 | +{ "ldub", F3(3, 0x01, 0), F3(~3, ~0x01, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
477 | +{ "ldub", F3(3, 0x01, 0), F3(~3, ~0x01, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldub [rs1+%g0],d */ | ||
478 | +{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1), "[1+i],d", 0, v6 }, | ||
479 | +{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1), "[i+1],d", 0, v6 }, | ||
480 | +{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
481 | +{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldub [rs1+0],d */ | ||
482 | + | ||
483 | +{ "lduh", F3(3, 0x02, 0), F3(~3, ~0x02, ~0)|ASI(~0), "[1+2],d", 0, v6 }, | ||
484 | +{ "lduh", F3(3, 0x02, 0), F3(~3, ~0x02, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* lduh [rs1+%g0],d */ | ||
485 | +{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1), "[1+i],d", 0, v6 }, | ||
486 | +{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1), "[i+1],d", 0, v6 }, | ||
487 | +{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1)|RS1_G0, "[i],d", 0, v6 }, | ||
488 | +{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* lduh [rs1+0],d */ | ||
489 | + | ||
490 | +{ "ldx", F3(3, 0x0b, 0), F3(~3, ~0x0b, ~0)|ASI(~0), "[1+2],d", 0, v9 }, | ||
491 | +{ "ldx", F3(3, 0x0b, 0), F3(~3, ~0x0b, ~0)|ASI_RS2(~0), "[1],d", 0, v9 }, /* ldx [rs1+%g0],d */ | ||
492 | +{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1), "[1+i],d", 0, v9 }, | ||
493 | +{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1), "[i+1],d", 0, v9 }, | ||
494 | +{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1)|RS1_G0, "[i],d", 0, v9 }, | ||
495 | +{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1)|SIMM13(~0), "[1],d", 0, v9 }, /* ldx [rs1+0],d */ | ||
496 | + | ||
497 | +{ "ldx", F3(3, 0x21, 0)|RD(1), F3(~3, ~0x21, ~0)|RD(~1), "[1+2],F", 0, v9 }, | ||
498 | +{ "ldx", F3(3, 0x21, 0)|RD(1), F3(~3, ~0x21, ~0)|RS2_G0|RD(~1), "[1],F", 0, v9 }, /* ld [rs1+%g0],d */ | ||
499 | +{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RD(~1), "[1+i],F", 0, v9 }, | ||
500 | +{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RD(~1), "[i+1],F", 0, v9 }, | ||
501 | +{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RS1_G0|RD(~1), "[i],F", 0, v9 }, | ||
502 | +{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|SIMM13(~0)|RD(~1),"[1],F", 0, v9 }, /* ld [rs1+0],d */ | ||
503 | + | ||
504 | +{ "lda", F3(3, 0x10, 0), F3(~3, ~0x10, ~0), "[1+2]A,d", 0, v6 }, | ||
505 | +{ "lda", F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lda [rs1+%g0],d */ | ||
506 | +{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[1+i]o,d", 0, v9 }, | ||
507 | +{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[i+1]o,d", 0, v9 }, | ||
508 | +{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
509 | +{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
510 | +{ "lda", F3(3, 0x30, 0), F3(~3, ~0x30, ~0), "[1+2]A,g", 0, v9 }, | ||
511 | +{ "lda", F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0, "[1]A,g", 0, v9 }, /* lda [rs1+%g0],d */ | ||
512 | +{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[1+i]o,g", 0, v9 }, | ||
513 | +{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[i+1]o,g", 0, v9 }, | ||
514 | +{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0, "[i]o,g", 0, v9 }, | ||
515 | +{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0), "[1]o,g", 0, v9 }, /* ld [rs1+0],d */ | ||
516 | + | ||
517 | +{ "ldda", F3(3, 0x13, 0), F3(~3, ~0x13, ~0), "[1+2]A,d", 0, v6 }, | ||
518 | +{ "ldda", F3(3, 0x13, 0), F3(~3, ~0x13, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldda [rs1+%g0],d */ | ||
519 | +{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1), "[1+i]o,d", 0, v9 }, | ||
520 | +{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1), "[i+1]o,d", 0, v9 }, | ||
521 | +{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
522 | +{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
523 | + | ||
524 | +{ "ldda", F3(3, 0x33, 0), F3(~3, ~0x33, ~0), "[1+2]A,H", 0, v9 }, | ||
525 | +{ "ldda", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|RS2_G0, "[1]A,H", 0, v9 }, /* ldda [rs1+%g0],d */ | ||
526 | +{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[1+i]o,H", 0, v9 }, | ||
527 | +{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[i+1]o,H", 0, v9 }, | ||
528 | +{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0, "[i]o,H", 0, v9 }, | ||
529 | +{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0), "[1]o,H", 0, v9 }, /* ld [rs1+0],d */ | ||
530 | + | ||
531 | +{ "ldqa", F3(3, 0x32, 0), F3(~3, ~0x32, ~0), "[1+2]A,J", 0, v9 }, | ||
532 | +{ "ldqa", F3(3, 0x32, 0), F3(~3, ~0x32, ~0)|RS2_G0, "[1]A,J", 0, v9 }, /* ldd [rs1+%g0],d */ | ||
533 | +{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1), "[1+i]o,J", 0, v9 }, | ||
534 | +{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1), "[i+1]o,J", 0, v9 }, | ||
535 | +{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1)|RS1_G0, "[i]o,J", 0, v9 }, | ||
536 | +{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1)|SIMM13(~0), "[1]o,J", 0, v9 }, /* ldd [rs1+0],d */ | ||
537 | + | ||
538 | +{ "ldsba", F3(3, 0x19, 0), F3(~3, ~0x19, ~0), "[1+2]A,d", 0, v6 }, | ||
539 | +{ "ldsba", F3(3, 0x19, 0), F3(~3, ~0x19, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldsba [rs1+%g0],d */ | ||
540 | +{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1), "[1+i]o,d", 0, v9 }, | ||
541 | +{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1), "[i+1]o,d", 0, v9 }, | ||
542 | +{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
543 | +{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
544 | + | ||
545 | +{ "ldsha", F3(3, 0x1a, 0), F3(~3, ~0x1a, ~0), "[1+2]A,d", 0, v6 }, | ||
546 | +{ "ldsha", F3(3, 0x1a, 0), F3(~3, ~0x1a, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldsha [rs1+%g0],d */ | ||
547 | +{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1), "[1+i]o,d", 0, v9 }, | ||
548 | +{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1), "[i+1]o,d", 0, v9 }, | ||
549 | +{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
550 | +{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
551 | + | ||
552 | +{ "ldstuba", F3(3, 0x1d, 0), F3(~3, ~0x1d, ~0), "[1+2]A,d", 0, v6 }, | ||
553 | +{ "ldstuba", F3(3, 0x1d, 0), F3(~3, ~0x1d, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldstuba [rs1+%g0],d */ | ||
554 | +{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1), "[1+i]o,d", 0, v9 }, | ||
555 | +{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1), "[i+1]o,d", 0, v9 }, | ||
556 | +{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
557 | +{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
558 | + | ||
559 | +{ "ldswa", F3(3, 0x18, 0), F3(~3, ~0x18, ~0), "[1+2]A,d", 0, v9 }, | ||
560 | +{ "ldswa", F3(3, 0x18, 0), F3(~3, ~0x18, ~0)|RS2_G0, "[1]A,d", 0, v9 }, /* lda [rs1+%g0],d */ | ||
561 | +{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1), "[1+i]o,d", 0, v9 }, | ||
562 | +{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1), "[i+1]o,d", 0, v9 }, | ||
563 | +{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
564 | +{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
565 | + | ||
566 | +{ "lduba", F3(3, 0x11, 0), F3(~3, ~0x11, ~0), "[1+2]A,d", 0, v6 }, | ||
567 | +{ "lduba", F3(3, 0x11, 0), F3(~3, ~0x11, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lduba [rs1+%g0],d */ | ||
568 | +{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1), "[1+i]o,d", 0, v9 }, | ||
569 | +{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1), "[i+1]o,d", 0, v9 }, | ||
570 | +{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
571 | +{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
572 | + | ||
573 | +{ "lduha", F3(3, 0x12, 0), F3(~3, ~0x12, ~0), "[1+2]A,d", 0, v6 }, | ||
574 | +{ "lduha", F3(3, 0x12, 0), F3(~3, ~0x12, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lduha [rs1+%g0],d */ | ||
575 | +{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1), "[1+i]o,d", 0, v9 }, | ||
576 | +{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1), "[i+1]o,d", 0, v9 }, | ||
577 | +{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
578 | +{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
579 | + | ||
580 | +{ "lduwa", F3(3, 0x10, 0), F3(~3, ~0x10, ~0), "[1+2]A,d", F_ALIAS, v9 }, /* lduwa === lda */ | ||
581 | +{ "lduwa", F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0, "[1]A,d", F_ALIAS, v9 }, /* lda [rs1+%g0],d */ | ||
582 | +{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[1+i]o,d", F_ALIAS, v9 }, | ||
583 | +{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[i+1]o,d", F_ALIAS, v9 }, | ||
584 | +{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|RS1_G0, "[i]o,d", F_ALIAS, v9 }, | ||
585 | +{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|SIMM13(~0), "[1]o,d", F_ALIAS, v9 }, /* ld [rs1+0],d */ | ||
586 | + | ||
587 | +{ "ldxa", F3(3, 0x1b, 0), F3(~3, ~0x1b, ~0), "[1+2]A,d", 0, v9 }, | ||
588 | +{ "ldxa", F3(3, 0x1b, 0), F3(~3, ~0x1b, ~0)|RS2_G0, "[1]A,d", 0, v9 }, /* lda [rs1+%g0],d */ | ||
589 | +{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1), "[1+i]o,d", 0, v9 }, | ||
590 | +{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1), "[i+1]o,d", 0, v9 }, | ||
591 | +{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
592 | +{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ | ||
593 | + | ||
594 | +{ "st", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, | ||
595 | +{ "st", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* st d,[rs1+%g0] */ | ||
596 | +{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", 0, v6 }, | ||
597 | +{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", 0, v6 }, | ||
598 | +{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", 0, v6 }, | ||
599 | +{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* st d,[rs1+0] */ | ||
600 | +{ "st", F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI(~0), "g,[1+2]", 0, v6 }, | ||
601 | +{ "st", F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI_RS2(~0), "g,[1]", 0, v6 }, /* st d[rs1+%g0] */ | ||
602 | +{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1), "g,[1+i]", 0, v6 }, | ||
603 | +{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1), "g,[i+1]", 0, v6 }, | ||
604 | +{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|RS1_G0, "g,[i]", 0, v6 }, | ||
605 | +{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|SIMM13(~0), "g,[1]", 0, v6 }, /* st d,[rs1+0] */ | ||
606 | + | ||
607 | +{ "st", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI(~0), "D,[1+2]", 0, v6notv9 }, | ||
608 | +{ "st", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI_RS2(~0), "D,[1]", 0, v6notv9 }, /* st d,[rs1+%g0] */ | ||
609 | +{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "D,[1+i]", 0, v6notv9 }, | ||
610 | +{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "D,[i+1]", 0, v6notv9 }, | ||
611 | +{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0, "D,[i]", 0, v6notv9 }, | ||
612 | +{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0), "D,[1]", 0, v6notv9 }, /* st d,[rs1+0] */ | ||
613 | +{ "st", F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI(~0), "C,[1+2]", 0, v6notv9 }, | ||
614 | +{ "st", F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI_RS2(~0), "C,[1]", 0, v6notv9 }, /* st d,[rs1+%g0] */ | ||
615 | +{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1), "C,[1+i]", 0, v6notv9 }, | ||
616 | +{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1), "C,[i+1]", 0, v6notv9 }, | ||
617 | +{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|RS1_G0, "C,[i]", 0, v6notv9 }, | ||
618 | +{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|SIMM13(~0), "C,[1]", 0, v6notv9 }, /* st d,[rs1+0] */ | ||
619 | + | ||
620 | +{ "st", F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI(~0), "F,[1+2]", 0, v6 }, | ||
621 | +{ "st", F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI_RS2(~0), "F,[1]", 0, v6 }, /* st d,[rs1+%g0] */ | ||
622 | +{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0, "F,[1+i]", 0, v6 }, | ||
623 | +{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0, "F,[i+1]", 0, v6 }, | ||
624 | +{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|RS1_G0, "F,[i]", 0, v6 }, | ||
625 | +{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|SIMM13(~0), "F,[1]", 0, v6 }, /* st d,[rs1+0] */ | ||
626 | + | ||
627 | +{ "stw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, | ||
628 | +{ "stw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ | ||
629 | +{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, | ||
630 | +{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, | ||
631 | +{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, | ||
632 | +{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
633 | +{ "stsw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, | ||
634 | +{ "stsw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ | ||
635 | +{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, | ||
636 | +{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, | ||
637 | +{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, | ||
638 | +{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
639 | +{ "stuw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, | ||
640 | +{ "stuw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ | ||
641 | +{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, | ||
642 | +{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, | ||
643 | +{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, | ||
644 | +{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
645 | + | ||
646 | +{ "spill", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
647 | +{ "spill", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* st d,[rs1+%g0] */ | ||
648 | +{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
649 | +{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
650 | +{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
651 | +{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* st d,[rs1+0] */ | ||
652 | + | ||
653 | +{ "sta", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", 0, v6 }, | ||
654 | +{ "sta", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* sta d,[rs1+%g0] */ | ||
655 | +{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", 0, v9 }, | ||
656 | +{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", 0, v9 }, | ||
657 | +{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
658 | +{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* st d,[rs1+0] */ | ||
659 | + | ||
660 | +{ "sta", F3(3, 0x34, 0), F3(~3, ~0x34, ~0), "g,[1+2]A", 0, v9 }, | ||
661 | +{ "sta", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|RS2(~0), "g,[1]A", 0, v9 }, /* sta d,[rs1+%g0] */ | ||
662 | +{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "g,[1+i]o", 0, v9 }, | ||
663 | +{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "g,[i+1]o", 0, v9 }, | ||
664 | +{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0, "g,[i]o", 0, v9 }, | ||
665 | +{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0), "g,[1]o", 0, v9 }, /* st d,[rs1+0] */ | ||
666 | + | ||
667 | +{ "stwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, | ||
668 | +{ "stwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ | ||
669 | +{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
670 | +{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
671 | +{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
672 | +{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
673 | +{ "stswa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, | ||
674 | +{ "stswa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ | ||
675 | +{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
676 | +{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
677 | +{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
678 | +{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
679 | +{ "stuwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, | ||
680 | +{ "stuwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ | ||
681 | +{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
682 | +{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
683 | +{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
684 | +{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ | ||
685 | + | ||
686 | +{ "stb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, | ||
687 | +{ "stb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* stb d,[rs1+%g0] */ | ||
688 | +{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", 0, v6 }, | ||
689 | +{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", 0, v6 }, | ||
690 | +{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", 0, v6 }, | ||
691 | +{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* stb d,[rs1+0] */ | ||
692 | + | ||
693 | +{ "stsb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
694 | +{ "stsb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+%g0] */ | ||
695 | +{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
696 | +{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
697 | +{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
698 | +{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+0] */ | ||
699 | +{ "stub", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
700 | +{ "stub", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+%g0] */ | ||
701 | +{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
702 | +{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
703 | +{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
704 | +{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+0] */ | ||
705 | + | ||
706 | +{ "stba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", 0, v6 }, | ||
707 | +{ "stba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stba d,[rs1+%g0] */ | ||
708 | +{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", 0, v9 }, | ||
709 | +{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", 0, v9 }, | ||
710 | +{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
711 | +{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* stb d,[rs1+0] */ | ||
712 | + | ||
713 | +{ "stsba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", F_ALIAS, v6 }, | ||
714 | +{ "stsba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stba d,[rs1+%g0] */ | ||
715 | +{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
716 | +{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
717 | +{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
718 | +{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* stb d,[rs1+0] */ | ||
719 | +{ "stuba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", F_ALIAS, v6 }, | ||
720 | +{ "stuba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stba d,[rs1+%g0] */ | ||
721 | +{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
722 | +{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
723 | +{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
724 | +{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* stb d,[rs1+0] */ | ||
725 | + | ||
726 | +{ "std", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, | ||
727 | +{ "std", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* std d,[rs1+%g0] */ | ||
728 | +{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[1+i]", 0, v6 }, | ||
729 | +{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[i+1]", 0, v6 }, | ||
730 | +{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|RS1_G0, "d,[i]", 0, v6 }, | ||
731 | +{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* std d,[rs1+0] */ | ||
732 | + | ||
733 | +{ "std", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0), "q,[1+2]", 0, v6notv9 }, | ||
734 | +{ "std", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0), "q,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ | ||
735 | +{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "q,[1+i]", 0, v6notv9 }, | ||
736 | +{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "q,[i+1]", 0, v6notv9 }, | ||
737 | +{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0, "q,[i]", 0, v6notv9 }, | ||
738 | +{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0), "q,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ | ||
739 | +{ "std", F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI(~0), "H,[1+2]", 0, v6 }, | ||
740 | +{ "std", F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI_RS2(~0), "H,[1]", 0, v6 }, /* std d,[rs1+%g0] */ | ||
741 | +{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1), "H,[1+i]", 0, v6 }, | ||
742 | +{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1), "H,[i+1]", 0, v6 }, | ||
743 | +{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|RS1_G0, "H,[i]", 0, v6 }, | ||
744 | +{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|SIMM13(~0), "H,[1]", 0, v6 }, /* std d,[rs1+0] */ | ||
745 | + | ||
746 | +{ "std", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0), "Q,[1+2]", 0, v6notv9 }, | ||
747 | +{ "std", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0), "Q,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ | ||
748 | +{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "Q,[1+i]", 0, v6notv9 }, | ||
749 | +{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "Q,[i+1]", 0, v6notv9 }, | ||
750 | +{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0, "Q,[i]", 0, v6notv9 }, | ||
751 | +{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0), "Q,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ | ||
752 | +{ "std", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI(~0), "D,[1+2]", 0, v6notv9 }, | ||
753 | +{ "std", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI_RS2(~0), "D,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ | ||
754 | +{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "D,[1+i]", 0, v6notv9 }, | ||
755 | +{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "D,[i+1]", 0, v6notv9 }, | ||
756 | +{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0, "D,[i]", 0, v6notv9 }, | ||
757 | +{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0), "D,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ | ||
758 | + | ||
759 | +{ "spilld", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
760 | +{ "spilld", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* std d,[rs1+%g0] */ | ||
761 | +{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
762 | +{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
763 | +{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
764 | +{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* std d,[rs1+0] */ | ||
765 | + | ||
766 | +{ "stda", F3(3, 0x17, 0), F3(~3, ~0x17, ~0), "d,[1+2]A", 0, v6 }, | ||
767 | +{ "stda", F3(3, 0x17, 0), F3(~3, ~0x17, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stda d,[rs1+%g0] */ | ||
768 | +{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1), "d,[1+i]o", 0, v9 }, | ||
769 | +{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1), "d,[i+1]o", 0, v9 }, | ||
770 | +{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
771 | +{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* std d,[rs1+0] */ | ||
772 | +{ "stda", F3(3, 0x37, 0), F3(~3, ~0x37, ~0), "H,[1+2]A", 0, v9 }, | ||
773 | +{ "stda", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|RS2(~0), "H,[1]A", 0, v9 }, /* stda d,[rs1+%g0] */ | ||
774 | +{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "H,[1+i]o", 0, v9 }, | ||
775 | +{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "H,[i+1]o", 0, v9 }, | ||
776 | +{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0, "H,[i]o", 0, v9 }, | ||
777 | +{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0), "H,[1]o", 0, v9 }, /* std d,[rs1+0] */ | ||
778 | + | ||
779 | +{ "sth", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, | ||
780 | +{ "sth", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* sth d,[rs1+%g0] */ | ||
781 | +{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", 0, v6 }, | ||
782 | +{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", 0, v6 }, | ||
783 | +{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", 0, v6 }, | ||
784 | +{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* sth d,[rs1+0] */ | ||
785 | + | ||
786 | +{ "stsh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
787 | +{ "stsh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+%g0] */ | ||
788 | +{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
789 | +{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
790 | +{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
791 | +{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+0] */ | ||
792 | +{ "stuh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, | ||
793 | +{ "stuh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+%g0] */ | ||
794 | +{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", F_ALIAS, v6 }, | ||
795 | +{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", F_ALIAS, v6 }, | ||
796 | +{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, | ||
797 | +{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+0] */ | ||
798 | + | ||
799 | +{ "stha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", 0, v6 }, | ||
800 | +{ "stha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stha ,[rs1+%g0] */ | ||
801 | +{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", 0, v9 }, | ||
802 | +{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", 0, v9 }, | ||
803 | +{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
804 | +{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* sth d,[rs1+0] */ | ||
805 | + | ||
806 | +{ "stsha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", F_ALIAS, v6 }, | ||
807 | +{ "stsha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stha ,[rs1+%g0] */ | ||
808 | +{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
809 | +{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
810 | +{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
811 | +{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* sth d,[rs1+0] */ | ||
812 | +{ "stuha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", F_ALIAS, v6 }, | ||
813 | +{ "stuha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stha ,[rs1+%g0] */ | ||
814 | +{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", F_ALIAS, v9 }, | ||
815 | +{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", F_ALIAS, v9 }, | ||
816 | +{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, | ||
817 | +{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* sth d,[rs1+0] */ | ||
818 | + | ||
819 | +{ "stx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI(~0), "d,[1+2]", 0, v9 }, | ||
820 | +{ "stx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI_RS2(~0), "d,[1]", 0, v9 }, /* stx d,[rs1+%g0] */ | ||
821 | +{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1), "d,[1+i]", 0, v9 }, | ||
822 | +{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1), "d,[i+1]", 0, v9 }, | ||
823 | +{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RS1_G0, "d,[i]", 0, v9 }, | ||
824 | +{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|SIMM13(~0), "d,[1]", 0, v9 }, /* stx d,[rs1+0] */ | ||
825 | + | ||
826 | +{ "stx", F3(3, 0x25, 0)|RD(1), F3(~3, ~0x25, ~0)|ASI(~0)|RD(~1), "F,[1+2]", 0, v9 }, | ||
827 | +{ "stx", F3(3, 0x25, 0)|RD(1), F3(~3, ~0x25, ~0)|ASI_RS2(~0)|RD(~1),"F,[1]", 0, v9 }, /* stx d,[rs1+%g0] */ | ||
828 | +{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RD(~1), "F,[1+i]", 0, v9 }, | ||
829 | +{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RD(~1), "F,[i+1]", 0, v9 }, | ||
830 | +{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RS1_G0|RD(~1), "F,[i]", 0, v9 }, | ||
831 | +{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|SIMM13(~0)|RD(~1),"F,[1]", 0, v9 }, /* stx d,[rs1+0] */ | ||
832 | + | ||
833 | +{ "stxa", F3(3, 0x1e, 0), F3(~3, ~0x1e, ~0), "d,[1+2]A", 0, v9 }, | ||
834 | +{ "stxa", F3(3, 0x1e, 0), F3(~3, ~0x1e, ~0)|RS2(~0), "d,[1]A", 0, v9 }, /* stxa d,[rs1+%g0] */ | ||
835 | +{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1), "d,[1+i]o", 0, v9 }, | ||
836 | +{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1), "d,[i+1]o", 0, v9 }, | ||
837 | +{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1)|RS1_G0, "d,[i]o", 0, v9 }, | ||
838 | +{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* stx d,[rs1+0] */ | ||
839 | + | ||
840 | +{ "stq", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0), "J,[1+2]", 0, v9 }, | ||
841 | +{ "stq", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0), "J,[1]", 0, v9 }, /* stq [rs1+%g0] */ | ||
842 | +{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "J,[1+i]", 0, v9 }, | ||
843 | +{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "J,[i+1]", 0, v9 }, | ||
844 | +{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0, "J,[i]", 0, v9 }, | ||
845 | +{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0), "J,[1]", 0, v9 }, /* stq [rs1+0] */ | ||
846 | + | ||
847 | +{ "stqa", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0), "J,[1+2]A", 0, v9 }, | ||
848 | +{ "stqa", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0), "J,[1]A", 0, v9 }, /* stqa [rs1+%g0] */ | ||
849 | +{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "J,[1+i]o", 0, v9 }, | ||
850 | +{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "J,[i+1]o", 0, v9 }, | ||
851 | +{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0, "J,[i]o", 0, v9 }, | ||
852 | +{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0), "J,[1]o", 0, v9 }, /* stqa [rs1+0] */ | ||
853 | + | ||
854 | +{ "swap", F3(3, 0x0f, 0), F3(~3, ~0x0f, ~0)|ASI(~0), "[1+2],d", 0, v7 }, | ||
855 | +{ "swap", F3(3, 0x0f, 0), F3(~3, ~0x0f, ~0)|ASI_RS2(~0), "[1],d", 0, v7 }, /* swap [rs1+%g0],d */ | ||
856 | +{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1), "[1+i],d", 0, v7 }, | ||
857 | +{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1), "[i+1],d", 0, v7 }, | ||
858 | +{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1)|RS1_G0, "[i],d", 0, v7 }, | ||
859 | +{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1)|SIMM13(~0), "[1],d", 0, v7 }, /* swap [rs1+0],d */ | ||
860 | + | ||
861 | +{ "swapa", F3(3, 0x1f, 0), F3(~3, ~0x1f, ~0), "[1+2]A,d", 0, v7 }, | ||
862 | +{ "swapa", F3(3, 0x1f, 0), F3(~3, ~0x1f, ~0)|RS2(~0), "[1]A,d", 0, v7 }, /* swapa [rs1+%g0],d */ | ||
863 | +{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1), "[1+i]o,d", 0, v9 }, | ||
864 | +{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1), "[i+1]o,d", 0, v9 }, | ||
865 | +{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1)|RS1_G0, "[i]o,d", 0, v9 }, | ||
866 | +{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* swap [rs1+0],d */ | ||
867 | + | ||
868 | +{ "restore", F3(2, 0x3d, 0), F3(~2, ~0x3d, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
869 | +{ "restore", F3(2, 0x3d, 0), F3(~2, ~0x3d, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "", 0, v6 }, /* restore %g0,%g0,%g0 */ | ||
870 | +{ "restore", F3(2, 0x3d, 1), F3(~2, ~0x3d, ~1), "1,i,d", 0, v6 }, | ||
871 | +{ "restore", F3(2, 0x3d, 1), F3(~2, ~0x3d, ~1)|RD_G0|RS1_G0|SIMM13(~0), "", 0, v6 }, /* restore %g0,0,%g0 */ | ||
872 | + | ||
873 | +{ "rett", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|RD_G0|ASI(~0), "1+2", F_UNBR|F_DELAYED, v6 }, /* rett rs1+rs2 */ | ||
874 | +{ "rett", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|RD_G0|ASI_RS2(~0), "1", F_UNBR|F_DELAYED, v6 }, /* rett rs1,%g0 */ | ||
875 | +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0, "1+i", F_UNBR|F_DELAYED, v6 }, /* rett rs1+X */ | ||
876 | +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0, "i+1", F_UNBR|F_DELAYED, v6 }, /* rett X+rs1 */ | ||
877 | +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* rett X+rs1 */ | ||
878 | +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* rett X */ | ||
879 | +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|SIMM13(~0), "1", F_UNBR|F_DELAYED, v6 }, /* rett rs1+0 */ | ||
880 | + | ||
881 | +{ "save", F3(2, 0x3c, 0), F3(~2, ~0x3c, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
882 | +{ "save", F3(2, 0x3c, 1), F3(~2, ~0x3c, ~1), "1,i,d", 0, v6 }, | ||
883 | +{ "save", 0x81e00000, ~0x81e00000, "", F_ALIAS, v6 }, | ||
884 | + | ||
885 | +{ "ret", F3(2, 0x38, 1)|RS1(0x1f)|SIMM13(8), F3(~2, ~0x38, ~1)|SIMM13(~8), "", F_UNBR|F_DELAYED, v6 }, /* jmpl %i7+8,%g0 */ | ||
886 | { "retl", F3(2, 0x38, 1)|RS1(0x0f)|SIMM13(8), F3(~2, ~0x38, ~1)|RS1(~0x0f)|SIMM13(~8), "", F_UNBR|F_DELAYED, v6 }, /* jmpl %o7+8,%g0 */ | 886 | { "retl", F3(2, 0x38, 1)|RS1(0x0f)|SIMM13(8), F3(~2, ~0x38, ~1)|RS1(~0x0f)|SIMM13(~8), "", F_UNBR|F_DELAYED, v6 }, /* jmpl %o7+8,%g0 */ |
887 | 887 | ||
888 | -{ "jmpl", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|ASI(~0), "1+2,d", F_JSR|F_DELAYED, v6 }, | ||
889 | -{ "jmpl", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|ASI_RS2(~0), "1,d", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+%g0,d */ | ||
890 | -{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|SIMM13(~0), "1,d", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+0,d */ | ||
891 | -{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RS1_G0, "i,d", F_JSR|F_DELAYED, v6 }, /* jmpl %g0+i,d */ | ||
892 | -{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1), "1+i,d", F_JSR|F_DELAYED, v6 }, | ||
893 | -{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1), "i+1,d", F_JSR|F_DELAYED, v6 }, | ||
894 | - | ||
895 | -{ "done", F3(2, 0x3e, 0)|RD(0), F3(~2, ~0x3e, ~0)|RD(~0)|RS1_G0|SIMM13(~0), "", 0, v9 }, | ||
896 | -{ "retry", F3(2, 0x3e, 0)|RD(1), F3(~2, ~0x3e, ~0)|RD(~1)|RS1_G0|SIMM13(~0), "", 0, v9 }, | ||
897 | -{ "saved", F3(2, 0x31, 0)|RD(0), F3(~2, ~0x31, ~0)|RD(~0)|RS1_G0|SIMM13(~0), "", 0, v9 }, | ||
898 | -{ "restored", F3(2, 0x31, 0)|RD(1), F3(~2, ~0x31, ~0)|RD(~1)|RS1_G0|SIMM13(~0), "", 0, v9 }, | ||
899 | -{ "sir", F3(2, 0x30, 1)|RD(0xf), F3(~2, ~0x30, ~1)|RD(~0xf)|RS1_G0, "i", 0, v9 }, | ||
900 | - | ||
901 | -{ "flush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0), "1+2", 0, v8 }, | ||
902 | -{ "flush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0), "1", 0, v8 }, /* flush rs1+%g0 */ | ||
903 | -{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0), "1", 0, v8 }, /* flush rs1+0 */ | ||
904 | -{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0, "i", 0, v8 }, /* flush %g0+i */ | ||
905 | -{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "1+i", 0, v8 }, | ||
906 | -{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "i+1", 0, v8 }, | 888 | +{ "jmpl", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|ASI(~0), "1+2,d", F_JSR|F_DELAYED, v6 }, |
889 | +{ "jmpl", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|ASI_RS2(~0), "1,d", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+%g0,d */ | ||
890 | +{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|SIMM13(~0), "1,d", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+0,d */ | ||
891 | +{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RS1_G0, "i,d", F_JSR|F_DELAYED, v6 }, /* jmpl %g0+i,d */ | ||
892 | +{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1), "1+i,d", F_JSR|F_DELAYED, v6 }, | ||
893 | +{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1), "i+1,d", F_JSR|F_DELAYED, v6 }, | ||
894 | + | ||
895 | +{ "done", F3(2, 0x3e, 0)|RD(0), F3(~2, ~0x3e, ~0)|RD(~0)|RS1_G0|SIMM13(~0), "", 0, v9 }, | ||
896 | +{ "retry", F3(2, 0x3e, 0)|RD(1), F3(~2, ~0x3e, ~0)|RD(~1)|RS1_G0|SIMM13(~0), "", 0, v9 }, | ||
897 | +{ "saved", F3(2, 0x31, 0)|RD(0), F3(~2, ~0x31, ~0)|RD(~0)|RS1_G0|SIMM13(~0), "", 0, v9 }, | ||
898 | +{ "restored", F3(2, 0x31, 0)|RD(1), F3(~2, ~0x31, ~0)|RD(~1)|RS1_G0|SIMM13(~0), "", 0, v9 }, | ||
899 | +{ "sir", F3(2, 0x30, 1)|RD(0xf), F3(~2, ~0x30, ~1)|RD(~0xf)|RS1_G0, "i", 0, v9 }, | ||
900 | + | ||
901 | +{ "flush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0), "1+2", 0, v8 }, | ||
902 | +{ "flush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0), "1", 0, v8 }, /* flush rs1+%g0 */ | ||
903 | +{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0), "1", 0, v8 }, /* flush rs1+0 */ | ||
904 | +{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0, "i", 0, v8 }, /* flush %g0+i */ | ||
905 | +{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "1+i", 0, v8 }, | ||
906 | +{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "i+1", 0, v8 }, | ||
907 | 907 | ||
908 | /* IFLUSH was renamed to FLUSH in v8. */ | 908 | /* IFLUSH was renamed to FLUSH in v8. */ |
909 | -{ "iflush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0), "1+2", F_ALIAS, v6 }, | ||
910 | -{ "iflush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0), "1", F_ALIAS, v6 }, /* flush rs1+%g0 */ | ||
911 | -{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0), "1", F_ALIAS, v6 }, /* flush rs1+0 */ | ||
912 | -{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0, "i", F_ALIAS, v6 }, | ||
913 | -{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "1+i", F_ALIAS, v6 }, | ||
914 | -{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "i+1", F_ALIAS, v6 }, | ||
915 | - | ||
916 | -{ "return", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|ASI(~0), "1+2", 0, v9 }, | ||
917 | -{ "return", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|ASI_RS2(~0), "1", 0, v9 }, /* return rs1+%g0 */ | ||
918 | -{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|SIMM13(~0), "1", 0, v9 }, /* return rs1+0 */ | ||
919 | -{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RS1_G0, "i", 0, v9 }, /* return %g0+i */ | ||
920 | -{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1), "1+i", 0, v9 }, | ||
921 | -{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1), "i+1", 0, v9 }, | ||
922 | - | ||
923 | -{ "flushw", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "", 0, v9 }, | ||
924 | - | ||
925 | -{ "membar", F3(2, 0x28, 1)|RS1(0xf), F3(~2, ~0x28, ~1)|RD_G0|RS1(~0xf)|SIMM13(~127), "K", 0, v9 }, | ||
926 | -{ "stbar", F3(2, 0x28, 0)|RS1(0xf), F3(~2, ~0x28, ~0)|RD_G0|RS1(~0xf)|SIMM13(~0), "", 0, v8 }, | ||
927 | - | ||
928 | -{ "prefetch", F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0), "[1+2],*", 0, v9 }, | ||
929 | -{ "prefetch", F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0)|RS2_G0, "[1],*", 0, v9 }, /* prefetch [rs1+%g0],prefetch_fcn */ | ||
930 | -{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1), "[1+i],*", 0, v9 }, | ||
931 | -{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1), "[i+1],*", 0, v9 }, | ||
932 | -{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|RS1_G0, "[i],*", 0, v9 }, | ||
933 | -{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|SIMM13(~0), "[1],*", 0, v9 }, /* prefetch [rs1+0],prefetch_fcn */ | ||
934 | -{ "prefetcha", F3(3, 0x3d, 0), F3(~3, ~0x3d, ~0), "[1+2]A,*", 0, v9 }, | ||
935 | -{ "prefetcha", F3(3, 0x3d, 0), F3(~3, ~0x3d, ~0)|RS2_G0, "[1]A,*", 0, v9 }, /* prefetcha [rs1+%g0],prefetch_fcn */ | ||
936 | -{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1), "[1+i]o,*", 0, v9 }, | ||
937 | -{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1), "[i+1]o,*", 0, v9 }, | ||
938 | -{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1)|RS1_G0, "[i]o,*", 0, v9 }, | ||
939 | -{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1)|SIMM13(~0), "[1]o,*", 0, v9 }, /* prefetcha [rs1+0],d */ | ||
940 | - | ||
941 | -{ "sll", F3(2, 0x25, 0), F3(~2, ~0x25, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, | ||
942 | -{ "sll", F3(2, 0x25, 1), F3(~2, ~0x25, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, | ||
943 | -{ "sra", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, | ||
944 | -{ "sra", F3(2, 0x27, 1), F3(~2, ~0x27, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, | ||
945 | -{ "srl", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, | ||
946 | -{ "srl", F3(2, 0x26, 1), F3(~2, ~0x26, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, | ||
947 | - | ||
948 | -{ "sllx", F3(2, 0x25, 0)|(1<<12), F3(~2, ~0x25, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, | ||
949 | -{ "sllx", F3(2, 0x25, 1)|(1<<12), F3(~2, ~0x25, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, | ||
950 | -{ "srax", F3(2, 0x27, 0)|(1<<12), F3(~2, ~0x27, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, | ||
951 | -{ "srax", F3(2, 0x27, 1)|(1<<12), F3(~2, ~0x27, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, | ||
952 | -{ "srlx", F3(2, 0x26, 0)|(1<<12), F3(~2, ~0x26, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, | ||
953 | -{ "srlx", F3(2, 0x26, 1)|(1<<12), F3(~2, ~0x26, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, | ||
954 | - | ||
955 | -{ "mulscc", F3(2, 0x24, 0), F3(~2, ~0x24, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
956 | -{ "mulscc", F3(2, 0x24, 1), F3(~2, ~0x24, ~1), "1,i,d", 0, v6 }, | ||
957 | - | ||
958 | -{ "divscc", F3(2, 0x1d, 0), F3(~2, ~0x1d, ~0)|ASI(~0), "1,2,d", 0, sparclite }, | ||
959 | -{ "divscc", F3(2, 0x1d, 1), F3(~2, ~0x1d, ~1), "1,i,d", 0, sparclite }, | ||
960 | - | ||
961 | -{ "scan", F3(2, 0x2c, 0), F3(~2, ~0x2c, ~0)|ASI(~0), "1,2,d", 0, sparclet|sparclite }, | ||
962 | -{ "scan", F3(2, 0x2c, 1), F3(~2, ~0x2c, ~1), "1,i,d", 0, sparclet|sparclite }, | ||
963 | - | ||
964 | -{ "popc", F3(2, 0x2e, 0), F3(~2, ~0x2e, ~0)|RS1_G0|ASI(~0),"2,d", 0, v9 }, | ||
965 | -{ "popc", F3(2, 0x2e, 1), F3(~2, ~0x2e, ~1)|RS1_G0, "i,d", 0, v9 }, | ||
966 | - | ||
967 | -{ "clr", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "d", F_ALIAS, v6 }, /* or %g0,%g0,d */ | ||
968 | -{ "clr", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|RS1_G0|SIMM13(~0), "d", F_ALIAS, v6 }, /* or %g0,0,d */ | ||
969 | -{ "clr", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, | ||
970 | -{ "clr", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* st %g0,[rs1+%g0] */ | ||
971 | -{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, | ||
972 | -{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, | ||
973 | -{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, | ||
974 | -{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* st %g0,[rs1+0] */ | ||
975 | - | ||
976 | -{ "clrb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, | ||
977 | -{ "clrb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* stb %g0,[rs1+%g0] */ | ||
978 | -{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, | ||
979 | -{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, | ||
980 | -{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, | ||
981 | -{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* stb %g0,[rs1+0] */ | ||
982 | - | ||
983 | -{ "clrh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, | ||
984 | -{ "clrh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* sth %g0,[rs1+%g0] */ | ||
985 | -{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, | ||
986 | -{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, | ||
987 | -{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, | ||
988 | -{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* sth %g0,[rs1+0] */ | ||
989 | - | ||
990 | -{ "clrx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v9 }, | ||
991 | -{ "clrx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v9 }, /* stx %g0,[rs1+%g0] */ | ||
992 | -{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0, "[1+i]", F_ALIAS, v9 }, | ||
993 | -{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0, "[i+1]", F_ALIAS, v9 }, | ||
994 | -{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v9 }, | ||
995 | -{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v9 }, /* stx %g0,[rs1+0] */ | ||
996 | - | ||
997 | -{ "orcc", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
998 | -{ "orcc", F3(2, 0x12, 1), F3(~2, ~0x12, ~1), "1,i,d", 0, v6 }, | ||
999 | -{ "orcc", F3(2, 0x12, 1), F3(~2, ~0x12, ~1), "i,1,d", 0, v6 }, | 909 | +{ "iflush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0), "1+2", F_ALIAS, v6 }, |
910 | +{ "iflush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0), "1", F_ALIAS, v6 }, /* flush rs1+%g0 */ | ||
911 | +{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0), "1", F_ALIAS, v6 }, /* flush rs1+0 */ | ||
912 | +{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0, "i", F_ALIAS, v6 }, | ||
913 | +{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "1+i", F_ALIAS, v6 }, | ||
914 | +{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "i+1", F_ALIAS, v6 }, | ||
915 | + | ||
916 | +{ "return", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|ASI(~0), "1+2", 0, v9 }, | ||
917 | +{ "return", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|ASI_RS2(~0), "1", 0, v9 }, /* return rs1+%g0 */ | ||
918 | +{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|SIMM13(~0), "1", 0, v9 }, /* return rs1+0 */ | ||
919 | +{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RS1_G0, "i", 0, v9 }, /* return %g0+i */ | ||
920 | +{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1), "1+i", 0, v9 }, | ||
921 | +{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1), "i+1", 0, v9 }, | ||
922 | + | ||
923 | +{ "flushw", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "", 0, v9 }, | ||
924 | + | ||
925 | +{ "membar", F3(2, 0x28, 1)|RS1(0xf), F3(~2, ~0x28, ~1)|RD_G0|RS1(~0xf)|SIMM13(~127), "K", 0, v9 }, | ||
926 | +{ "stbar", F3(2, 0x28, 0)|RS1(0xf), F3(~2, ~0x28, ~0)|RD_G0|RS1(~0xf)|SIMM13(~0), "", 0, v8 }, | ||
927 | + | ||
928 | +{ "prefetch", F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0), "[1+2],*", 0, v9 }, | ||
929 | +{ "prefetch", F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0)|RS2_G0, "[1],*", 0, v9 }, /* prefetch [rs1+%g0],prefetch_fcn */ | ||
930 | +{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1), "[1+i],*", 0, v9 }, | ||
931 | +{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1), "[i+1],*", 0, v9 }, | ||
932 | +{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|RS1_G0, "[i],*", 0, v9 }, | ||
933 | +{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|SIMM13(~0), "[1],*", 0, v9 }, /* prefetch [rs1+0],prefetch_fcn */ | ||
934 | +{ "prefetcha", F3(3, 0x3d, 0), F3(~3, ~0x3d, ~0), "[1+2]A,*", 0, v9 }, | ||
935 | +{ "prefetcha", F3(3, 0x3d, 0), F3(~3, ~0x3d, ~0)|RS2_G0, "[1]A,*", 0, v9 }, /* prefetcha [rs1+%g0],prefetch_fcn */ | ||
936 | +{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1), "[1+i]o,*", 0, v9 }, | ||
937 | +{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1), "[i+1]o,*", 0, v9 }, | ||
938 | +{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1)|RS1_G0, "[i]o,*", 0, v9 }, | ||
939 | +{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1)|SIMM13(~0), "[1]o,*", 0, v9 }, /* prefetcha [rs1+0],d */ | ||
940 | + | ||
941 | +{ "sll", F3(2, 0x25, 0), F3(~2, ~0x25, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, | ||
942 | +{ "sll", F3(2, 0x25, 1), F3(~2, ~0x25, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, | ||
943 | +{ "sra", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, | ||
944 | +{ "sra", F3(2, 0x27, 1), F3(~2, ~0x27, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, | ||
945 | +{ "srl", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, | ||
946 | +{ "srl", F3(2, 0x26, 1), F3(~2, ~0x26, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, | ||
947 | + | ||
948 | +{ "sllx", F3(2, 0x25, 0)|(1<<12), F3(~2, ~0x25, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, | ||
949 | +{ "sllx", F3(2, 0x25, 1)|(1<<12), F3(~2, ~0x25, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, | ||
950 | +{ "srax", F3(2, 0x27, 0)|(1<<12), F3(~2, ~0x27, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, | ||
951 | +{ "srax", F3(2, 0x27, 1)|(1<<12), F3(~2, ~0x27, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, | ||
952 | +{ "srlx", F3(2, 0x26, 0)|(1<<12), F3(~2, ~0x26, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, | ||
953 | +{ "srlx", F3(2, 0x26, 1)|(1<<12), F3(~2, ~0x26, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, | ||
954 | + | ||
955 | +{ "mulscc", F3(2, 0x24, 0), F3(~2, ~0x24, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
956 | +{ "mulscc", F3(2, 0x24, 1), F3(~2, ~0x24, ~1), "1,i,d", 0, v6 }, | ||
957 | + | ||
958 | +{ "divscc", F3(2, 0x1d, 0), F3(~2, ~0x1d, ~0)|ASI(~0), "1,2,d", 0, sparclite }, | ||
959 | +{ "divscc", F3(2, 0x1d, 1), F3(~2, ~0x1d, ~1), "1,i,d", 0, sparclite }, | ||
960 | + | ||
961 | +{ "scan", F3(2, 0x2c, 0), F3(~2, ~0x2c, ~0)|ASI(~0), "1,2,d", 0, sparclet|sparclite }, | ||
962 | +{ "scan", F3(2, 0x2c, 1), F3(~2, ~0x2c, ~1), "1,i,d", 0, sparclet|sparclite }, | ||
963 | + | ||
964 | +{ "popc", F3(2, 0x2e, 0), F3(~2, ~0x2e, ~0)|RS1_G0|ASI(~0),"2,d", 0, v9 }, | ||
965 | +{ "popc", F3(2, 0x2e, 1), F3(~2, ~0x2e, ~1)|RS1_G0, "i,d", 0, v9 }, | ||
966 | + | ||
967 | +{ "clr", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "d", F_ALIAS, v6 }, /* or %g0,%g0,d */ | ||
968 | +{ "clr", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|RS1_G0|SIMM13(~0), "d", F_ALIAS, v6 }, /* or %g0,0,d */ | ||
969 | +{ "clr", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, | ||
970 | +{ "clr", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* st %g0,[rs1+%g0] */ | ||
971 | +{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, | ||
972 | +{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, | ||
973 | +{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, | ||
974 | +{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* st %g0,[rs1+0] */ | ||
975 | + | ||
976 | +{ "clrb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, | ||
977 | +{ "clrb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* stb %g0,[rs1+%g0] */ | ||
978 | +{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, | ||
979 | +{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, | ||
980 | +{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, | ||
981 | +{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* stb %g0,[rs1+0] */ | ||
982 | + | ||
983 | +{ "clrh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, | ||
984 | +{ "clrh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* sth %g0,[rs1+%g0] */ | ||
985 | +{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, | ||
986 | +{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, | ||
987 | +{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, | ||
988 | +{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* sth %g0,[rs1+0] */ | ||
989 | + | ||
990 | +{ "clrx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v9 }, | ||
991 | +{ "clrx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v9 }, /* stx %g0,[rs1+%g0] */ | ||
992 | +{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0, "[1+i]", F_ALIAS, v9 }, | ||
993 | +{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0, "[i+1]", F_ALIAS, v9 }, | ||
994 | +{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v9 }, | ||
995 | +{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v9 }, /* stx %g0,[rs1+0] */ | ||
996 | + | ||
997 | +{ "orcc", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
998 | +{ "orcc", F3(2, 0x12, 1), F3(~2, ~0x12, ~1), "1,i,d", 0, v6 }, | ||
999 | +{ "orcc", F3(2, 0x12, 1), F3(~2, ~0x12, ~1), "i,1,d", 0, v6 }, | ||
1000 | 1000 | ||
1001 | /* This is not a commutative instruction. */ | 1001 | /* This is not a commutative instruction. */ |
1002 | -{ "orncc", F3(2, 0x16, 0), F3(~2, ~0x16, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1003 | -{ "orncc", F3(2, 0x16, 1), F3(~2, ~0x16, ~1), "1,i,d", 0, v6 }, | 1002 | +{ "orncc", F3(2, 0x16, 0), F3(~2, ~0x16, ~0)|ASI(~0), "1,2,d", 0, v6 }, |
1003 | +{ "orncc", F3(2, 0x16, 1), F3(~2, ~0x16, ~1), "1,i,d", 0, v6 }, | ||
1004 | 1004 | ||
1005 | /* This is not a commutative instruction. */ | 1005 | /* This is not a commutative instruction. */ |
1006 | -{ "orn", F3(2, 0x06, 0), F3(~2, ~0x06, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1007 | -{ "orn", F3(2, 0x06, 1), F3(~2, ~0x06, ~1), "1,i,d", 0, v6 }, | ||
1008 | - | ||
1009 | -{ "tst", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|RD_G0|ASI_RS2(~0), "1", 0, v6 }, /* orcc rs1, %g0, %g0 */ | ||
1010 | -{ "tst", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|RD_G0|RS1_G0|ASI(~0), "2", 0, v6 }, /* orcc %g0, rs2, %g0 */ | ||
1011 | -{ "tst", F3(2, 0x12, 1), F3(~2, ~0x12, ~1)|RD_G0|SIMM13(~0), "1", 0, v6 }, /* orcc rs1, 0, %g0 */ | ||
1012 | - | ||
1013 | -{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI(~0), "1,2,m", 0, v8 }, /* wr r,r,%asrX */ | ||
1014 | -{ "wr", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "1,i,m", 0, v8 }, /* wr r,i,%asrX */ | ||
1015 | -{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI_RS2(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,%g0,%asrX */ | ||
1016 | -{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI(~0), "1,2,y", 0, v6 }, /* wr r,r,%y */ | ||
1017 | -{ "wr", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "1,i,y", 0, v6 }, /* wr r,i,%y */ | ||
1018 | -{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI_RS2(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,%g0,%y */ | ||
1019 | -{ "wr", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI(~0), "1,2,p", 0, v6notv9 }, /* wr r,r,%psr */ | ||
1020 | -{ "wr", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "1,i,p", 0, v6notv9 }, /* wr r,i,%psr */ | ||
1021 | -{ "wr", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI_RS2(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%psr */ | ||
1022 | -{ "wr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI(~0), "1,2,w", 0, v6notv9 }, /* wr r,r,%wim */ | ||
1023 | -{ "wr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "1,i,w", 0, v6notv9 }, /* wr r,i,%wim */ | ||
1024 | -{ "wr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI_RS2(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%wim */ | ||
1025 | -{ "wr", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI(~0), "1,2,t", 0, v6notv9 }, /* wr r,r,%tbr */ | ||
1026 | -{ "wr", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "1,i,t", 0, v6notv9 }, /* wr r,i,%tbr */ | ||
1027 | -{ "wr", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI_RS2(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%tbr */ | ||
1028 | - | ||
1029 | -{ "wr", F3(2, 0x30, 0)|RD(2), F3(~2, ~0x30, ~0)|RD(~2)|ASI(~0), "1,2,E", 0, v9 }, /* wr r,r,%ccr */ | ||
1030 | -{ "wr", F3(2, 0x30, 1)|RD(2), F3(~2, ~0x30, ~1)|RD(~2), "1,i,E", 0, v9 }, /* wr r,i,%ccr */ | ||
1031 | -{ "wr", F3(2, 0x30, 0)|RD(3), F3(~2, ~0x30, ~0)|RD(~3)|ASI(~0), "1,2,o", 0, v9 }, /* wr r,r,%asi */ | ||
1032 | -{ "wr", F3(2, 0x30, 1)|RD(3), F3(~2, ~0x30, ~1)|RD(~3), "1,i,o", 0, v9 }, /* wr r,i,%asi */ | ||
1033 | -{ "wr", F3(2, 0x30, 0)|RD(6), F3(~2, ~0x30, ~0)|RD(~6)|ASI(~0), "1,2,s", 0, v9 }, /* wr r,r,%fprs */ | ||
1034 | -{ "wr", F3(2, 0x30, 1)|RD(6), F3(~2, ~0x30, ~1)|RD(~6), "1,i,s", 0, v9 }, /* wr r,i,%fprs */ | ||
1035 | - | ||
1036 | -{ "wr", F3(2, 0x30, 0)|RD(16), F3(~2, ~0x30, ~0)|RD(~16)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%pcr */ | ||
1037 | -{ "wr", F3(2, 0x30, 1)|RD(16), F3(~2, ~0x30, ~1)|RD(~16), "1,i,_", 0, v9a }, /* wr r,i,%pcr */ | ||
1038 | -{ "wr", F3(2, 0x30, 0)|RD(17), F3(~2, ~0x30, ~0)|RD(~17)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%pic */ | ||
1039 | -{ "wr", F3(2, 0x30, 1)|RD(17), F3(~2, ~0x30, ~1)|RD(~17), "1,i,_", 0, v9a }, /* wr r,i,%pic */ | ||
1040 | -{ "wr", F3(2, 0x30, 0)|RD(18), F3(~2, ~0x30, ~0)|RD(~18)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%dcr */ | ||
1041 | -{ "wr", F3(2, 0x30, 1)|RD(18), F3(~2, ~0x30, ~1)|RD(~18), "1,i,_", 0, v9a }, /* wr r,i,%dcr */ | ||
1042 | -{ "wr", F3(2, 0x30, 0)|RD(19), F3(~2, ~0x30, ~0)|RD(~19)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%gsr */ | ||
1043 | -{ "wr", F3(2, 0x30, 1)|RD(19), F3(~2, ~0x30, ~1)|RD(~19), "1,i,_", 0, v9a }, /* wr r,i,%gsr */ | ||
1044 | -{ "wr", F3(2, 0x30, 0)|RD(20), F3(~2, ~0x30, ~0)|RD(~20)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%set_softint */ | ||
1045 | -{ "wr", F3(2, 0x30, 1)|RD(20), F3(~2, ~0x30, ~1)|RD(~20), "1,i,_", 0, v9a }, /* wr r,i,%set_softint */ | ||
1046 | -{ "wr", F3(2, 0x30, 0)|RD(21), F3(~2, ~0x30, ~0)|RD(~21)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%clear_softint */ | ||
1047 | -{ "wr", F3(2, 0x30, 1)|RD(21), F3(~2, ~0x30, ~1)|RD(~21), "1,i,_", 0, v9a }, /* wr r,i,%clear_softint */ | ||
1048 | -{ "wr", F3(2, 0x30, 0)|RD(22), F3(~2, ~0x30, ~0)|RD(~22)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%softint */ | ||
1049 | -{ "wr", F3(2, 0x30, 1)|RD(22), F3(~2, ~0x30, ~1)|RD(~22), "1,i,_", 0, v9a }, /* wr r,i,%softint */ | ||
1050 | -{ "wr", F3(2, 0x30, 0)|RD(23), F3(~2, ~0x30, ~0)|RD(~23)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%tick_cmpr */ | ||
1051 | -{ "wr", F3(2, 0x30, 1)|RD(23), F3(~2, ~0x30, ~1)|RD(~23), "1,i,_", 0, v9a }, /* wr r,i,%tick_cmpr */ | ||
1052 | -{ "wr", F3(2, 0x30, 0)|RD(24), F3(~2, ~0x30, ~0)|RD(~24)|ASI(~0), "1,2,_", 0, v9b }, /* wr r,r,%sys_tick */ | ||
1053 | -{ "wr", F3(2, 0x30, 1)|RD(24), F3(~2, ~0x30, ~1)|RD(~24), "1,i,_", 0, v9b }, /* wr r,i,%sys_tick */ | ||
1054 | -{ "wr", F3(2, 0x30, 0)|RD(25), F3(~2, ~0x30, ~0)|RD(~25)|ASI(~0), "1,2,_", 0, v9b }, /* wr r,r,%sys_tick_cmpr */ | ||
1055 | -{ "wr", F3(2, 0x30, 1)|RD(25), F3(~2, ~0x30, ~1)|RD(~25), "1,i,_", 0, v9b }, /* wr r,i,%sys_tick_cmpr */ | ||
1056 | - | ||
1057 | -{ "rd", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|SIMM13(~0), "M,d", 0, v8 }, /* rd %asrX,r */ | ||
1058 | -{ "rd", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0), "y,d", 0, v6 }, /* rd %y,r */ | ||
1059 | -{ "rd", F3(2, 0x29, 0), F3(~2, ~0x29, ~0)|RS1_G0|SIMM13(~0), "p,d", 0, v6notv9 }, /* rd %psr,r */ | ||
1060 | -{ "rd", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|RS1_G0|SIMM13(~0), "w,d", 0, v6notv9 }, /* rd %wim,r */ | ||
1061 | -{ "rd", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0), "t,d", 0, v6notv9 }, /* rd %tbr,r */ | ||
1062 | - | ||
1063 | -{ "rd", F3(2, 0x28, 0)|RS1(2), F3(~2, ~0x28, ~0)|RS1(~2)|SIMM13(~0), "E,d", 0, v9 }, /* rd %ccr,r */ | ||
1064 | -{ "rd", F3(2, 0x28, 0)|RS1(3), F3(~2, ~0x28, ~0)|RS1(~3)|SIMM13(~0), "o,d", 0, v9 }, /* rd %asi,r */ | ||
1065 | -{ "rd", F3(2, 0x28, 0)|RS1(4), F3(~2, ~0x28, ~0)|RS1(~4)|SIMM13(~0), "W,d", 0, v9 }, /* rd %tick,r */ | ||
1066 | -{ "rd", F3(2, 0x28, 0)|RS1(5), F3(~2, ~0x28, ~0)|RS1(~5)|SIMM13(~0), "P,d", 0, v9 }, /* rd %pc,r */ | ||
1067 | -{ "rd", F3(2, 0x28, 0)|RS1(6), F3(~2, ~0x28, ~0)|RS1(~6)|SIMM13(~0), "s,d", 0, v9 }, /* rd %fprs,r */ | ||
1068 | - | ||
1069 | -{ "rd", F3(2, 0x28, 0)|RS1(16), F3(~2, ~0x28, ~0)|RS1(~16)|SIMM13(~0), "/,d", 0, v9a }, /* rd %pcr,r */ | ||
1070 | -{ "rd", F3(2, 0x28, 0)|RS1(17), F3(~2, ~0x28, ~0)|RS1(~17)|SIMM13(~0), "/,d", 0, v9a }, /* rd %pic,r */ | ||
1071 | -{ "rd", F3(2, 0x28, 0)|RS1(18), F3(~2, ~0x28, ~0)|RS1(~18)|SIMM13(~0), "/,d", 0, v9a }, /* rd %dcr,r */ | ||
1072 | -{ "rd", F3(2, 0x28, 0)|RS1(19), F3(~2, ~0x28, ~0)|RS1(~19)|SIMM13(~0), "/,d", 0, v9a }, /* rd %gsr,r */ | ||
1073 | -{ "rd", F3(2, 0x28, 0)|RS1(22), F3(~2, ~0x28, ~0)|RS1(~22)|SIMM13(~0), "/,d", 0, v9a }, /* rd %softint,r */ | ||
1074 | -{ "rd", F3(2, 0x28, 0)|RS1(23), F3(~2, ~0x28, ~0)|RS1(~23)|SIMM13(~0), "/,d", 0, v9a }, /* rd %tick_cmpr,r */ | ||
1075 | -{ "rd", F3(2, 0x28, 0)|RS1(24), F3(~2, ~0x28, ~0)|RS1(~24)|SIMM13(~0), "/,d", 0, v9b }, /* rd %sys_tick,r */ | ||
1076 | -{ "rd", F3(2, 0x28, 0)|RS1(25), F3(~2, ~0x28, ~0)|RS1(~25)|SIMM13(~0), "/,d", 0, v9b }, /* rd %sys_tick_cmpr,r */ | ||
1077 | - | ||
1078 | -{ "rdpr", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|SIMM13(~0), "?,d", 0, v9 }, /* rdpr %priv,r */ | ||
1079 | -{ "wrpr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0), "1,2,!", 0, v9 }, /* wrpr r1,r2,%priv */ | ||
1080 | -{ "wrpr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|SIMM13(~0), "1,!", 0, v9 }, /* wrpr r1,%priv */ | ||
1081 | -{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1), "1,i,!", 0, v9 }, /* wrpr r1,i,%priv */ | ||
1082 | -{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1), "i,1,!", F_ALIAS, v9 }, /* wrpr i,r1,%priv */ | ||
1083 | -{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RS1(~0), "i,!", 0, v9 }, /* wrpr i,%priv */ | 1006 | +{ "orn", F3(2, 0x06, 0), F3(~2, ~0x06, ~0)|ASI(~0), "1,2,d", 0, v6 }, |
1007 | +{ "orn", F3(2, 0x06, 1), F3(~2, ~0x06, ~1), "1,i,d", 0, v6 }, | ||
1008 | + | ||
1009 | +{ "tst", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|RD_G0|ASI_RS2(~0), "1", 0, v6 }, /* orcc rs1, %g0, %g0 */ | ||
1010 | +{ "tst", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|RD_G0|RS1_G0|ASI(~0), "2", 0, v6 }, /* orcc %g0, rs2, %g0 */ | ||
1011 | +{ "tst", F3(2, 0x12, 1), F3(~2, ~0x12, ~1)|RD_G0|SIMM13(~0), "1", 0, v6 }, /* orcc rs1, 0, %g0 */ | ||
1012 | + | ||
1013 | +{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI(~0), "1,2,m", 0, v8 }, /* wr r,r,%asrX */ | ||
1014 | +{ "wr", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "1,i,m", 0, v8 }, /* wr r,i,%asrX */ | ||
1015 | +{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI_RS2(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,%g0,%asrX */ | ||
1016 | +{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI(~0), "1,2,y", 0, v6 }, /* wr r,r,%y */ | ||
1017 | +{ "wr", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "1,i,y", 0, v6 }, /* wr r,i,%y */ | ||
1018 | +{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI_RS2(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,%g0,%y */ | ||
1019 | +{ "wr", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI(~0), "1,2,p", 0, v6notv9 }, /* wr r,r,%psr */ | ||
1020 | +{ "wr", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "1,i,p", 0, v6notv9 }, /* wr r,i,%psr */ | ||
1021 | +{ "wr", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI_RS2(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%psr */ | ||
1022 | +{ "wr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI(~0), "1,2,w", 0, v6notv9 }, /* wr r,r,%wim */ | ||
1023 | +{ "wr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "1,i,w", 0, v6notv9 }, /* wr r,i,%wim */ | ||
1024 | +{ "wr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI_RS2(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%wim */ | ||
1025 | +{ "wr", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI(~0), "1,2,t", 0, v6notv9 }, /* wr r,r,%tbr */ | ||
1026 | +{ "wr", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "1,i,t", 0, v6notv9 }, /* wr r,i,%tbr */ | ||
1027 | +{ "wr", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI_RS2(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%tbr */ | ||
1028 | + | ||
1029 | +{ "wr", F3(2, 0x30, 0)|RD(2), F3(~2, ~0x30, ~0)|RD(~2)|ASI(~0), "1,2,E", 0, v9 }, /* wr r,r,%ccr */ | ||
1030 | +{ "wr", F3(2, 0x30, 1)|RD(2), F3(~2, ~0x30, ~1)|RD(~2), "1,i,E", 0, v9 }, /* wr r,i,%ccr */ | ||
1031 | +{ "wr", F3(2, 0x30, 0)|RD(3), F3(~2, ~0x30, ~0)|RD(~3)|ASI(~0), "1,2,o", 0, v9 }, /* wr r,r,%asi */ | ||
1032 | +{ "wr", F3(2, 0x30, 1)|RD(3), F3(~2, ~0x30, ~1)|RD(~3), "1,i,o", 0, v9 }, /* wr r,i,%asi */ | ||
1033 | +{ "wr", F3(2, 0x30, 0)|RD(6), F3(~2, ~0x30, ~0)|RD(~6)|ASI(~0), "1,2,s", 0, v9 }, /* wr r,r,%fprs */ | ||
1034 | +{ "wr", F3(2, 0x30, 1)|RD(6), F3(~2, ~0x30, ~1)|RD(~6), "1,i,s", 0, v9 }, /* wr r,i,%fprs */ | ||
1035 | + | ||
1036 | +{ "wr", F3(2, 0x30, 0)|RD(16), F3(~2, ~0x30, ~0)|RD(~16)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%pcr */ | ||
1037 | +{ "wr", F3(2, 0x30, 1)|RD(16), F3(~2, ~0x30, ~1)|RD(~16), "1,i,_", 0, v9a }, /* wr r,i,%pcr */ | ||
1038 | +{ "wr", F3(2, 0x30, 0)|RD(17), F3(~2, ~0x30, ~0)|RD(~17)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%pic */ | ||
1039 | +{ "wr", F3(2, 0x30, 1)|RD(17), F3(~2, ~0x30, ~1)|RD(~17), "1,i,_", 0, v9a }, /* wr r,i,%pic */ | ||
1040 | +{ "wr", F3(2, 0x30, 0)|RD(18), F3(~2, ~0x30, ~0)|RD(~18)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%dcr */ | ||
1041 | +{ "wr", F3(2, 0x30, 1)|RD(18), F3(~2, ~0x30, ~1)|RD(~18), "1,i,_", 0, v9a }, /* wr r,i,%dcr */ | ||
1042 | +{ "wr", F3(2, 0x30, 0)|RD(19), F3(~2, ~0x30, ~0)|RD(~19)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%gsr */ | ||
1043 | +{ "wr", F3(2, 0x30, 1)|RD(19), F3(~2, ~0x30, ~1)|RD(~19), "1,i,_", 0, v9a }, /* wr r,i,%gsr */ | ||
1044 | +{ "wr", F3(2, 0x30, 0)|RD(20), F3(~2, ~0x30, ~0)|RD(~20)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%set_softint */ | ||
1045 | +{ "wr", F3(2, 0x30, 1)|RD(20), F3(~2, ~0x30, ~1)|RD(~20), "1,i,_", 0, v9a }, /* wr r,i,%set_softint */ | ||
1046 | +{ "wr", F3(2, 0x30, 0)|RD(21), F3(~2, ~0x30, ~0)|RD(~21)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%clear_softint */ | ||
1047 | +{ "wr", F3(2, 0x30, 1)|RD(21), F3(~2, ~0x30, ~1)|RD(~21), "1,i,_", 0, v9a }, /* wr r,i,%clear_softint */ | ||
1048 | +{ "wr", F3(2, 0x30, 0)|RD(22), F3(~2, ~0x30, ~0)|RD(~22)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%softint */ | ||
1049 | +{ "wr", F3(2, 0x30, 1)|RD(22), F3(~2, ~0x30, ~1)|RD(~22), "1,i,_", 0, v9a }, /* wr r,i,%softint */ | ||
1050 | +{ "wr", F3(2, 0x30, 0)|RD(23), F3(~2, ~0x30, ~0)|RD(~23)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%tick_cmpr */ | ||
1051 | +{ "wr", F3(2, 0x30, 1)|RD(23), F3(~2, ~0x30, ~1)|RD(~23), "1,i,_", 0, v9a }, /* wr r,i,%tick_cmpr */ | ||
1052 | +{ "wr", F3(2, 0x30, 0)|RD(24), F3(~2, ~0x30, ~0)|RD(~24)|ASI(~0), "1,2,_", 0, v9b }, /* wr r,r,%sys_tick */ | ||
1053 | +{ "wr", F3(2, 0x30, 1)|RD(24), F3(~2, ~0x30, ~1)|RD(~24), "1,i,_", 0, v9b }, /* wr r,i,%sys_tick */ | ||
1054 | +{ "wr", F3(2, 0x30, 0)|RD(25), F3(~2, ~0x30, ~0)|RD(~25)|ASI(~0), "1,2,_", 0, v9b }, /* wr r,r,%sys_tick_cmpr */ | ||
1055 | +{ "wr", F3(2, 0x30, 1)|RD(25), F3(~2, ~0x30, ~1)|RD(~25), "1,i,_", 0, v9b }, /* wr r,i,%sys_tick_cmpr */ | ||
1056 | + | ||
1057 | +{ "rd", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|SIMM13(~0), "M,d", 0, v8 }, /* rd %asrX,r */ | ||
1058 | +{ "rd", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0), "y,d", 0, v6 }, /* rd %y,r */ | ||
1059 | +{ "rd", F3(2, 0x29, 0), F3(~2, ~0x29, ~0)|RS1_G0|SIMM13(~0), "p,d", 0, v6notv9 }, /* rd %psr,r */ | ||
1060 | +{ "rd", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|RS1_G0|SIMM13(~0), "w,d", 0, v6notv9 }, /* rd %wim,r */ | ||
1061 | +{ "rd", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0), "t,d", 0, v6notv9 }, /* rd %tbr,r */ | ||
1062 | + | ||
1063 | +{ "rd", F3(2, 0x28, 0)|RS1(2), F3(~2, ~0x28, ~0)|RS1(~2)|SIMM13(~0), "E,d", 0, v9 }, /* rd %ccr,r */ | ||
1064 | +{ "rd", F3(2, 0x28, 0)|RS1(3), F3(~2, ~0x28, ~0)|RS1(~3)|SIMM13(~0), "o,d", 0, v9 }, /* rd %asi,r */ | ||
1065 | +{ "rd", F3(2, 0x28, 0)|RS1(4), F3(~2, ~0x28, ~0)|RS1(~4)|SIMM13(~0), "W,d", 0, v9 }, /* rd %tick,r */ | ||
1066 | +{ "rd", F3(2, 0x28, 0)|RS1(5), F3(~2, ~0x28, ~0)|RS1(~5)|SIMM13(~0), "P,d", 0, v9 }, /* rd %pc,r */ | ||
1067 | +{ "rd", F3(2, 0x28, 0)|RS1(6), F3(~2, ~0x28, ~0)|RS1(~6)|SIMM13(~0), "s,d", 0, v9 }, /* rd %fprs,r */ | ||
1068 | + | ||
1069 | +{ "rd", F3(2, 0x28, 0)|RS1(16), F3(~2, ~0x28, ~0)|RS1(~16)|SIMM13(~0), "/,d", 0, v9a }, /* rd %pcr,r */ | ||
1070 | +{ "rd", F3(2, 0x28, 0)|RS1(17), F3(~2, ~0x28, ~0)|RS1(~17)|SIMM13(~0), "/,d", 0, v9a }, /* rd %pic,r */ | ||
1071 | +{ "rd", F3(2, 0x28, 0)|RS1(18), F3(~2, ~0x28, ~0)|RS1(~18)|SIMM13(~0), "/,d", 0, v9a }, /* rd %dcr,r */ | ||
1072 | +{ "rd", F3(2, 0x28, 0)|RS1(19), F3(~2, ~0x28, ~0)|RS1(~19)|SIMM13(~0), "/,d", 0, v9a }, /* rd %gsr,r */ | ||
1073 | +{ "rd", F3(2, 0x28, 0)|RS1(22), F3(~2, ~0x28, ~0)|RS1(~22)|SIMM13(~0), "/,d", 0, v9a }, /* rd %softint,r */ | ||
1074 | +{ "rd", F3(2, 0x28, 0)|RS1(23), F3(~2, ~0x28, ~0)|RS1(~23)|SIMM13(~0), "/,d", 0, v9a }, /* rd %tick_cmpr,r */ | ||
1075 | +{ "rd", F3(2, 0x28, 0)|RS1(24), F3(~2, ~0x28, ~0)|RS1(~24)|SIMM13(~0), "/,d", 0, v9b }, /* rd %sys_tick,r */ | ||
1076 | +{ "rd", F3(2, 0x28, 0)|RS1(25), F3(~2, ~0x28, ~0)|RS1(~25)|SIMM13(~0), "/,d", 0, v9b }, /* rd %sys_tick_cmpr,r */ | ||
1077 | + | ||
1078 | +{ "rdpr", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|SIMM13(~0), "?,d", 0, v9 }, /* rdpr %priv,r */ | ||
1079 | +{ "wrpr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0), "1,2,!", 0, v9 }, /* wrpr r1,r2,%priv */ | ||
1080 | +{ "wrpr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|SIMM13(~0), "1,!", 0, v9 }, /* wrpr r1,%priv */ | ||
1081 | +{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1), "1,i,!", 0, v9 }, /* wrpr r1,i,%priv */ | ||
1082 | +{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1), "i,1,!", F_ALIAS, v9 }, /* wrpr i,r1,%priv */ | ||
1083 | +{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RS1(~0), "i,!", 0, v9 }, /* wrpr i,%priv */ | ||
1084 | 1084 | ||
1085 | /* ??? This group seems wrong. A three operand move? */ | 1085 | /* ??? This group seems wrong. A three operand move? */ |
1086 | -{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI(~0), "1,2,m", F_ALIAS, v8 }, /* wr r,r,%asrX */ | ||
1087 | -{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "1,i,m", F_ALIAS, v8 }, /* wr r,i,%asrX */ | ||
1088 | -{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI(~0), "1,2,y", F_ALIAS, v6 }, /* wr r,r,%y */ | ||
1089 | -{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "1,i,y", F_ALIAS, v6 }, /* wr r,i,%y */ | ||
1090 | -{ "mov", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI(~0), "1,2,p", F_ALIAS, v6notv9 }, /* wr r,r,%psr */ | ||
1091 | -{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "1,i,p", F_ALIAS, v6notv9 }, /* wr r,i,%psr */ | ||
1092 | -{ "mov", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI(~0), "1,2,w", F_ALIAS, v6notv9 }, /* wr r,r,%wim */ | ||
1093 | -{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "1,i,w", F_ALIAS, v6notv9 }, /* wr r,i,%wim */ | ||
1094 | -{ "mov", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI(~0), "1,2,t", F_ALIAS, v6notv9 }, /* wr r,r,%tbr */ | ||
1095 | -{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "1,i,t", F_ALIAS, v6notv9 }, /* wr r,i,%tbr */ | ||
1096 | - | ||
1097 | -{ "mov", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|SIMM13(~0), "M,d", F_ALIAS, v8 }, /* rd %asr1,r */ | ||
1098 | -{ "mov", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0), "y,d", F_ALIAS, v6 }, /* rd %y,r */ | ||
1099 | -{ "mov", F3(2, 0x29, 0), F3(~2, ~0x29, ~0)|RS1_G0|SIMM13(~0), "p,d", F_ALIAS, v6notv9 }, /* rd %psr,r */ | ||
1100 | -{ "mov", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|RS1_G0|SIMM13(~0), "w,d", F_ALIAS, v6notv9 }, /* rd %wim,r */ | ||
1101 | -{ "mov", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0), "t,d", F_ALIAS, v6notv9 }, /* rd %tbr,r */ | ||
1102 | - | ||
1103 | -{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI_RS2(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,%g0,%asrX */ | ||
1104 | -{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "i,m", F_ALIAS, v8 }, /* wr %g0,i,%asrX */ | ||
1105 | -{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|SIMM13(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,0,%asrX */ | ||
1106 | -{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI_RS2(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,%g0,%y */ | ||
1107 | -{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "i,y", F_ALIAS, v6 }, /* wr %g0,i,%y */ | ||
1108 | -{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0|SIMM13(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,0,%y */ | ||
1109 | -{ "mov", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI_RS2(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%psr */ | ||
1110 | -{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "i,p", F_ALIAS, v6notv9 }, /* wr %g0,i,%psr */ | ||
1111 | -{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0|SIMM13(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,0,%psr */ | ||
1112 | -{ "mov", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI_RS2(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%wim */ | ||
1113 | -{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "i,w", F_ALIAS, v6notv9 }, /* wr %g0,i,%wim */ | ||
1114 | -{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0|SIMM13(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,0,%wim */ | ||
1115 | -{ "mov", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI_RS2(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%tbr */ | ||
1116 | -{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "i,t", F_ALIAS, v6notv9 }, /* wr %g0,i,%tbr */ | ||
1117 | -{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0|SIMM13(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,0,%tbr */ | ||
1118 | - | ||
1119 | -{ "mov", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|RS1_G0|ASI(~0), "2,d", 0, v6 }, /* or %g0,rs2,d */ | ||
1120 | -{ "mov", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|RS1_G0, "i,d", 0, v6 }, /* or %g0,i,d */ | ||
1121 | -{ "mov", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI_RS2(~0), "1,d", 0, v6 }, /* or rs1,%g0,d */ | ||
1122 | -{ "mov", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|SIMM13(~0), "1,d", 0, v6 }, /* or rs1,0,d */ | ||
1123 | - | ||
1124 | -{ "or", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1125 | -{ "or", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "1,i,d", 0, v6 }, | ||
1126 | -{ "or", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "i,1,d", 0, v6 }, | ||
1127 | - | ||
1128 | -{ "bset", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* or rd,rs2,rd */ | ||
1129 | -{ "bset", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "i,r", F_ALIAS, v6 }, /* or rd,i,rd */ | 1086 | +{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI(~0), "1,2,m", F_ALIAS, v8 }, /* wr r,r,%asrX */ |
1087 | +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "1,i,m", F_ALIAS, v8 }, /* wr r,i,%asrX */ | ||
1088 | +{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI(~0), "1,2,y", F_ALIAS, v6 }, /* wr r,r,%y */ | ||
1089 | +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "1,i,y", F_ALIAS, v6 }, /* wr r,i,%y */ | ||
1090 | +{ "mov", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI(~0), "1,2,p", F_ALIAS, v6notv9 }, /* wr r,r,%psr */ | ||
1091 | +{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "1,i,p", F_ALIAS, v6notv9 }, /* wr r,i,%psr */ | ||
1092 | +{ "mov", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI(~0), "1,2,w", F_ALIAS, v6notv9 }, /* wr r,r,%wim */ | ||
1093 | +{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "1,i,w", F_ALIAS, v6notv9 }, /* wr r,i,%wim */ | ||
1094 | +{ "mov", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI(~0), "1,2,t", F_ALIAS, v6notv9 }, /* wr r,r,%tbr */ | ||
1095 | +{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "1,i,t", F_ALIAS, v6notv9 }, /* wr r,i,%tbr */ | ||
1096 | + | ||
1097 | +{ "mov", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|SIMM13(~0), "M,d", F_ALIAS, v8 }, /* rd %asr1,r */ | ||
1098 | +{ "mov", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0), "y,d", F_ALIAS, v6 }, /* rd %y,r */ | ||
1099 | +{ "mov", F3(2, 0x29, 0), F3(~2, ~0x29, ~0)|RS1_G0|SIMM13(~0), "p,d", F_ALIAS, v6notv9 }, /* rd %psr,r */ | ||
1100 | +{ "mov", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|RS1_G0|SIMM13(~0), "w,d", F_ALIAS, v6notv9 }, /* rd %wim,r */ | ||
1101 | +{ "mov", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0), "t,d", F_ALIAS, v6notv9 }, /* rd %tbr,r */ | ||
1102 | + | ||
1103 | +{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI_RS2(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,%g0,%asrX */ | ||
1104 | +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "i,m", F_ALIAS, v8 }, /* wr %g0,i,%asrX */ | ||
1105 | +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|SIMM13(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,0,%asrX */ | ||
1106 | +{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI_RS2(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,%g0,%y */ | ||
1107 | +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "i,y", F_ALIAS, v6 }, /* wr %g0,i,%y */ | ||
1108 | +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0|SIMM13(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,0,%y */ | ||
1109 | +{ "mov", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI_RS2(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%psr */ | ||
1110 | +{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "i,p", F_ALIAS, v6notv9 }, /* wr %g0,i,%psr */ | ||
1111 | +{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0|SIMM13(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,0,%psr */ | ||
1112 | +{ "mov", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI_RS2(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%wim */ | ||
1113 | +{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "i,w", F_ALIAS, v6notv9 }, /* wr %g0,i,%wim */ | ||
1114 | +{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0|SIMM13(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,0,%wim */ | ||
1115 | +{ "mov", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI_RS2(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%tbr */ | ||
1116 | +{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "i,t", F_ALIAS, v6notv9 }, /* wr %g0,i,%tbr */ | ||
1117 | +{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0|SIMM13(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,0,%tbr */ | ||
1118 | + | ||
1119 | +{ "mov", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|RS1_G0|ASI(~0), "2,d", 0, v6 }, /* or %g0,rs2,d */ | ||
1120 | +{ "mov", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|RS1_G0, "i,d", 0, v6 }, /* or %g0,i,d */ | ||
1121 | +{ "mov", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI_RS2(~0), "1,d", 0, v6 }, /* or rs1,%g0,d */ | ||
1122 | +{ "mov", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|SIMM13(~0), "1,d", 0, v6 }, /* or rs1,0,d */ | ||
1123 | + | ||
1124 | +{ "or", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1125 | +{ "or", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "1,i,d", 0, v6 }, | ||
1126 | +{ "or", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "i,1,d", 0, v6 }, | ||
1127 | + | ||
1128 | +{ "bset", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* or rd,rs2,rd */ | ||
1129 | +{ "bset", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "i,r", F_ALIAS, v6 }, /* or rd,i,rd */ | ||
1130 | 1130 | ||
1131 | /* This is not a commutative instruction. */ | 1131 | /* This is not a commutative instruction. */ |
1132 | -{ "andn", F3(2, 0x05, 0), F3(~2, ~0x05, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1133 | -{ "andn", F3(2, 0x05, 1), F3(~2, ~0x05, ~1), "1,i,d", 0, v6 }, | 1132 | +{ "andn", F3(2, 0x05, 0), F3(~2, ~0x05, ~0)|ASI(~0), "1,2,d", 0, v6 }, |
1133 | +{ "andn", F3(2, 0x05, 1), F3(~2, ~0x05, ~1), "1,i,d", 0, v6 }, | ||
1134 | 1134 | ||
1135 | /* This is not a commutative instruction. */ | 1135 | /* This is not a commutative instruction. */ |
1136 | -{ "andncc", F3(2, 0x15, 0), F3(~2, ~0x15, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1137 | -{ "andncc", F3(2, 0x15, 1), F3(~2, ~0x15, ~1), "1,i,d", 0, v6 }, | ||
1138 | - | ||
1139 | -{ "bclr", F3(2, 0x05, 0), F3(~2, ~0x05, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* andn rd,rs2,rd */ | ||
1140 | -{ "bclr", F3(2, 0x05, 1), F3(~2, ~0x05, ~1), "i,r", F_ALIAS, v6 }, /* andn rd,i,rd */ | ||
1141 | - | ||
1142 | -{ "cmp", F3(2, 0x14, 0), F3(~2, ~0x14, ~0)|RD_G0|ASI(~0), "1,2", 0, v6 }, /* subcc rs1,rs2,%g0 */ | ||
1143 | -{ "cmp", F3(2, 0x14, 1), F3(~2, ~0x14, ~1)|RD_G0, "1,i", 0, v6 }, /* subcc rs1,i,%g0 */ | ||
1144 | - | ||
1145 | -{ "sub", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1146 | -{ "sub", F3(2, 0x04, 1), F3(~2, ~0x04, ~1), "1,i,d", 0, v6 }, | ||
1147 | - | ||
1148 | -{ "subcc", F3(2, 0x14, 0), F3(~2, ~0x14, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1149 | -{ "subcc", F3(2, 0x14, 1), F3(~2, ~0x14, ~1), "1,i,d", 0, v6 }, | ||
1150 | - | ||
1151 | -{ "subx", F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, | ||
1152 | -{ "subx", F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1), "1,i,d", 0, v6notv9 }, | ||
1153 | -{ "subc", F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1154 | -{ "subc", F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1), "1,i,d", 0, v9 }, | ||
1155 | - | ||
1156 | -{ "subxcc", F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, | ||
1157 | -{ "subxcc", F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1), "1,i,d", 0, v6notv9 }, | ||
1158 | -{ "subccc", F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1159 | -{ "subccc", F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1), "1,i,d", 0, v9 }, | ||
1160 | - | ||
1161 | -{ "and", F3(2, 0x01, 0), F3(~2, ~0x01, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1162 | -{ "and", F3(2, 0x01, 1), F3(~2, ~0x01, ~1), "1,i,d", 0, v6 }, | ||
1163 | -{ "and", F3(2, 0x01, 1), F3(~2, ~0x01, ~1), "i,1,d", 0, v6 }, | ||
1164 | - | ||
1165 | -{ "andcc", F3(2, 0x11, 0), F3(~2, ~0x11, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1166 | -{ "andcc", F3(2, 0x11, 1), F3(~2, ~0x11, ~1), "1,i,d", 0, v6 }, | ||
1167 | -{ "andcc", F3(2, 0x11, 1), F3(~2, ~0x11, ~1), "i,1,d", 0, v6 }, | ||
1168 | - | ||
1169 | -{ "dec", F3(2, 0x04, 1)|SIMM13(0x1), F3(~2, ~0x04, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* sub rd,1,rd */ | ||
1170 | -{ "dec", F3(2, 0x04, 1), F3(~2, ~0x04, ~1), "i,r", F_ALIAS, v8 }, /* sub rd,imm,rd */ | ||
1171 | -{ "deccc", F3(2, 0x14, 1)|SIMM13(0x1), F3(~2, ~0x14, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* subcc rd,1,rd */ | ||
1172 | -{ "deccc", F3(2, 0x14, 1), F3(~2, ~0x14, ~1), "i,r", F_ALIAS, v8 }, /* subcc rd,imm,rd */ | ||
1173 | -{ "inc", F3(2, 0x00, 1)|SIMM13(0x1), F3(~2, ~0x00, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* add rd,1,rd */ | ||
1174 | -{ "inc", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "i,r", F_ALIAS, v8 }, /* add rd,imm,rd */ | ||
1175 | -{ "inccc", F3(2, 0x10, 1)|SIMM13(0x1), F3(~2, ~0x10, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* addcc rd,1,rd */ | ||
1176 | -{ "inccc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "i,r", F_ALIAS, v8 }, /* addcc rd,imm,rd */ | ||
1177 | - | ||
1178 | -{ "btst", F3(2, 0x11, 0), F3(~2, ~0x11, ~0)|RD_G0|ASI(~0), "1,2", F_ALIAS, v6 }, /* andcc rs1,rs2,%g0 */ | ||
1179 | -{ "btst", F3(2, 0x11, 1), F3(~2, ~0x11, ~1)|RD_G0, "i,1", F_ALIAS, v6 }, /* andcc rs1,i,%g0 */ | ||
1180 | - | ||
1181 | -{ "neg", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|RS1_G0|ASI(~0), "2,d", F_ALIAS, v6 }, /* sub %g0,rs2,rd */ | ||
1182 | -{ "neg", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|RS1_G0|ASI(~0), "O", F_ALIAS, v6 }, /* sub %g0,rd,rd */ | ||
1183 | - | ||
1184 | -{ "add", F3(2, 0x00, 0), F3(~2, ~0x00, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1185 | -{ "add", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "1,i,d", 0, v6 }, | ||
1186 | -{ "add", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "i,1,d", 0, v6 }, | ||
1187 | -{ "addcc", F3(2, 0x10, 0), F3(~2, ~0x10, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1188 | -{ "addcc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "1,i,d", 0, v6 }, | ||
1189 | -{ "addcc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "i,1,d", 0, v6 }, | ||
1190 | - | ||
1191 | -{ "addx", F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, | ||
1192 | -{ "addx", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "1,i,d", 0, v6notv9 }, | ||
1193 | -{ "addx", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "i,1,d", 0, v6notv9 }, | ||
1194 | -{ "addc", F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1195 | -{ "addc", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "1,i,d", 0, v9 }, | ||
1196 | -{ "addc", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "i,1,d", 0, v9 }, | ||
1197 | - | ||
1198 | -{ "addxcc", F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, | ||
1199 | -{ "addxcc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "1,i,d", 0, v6notv9 }, | ||
1200 | -{ "addxcc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "i,1,d", 0, v6notv9 }, | ||
1201 | -{ "addccc", F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1202 | -{ "addccc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "1,i,d", 0, v9 }, | ||
1203 | -{ "addccc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "i,1,d", 0, v9 }, | ||
1204 | - | ||
1205 | -{ "smul", F3(2, 0x0b, 0), F3(~2, ~0x0b, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1206 | -{ "smul", F3(2, 0x0b, 1), F3(~2, ~0x0b, ~1), "1,i,d", 0, v8 }, | ||
1207 | -{ "smul", F3(2, 0x0b, 1), F3(~2, ~0x0b, ~1), "i,1,d", 0, v8 }, | ||
1208 | -{ "smulcc", F3(2, 0x1b, 0), F3(~2, ~0x1b, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1209 | -{ "smulcc", F3(2, 0x1b, 1), F3(~2, ~0x1b, ~1), "1,i,d", 0, v8 }, | ||
1210 | -{ "smulcc", F3(2, 0x1b, 1), F3(~2, ~0x1b, ~1), "i,1,d", 0, v8 }, | ||
1211 | -{ "umul", F3(2, 0x0a, 0), F3(~2, ~0x0a, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1212 | -{ "umul", F3(2, 0x0a, 1), F3(~2, ~0x0a, ~1), "1,i,d", 0, v8 }, | ||
1213 | -{ "umul", F3(2, 0x0a, 1), F3(~2, ~0x0a, ~1), "i,1,d", 0, v8 }, | ||
1214 | -{ "umulcc", F3(2, 0x1a, 0), F3(~2, ~0x1a, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1215 | -{ "umulcc", F3(2, 0x1a, 1), F3(~2, ~0x1a, ~1), "1,i,d", 0, v8 }, | ||
1216 | -{ "umulcc", F3(2, 0x1a, 1), F3(~2, ~0x1a, ~1), "i,1,d", 0, v8 }, | ||
1217 | -{ "sdiv", F3(2, 0x0f, 0), F3(~2, ~0x0f, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1218 | -{ "sdiv", F3(2, 0x0f, 1), F3(~2, ~0x0f, ~1), "1,i,d", 0, v8 }, | ||
1219 | -{ "sdiv", F3(2, 0x0f, 1), F3(~2, ~0x0f, ~1), "i,1,d", 0, v8 }, | ||
1220 | -{ "sdivcc", F3(2, 0x1f, 0), F3(~2, ~0x1f, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1221 | -{ "sdivcc", F3(2, 0x1f, 1), F3(~2, ~0x1f, ~1), "1,i,d", 0, v8 }, | ||
1222 | -{ "sdivcc", F3(2, 0x1f, 1), F3(~2, ~0x1f, ~1), "i,1,d", 0, v8 }, | ||
1223 | -{ "udiv", F3(2, 0x0e, 0), F3(~2, ~0x0e, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1224 | -{ "udiv", F3(2, 0x0e, 1), F3(~2, ~0x0e, ~1), "1,i,d", 0, v8 }, | ||
1225 | -{ "udiv", F3(2, 0x0e, 1), F3(~2, ~0x0e, ~1), "i,1,d", 0, v8 }, | ||
1226 | -{ "udivcc", F3(2, 0x1e, 0), F3(~2, ~0x1e, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1227 | -{ "udivcc", F3(2, 0x1e, 1), F3(~2, ~0x1e, ~1), "1,i,d", 0, v8 }, | ||
1228 | -{ "udivcc", F3(2, 0x1e, 1), F3(~2, ~0x1e, ~1), "i,1,d", 0, v8 }, | ||
1229 | - | ||
1230 | -{ "mulx", F3(2, 0x09, 0), F3(~2, ~0x09, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1231 | -{ "mulx", F3(2, 0x09, 1), F3(~2, ~0x09, ~1), "1,i,d", 0, v9 }, | ||
1232 | -{ "sdivx", F3(2, 0x2d, 0), F3(~2, ~0x2d, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1233 | -{ "sdivx", F3(2, 0x2d, 1), F3(~2, ~0x2d, ~1), "1,i,d", 0, v9 }, | ||
1234 | -{ "udivx", F3(2, 0x0d, 0), F3(~2, ~0x0d, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1235 | -{ "udivx", F3(2, 0x0d, 1), F3(~2, ~0x0d, ~1), "1,i,d", 0, v9 }, | ||
1236 | - | ||
1237 | -{ "call", F1(0x1), F1(~0x1), "L", F_JSR|F_DELAYED, v6 }, | ||
1238 | -{ "call", F1(0x1), F1(~0x1), "L,#", F_JSR|F_DELAYED, v6 }, | ||
1239 | - | ||
1240 | -{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI(~0), "1+2", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+rs2,%o7 */ | ||
1241 | -{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI(~0), "1+2,#", F_JSR|F_DELAYED, v6 }, | ||
1242 | -{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI_RS2(~0), "1", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+%g0,%o7 */ | ||
1243 | -{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI_RS2(~0), "1,#", F_JSR|F_DELAYED, v6 }, | ||
1244 | -{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "1+i", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+i,%o7 */ | ||
1245 | -{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "1+i,#", F_JSR|F_DELAYED, v6 }, | ||
1246 | -{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "i+1", F_JSR|F_DELAYED, v6 }, /* jmpl i+rs1,%o7 */ | ||
1247 | -{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "i+1,#", F_JSR|F_DELAYED, v6 }, | ||
1248 | -{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|RS1_G0, "i", F_JSR|F_DELAYED, v6 }, /* jmpl %g0+i,%o7 */ | ||
1249 | -{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|RS1_G0, "i,#", F_JSR|F_DELAYED, v6 }, | ||
1250 | -{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|SIMM13(~0), "1", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+0,%o7 */ | ||
1251 | -{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|SIMM13(~0), "1,#", F_JSR|F_DELAYED, v6 }, | 1136 | +{ "andncc", F3(2, 0x15, 0), F3(~2, ~0x15, ~0)|ASI(~0), "1,2,d", 0, v6 }, |
1137 | +{ "andncc", F3(2, 0x15, 1), F3(~2, ~0x15, ~1), "1,i,d", 0, v6 }, | ||
1138 | + | ||
1139 | +{ "bclr", F3(2, 0x05, 0), F3(~2, ~0x05, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* andn rd,rs2,rd */ | ||
1140 | +{ "bclr", F3(2, 0x05, 1), F3(~2, ~0x05, ~1), "i,r", F_ALIAS, v6 }, /* andn rd,i,rd */ | ||
1141 | + | ||
1142 | +{ "cmp", F3(2, 0x14, 0), F3(~2, ~0x14, ~0)|RD_G0|ASI(~0), "1,2", 0, v6 }, /* subcc rs1,rs2,%g0 */ | ||
1143 | +{ "cmp", F3(2, 0x14, 1), F3(~2, ~0x14, ~1)|RD_G0, "1,i", 0, v6 }, /* subcc rs1,i,%g0 */ | ||
1144 | + | ||
1145 | +{ "sub", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1146 | +{ "sub", F3(2, 0x04, 1), F3(~2, ~0x04, ~1), "1,i,d", 0, v6 }, | ||
1147 | + | ||
1148 | +{ "subcc", F3(2, 0x14, 0), F3(~2, ~0x14, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1149 | +{ "subcc", F3(2, 0x14, 1), F3(~2, ~0x14, ~1), "1,i,d", 0, v6 }, | ||
1150 | + | ||
1151 | +{ "subx", F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, | ||
1152 | +{ "subx", F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1), "1,i,d", 0, v6notv9 }, | ||
1153 | +{ "subc", F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1154 | +{ "subc", F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1), "1,i,d", 0, v9 }, | ||
1155 | + | ||
1156 | +{ "subxcc", F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, | ||
1157 | +{ "subxcc", F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1), "1,i,d", 0, v6notv9 }, | ||
1158 | +{ "subccc", F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1159 | +{ "subccc", F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1), "1,i,d", 0, v9 }, | ||
1160 | + | ||
1161 | +{ "and", F3(2, 0x01, 0), F3(~2, ~0x01, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1162 | +{ "and", F3(2, 0x01, 1), F3(~2, ~0x01, ~1), "1,i,d", 0, v6 }, | ||
1163 | +{ "and", F3(2, 0x01, 1), F3(~2, ~0x01, ~1), "i,1,d", 0, v6 }, | ||
1164 | + | ||
1165 | +{ "andcc", F3(2, 0x11, 0), F3(~2, ~0x11, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1166 | +{ "andcc", F3(2, 0x11, 1), F3(~2, ~0x11, ~1), "1,i,d", 0, v6 }, | ||
1167 | +{ "andcc", F3(2, 0x11, 1), F3(~2, ~0x11, ~1), "i,1,d", 0, v6 }, | ||
1168 | + | ||
1169 | +{ "dec", F3(2, 0x04, 1)|SIMM13(0x1), F3(~2, ~0x04, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* sub rd,1,rd */ | ||
1170 | +{ "dec", F3(2, 0x04, 1), F3(~2, ~0x04, ~1), "i,r", F_ALIAS, v8 }, /* sub rd,imm,rd */ | ||
1171 | +{ "deccc", F3(2, 0x14, 1)|SIMM13(0x1), F3(~2, ~0x14, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* subcc rd,1,rd */ | ||
1172 | +{ "deccc", F3(2, 0x14, 1), F3(~2, ~0x14, ~1), "i,r", F_ALIAS, v8 }, /* subcc rd,imm,rd */ | ||
1173 | +{ "inc", F3(2, 0x00, 1)|SIMM13(0x1), F3(~2, ~0x00, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* add rd,1,rd */ | ||
1174 | +{ "inc", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "i,r", F_ALIAS, v8 }, /* add rd,imm,rd */ | ||
1175 | +{ "inccc", F3(2, 0x10, 1)|SIMM13(0x1), F3(~2, ~0x10, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* addcc rd,1,rd */ | ||
1176 | +{ "inccc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "i,r", F_ALIAS, v8 }, /* addcc rd,imm,rd */ | ||
1177 | + | ||
1178 | +{ "btst", F3(2, 0x11, 0), F3(~2, ~0x11, ~0)|RD_G0|ASI(~0), "1,2", F_ALIAS, v6 }, /* andcc rs1,rs2,%g0 */ | ||
1179 | +{ "btst", F3(2, 0x11, 1), F3(~2, ~0x11, ~1)|RD_G0, "i,1", F_ALIAS, v6 }, /* andcc rs1,i,%g0 */ | ||
1180 | + | ||
1181 | +{ "neg", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|RS1_G0|ASI(~0), "2,d", F_ALIAS, v6 }, /* sub %g0,rs2,rd */ | ||
1182 | +{ "neg", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|RS1_G0|ASI(~0), "O", F_ALIAS, v6 }, /* sub %g0,rd,rd */ | ||
1183 | + | ||
1184 | +{ "add", F3(2, 0x00, 0), F3(~2, ~0x00, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1185 | +{ "add", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "1,i,d", 0, v6 }, | ||
1186 | +{ "add", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "i,1,d", 0, v6 }, | ||
1187 | +{ "addcc", F3(2, 0x10, 0), F3(~2, ~0x10, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1188 | +{ "addcc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "1,i,d", 0, v6 }, | ||
1189 | +{ "addcc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "i,1,d", 0, v6 }, | ||
1190 | + | ||
1191 | +{ "addx", F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, | ||
1192 | +{ "addx", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "1,i,d", 0, v6notv9 }, | ||
1193 | +{ "addx", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "i,1,d", 0, v6notv9 }, | ||
1194 | +{ "addc", F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1195 | +{ "addc", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "1,i,d", 0, v9 }, | ||
1196 | +{ "addc", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "i,1,d", 0, v9 }, | ||
1197 | + | ||
1198 | +{ "addxcc", F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, | ||
1199 | +{ "addxcc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "1,i,d", 0, v6notv9 }, | ||
1200 | +{ "addxcc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "i,1,d", 0, v6notv9 }, | ||
1201 | +{ "addccc", F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1202 | +{ "addccc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "1,i,d", 0, v9 }, | ||
1203 | +{ "addccc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "i,1,d", 0, v9 }, | ||
1204 | + | ||
1205 | +{ "smul", F3(2, 0x0b, 0), F3(~2, ~0x0b, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1206 | +{ "smul", F3(2, 0x0b, 1), F3(~2, ~0x0b, ~1), "1,i,d", 0, v8 }, | ||
1207 | +{ "smul", F3(2, 0x0b, 1), F3(~2, ~0x0b, ~1), "i,1,d", 0, v8 }, | ||
1208 | +{ "smulcc", F3(2, 0x1b, 0), F3(~2, ~0x1b, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1209 | +{ "smulcc", F3(2, 0x1b, 1), F3(~2, ~0x1b, ~1), "1,i,d", 0, v8 }, | ||
1210 | +{ "smulcc", F3(2, 0x1b, 1), F3(~2, ~0x1b, ~1), "i,1,d", 0, v8 }, | ||
1211 | +{ "umul", F3(2, 0x0a, 0), F3(~2, ~0x0a, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1212 | +{ "umul", F3(2, 0x0a, 1), F3(~2, ~0x0a, ~1), "1,i,d", 0, v8 }, | ||
1213 | +{ "umul", F3(2, 0x0a, 1), F3(~2, ~0x0a, ~1), "i,1,d", 0, v8 }, | ||
1214 | +{ "umulcc", F3(2, 0x1a, 0), F3(~2, ~0x1a, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1215 | +{ "umulcc", F3(2, 0x1a, 1), F3(~2, ~0x1a, ~1), "1,i,d", 0, v8 }, | ||
1216 | +{ "umulcc", F3(2, 0x1a, 1), F3(~2, ~0x1a, ~1), "i,1,d", 0, v8 }, | ||
1217 | +{ "sdiv", F3(2, 0x0f, 0), F3(~2, ~0x0f, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1218 | +{ "sdiv", F3(2, 0x0f, 1), F3(~2, ~0x0f, ~1), "1,i,d", 0, v8 }, | ||
1219 | +{ "sdiv", F3(2, 0x0f, 1), F3(~2, ~0x0f, ~1), "i,1,d", 0, v8 }, | ||
1220 | +{ "sdivcc", F3(2, 0x1f, 0), F3(~2, ~0x1f, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1221 | +{ "sdivcc", F3(2, 0x1f, 1), F3(~2, ~0x1f, ~1), "1,i,d", 0, v8 }, | ||
1222 | +{ "sdivcc", F3(2, 0x1f, 1), F3(~2, ~0x1f, ~1), "i,1,d", 0, v8 }, | ||
1223 | +{ "udiv", F3(2, 0x0e, 0), F3(~2, ~0x0e, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1224 | +{ "udiv", F3(2, 0x0e, 1), F3(~2, ~0x0e, ~1), "1,i,d", 0, v8 }, | ||
1225 | +{ "udiv", F3(2, 0x0e, 1), F3(~2, ~0x0e, ~1), "i,1,d", 0, v8 }, | ||
1226 | +{ "udivcc", F3(2, 0x1e, 0), F3(~2, ~0x1e, ~0)|ASI(~0), "1,2,d", 0, v8 }, | ||
1227 | +{ "udivcc", F3(2, 0x1e, 1), F3(~2, ~0x1e, ~1), "1,i,d", 0, v8 }, | ||
1228 | +{ "udivcc", F3(2, 0x1e, 1), F3(~2, ~0x1e, ~1), "i,1,d", 0, v8 }, | ||
1229 | + | ||
1230 | +{ "mulx", F3(2, 0x09, 0), F3(~2, ~0x09, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1231 | +{ "mulx", F3(2, 0x09, 1), F3(~2, ~0x09, ~1), "1,i,d", 0, v9 }, | ||
1232 | +{ "sdivx", F3(2, 0x2d, 0), F3(~2, ~0x2d, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1233 | +{ "sdivx", F3(2, 0x2d, 1), F3(~2, ~0x2d, ~1), "1,i,d", 0, v9 }, | ||
1234 | +{ "udivx", F3(2, 0x0d, 0), F3(~2, ~0x0d, ~0)|ASI(~0), "1,2,d", 0, v9 }, | ||
1235 | +{ "udivx", F3(2, 0x0d, 1), F3(~2, ~0x0d, ~1), "1,i,d", 0, v9 }, | ||
1236 | + | ||
1237 | +{ "call", F1(0x1), F1(~0x1), "L", F_JSR|F_DELAYED, v6 }, | ||
1238 | +{ "call", F1(0x1), F1(~0x1), "L,#", F_JSR|F_DELAYED, v6 }, | ||
1239 | + | ||
1240 | +{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI(~0), "1+2", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+rs2,%o7 */ | ||
1241 | +{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI(~0), "1+2,#", F_JSR|F_DELAYED, v6 }, | ||
1242 | +{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI_RS2(~0), "1", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+%g0,%o7 */ | ||
1243 | +{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI_RS2(~0), "1,#", F_JSR|F_DELAYED, v6 }, | ||
1244 | +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "1+i", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+i,%o7 */ | ||
1245 | +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "1+i,#", F_JSR|F_DELAYED, v6 }, | ||
1246 | +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "i+1", F_JSR|F_DELAYED, v6 }, /* jmpl i+rs1,%o7 */ | ||
1247 | +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "i+1,#", F_JSR|F_DELAYED, v6 }, | ||
1248 | +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|RS1_G0, "i", F_JSR|F_DELAYED, v6 }, /* jmpl %g0+i,%o7 */ | ||
1249 | +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|RS1_G0, "i,#", F_JSR|F_DELAYED, v6 }, | ||
1250 | +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|SIMM13(~0), "1", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+0,%o7 */ | ||
1251 | +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|SIMM13(~0), "1,#", F_JSR|F_DELAYED, v6 }, | ||
1252 | 1252 | ||
1253 | 1253 | ||
1254 | /* Conditional instructions. | 1254 | /* Conditional instructions. |
@@ -1278,18 +1278,18 @@ const struct sparc_opcode sparc_opcodes[] = { | @@ -1278,18 +1278,18 @@ const struct sparc_opcode sparc_opcodes[] = { | ||
1278 | 1278 | ||
1279 | /* Define four traps: reg+reg, reg + immediate, immediate alone, reg alone. */ | 1279 | /* Define four traps: reg+reg, reg + immediate, immediate alone, reg alone. */ |
1280 | #define tr(opcode, mask, lose, flags) \ | 1280 | #define tr(opcode, mask, lose, flags) \ |
1281 | - { opcode, (mask)|(2<<11)|IMMED, (lose)|RS1_G0, "Z,i", (flags), v9 }, /* %g0 + imm */ \ | ||
1282 | - { opcode, (mask)|(2<<11)|IMMED, (lose), "Z,1+i", (flags), v9 }, /* rs1 + imm */ \ | ||
1283 | - { opcode, (mask)|(2<<11), IMMED|(lose), "Z,1+2", (flags), v9 }, /* rs1 + rs2 */ \ | ||
1284 | - { opcode, (mask)|(2<<11), IMMED|(lose)|RS2_G0, "Z,1", (flags), v9 }, /* rs1 + %g0 */ \ | ||
1285 | - { opcode, (mask)|IMMED, (lose)|RS1_G0, "z,i", (flags)|F_ALIAS, v9 }, /* %g0 + imm */ \ | ||
1286 | - { opcode, (mask)|IMMED, (lose), "z,1+i", (flags)|F_ALIAS, v9 }, /* rs1 + imm */ \ | ||
1287 | - { opcode, (mask), IMMED|(lose), "z,1+2", (flags)|F_ALIAS, v9 }, /* rs1 + rs2 */ \ | ||
1288 | - { opcode, (mask), IMMED|(lose)|RS2_G0, "z,1", (flags)|F_ALIAS, v9 }, /* rs1 + %g0 */ \ | ||
1289 | - { opcode, (mask)|IMMED, (lose)|RS1_G0, "i", (flags), v6 }, /* %g0 + imm */ \ | ||
1290 | - { opcode, (mask)|IMMED, (lose), "1+i", (flags), v6 }, /* rs1 + imm */ \ | ||
1291 | - { opcode, (mask), IMMED|(lose), "1+2", (flags), v6 }, /* rs1 + rs2 */ \ | ||
1292 | - { opcode, (mask), IMMED|(lose)|RS2_G0, "1", (flags), v6 } /* rs1 + %g0 */ | 1281 | + { opcode, (mask)|(2<<11)|IMMED, (lose)|RS1_G0, "Z,i", (flags), v9 }, /* %g0 + imm */ \ |
1282 | + { opcode, (mask)|(2<<11)|IMMED, (lose), "Z,1+i", (flags), v9 }, /* rs1 + imm */ \ | ||
1283 | + { opcode, (mask)|(2<<11), IMMED|(lose), "Z,1+2", (flags), v9 }, /* rs1 + rs2 */ \ | ||
1284 | + { opcode, (mask)|(2<<11), IMMED|(lose)|RS2_G0, "Z,1", (flags), v9 }, /* rs1 + %g0 */ \ | ||
1285 | + { opcode, (mask)|IMMED, (lose)|RS1_G0, "z,i", (flags)|F_ALIAS, v9 }, /* %g0 + imm */ \ | ||
1286 | + { opcode, (mask)|IMMED, (lose), "z,1+i", (flags)|F_ALIAS, v9 }, /* rs1 + imm */ \ | ||
1287 | + { opcode, (mask), IMMED|(lose), "z,1+2", (flags)|F_ALIAS, v9 }, /* rs1 + rs2 */ \ | ||
1288 | + { opcode, (mask), IMMED|(lose)|RS2_G0, "z,1", (flags)|F_ALIAS, v9 }, /* rs1 + %g0 */ \ | ||
1289 | + { opcode, (mask)|IMMED, (lose)|RS1_G0, "i", (flags), v6 }, /* %g0 + imm */ \ | ||
1290 | + { opcode, (mask)|IMMED, (lose), "1+i", (flags), v6 }, /* rs1 + imm */ \ | ||
1291 | + { opcode, (mask), IMMED|(lose), "1+2", (flags), v6 }, /* rs1 + rs2 */ \ | ||
1292 | + { opcode, (mask), IMMED|(lose)|RS2_G0, "1", (flags), v6 } /* rs1 + %g0 */ | ||
1293 | 1293 | ||
1294 | /* v9: We must put `brx' before `br', to ensure that we never match something | 1294 | /* v9: We must put `brx' before `br', to ensure that we never match something |
1295 | v9: against an expression unless it is an expression. Otherwise, we end | 1295 | v9: against an expression unless it is an expression. Otherwise, we end |
@@ -1305,32 +1305,32 @@ const struct sparc_opcode sparc_opcodes[] = { | @@ -1305,32 +1305,32 @@ const struct sparc_opcode sparc_opcodes[] = { | ||
1305 | /* Define all the conditions, all the branches, all the traps. */ | 1305 | /* Define all the conditions, all the branches, all the traps. */ |
1306 | 1306 | ||
1307 | /* Standard branch, trap mnemonics */ | 1307 | /* Standard branch, trap mnemonics */ |
1308 | -cond ("b", "ta", CONDA, F_UNBR), | 1308 | +cond ("b", "ta", CONDA, F_UNBR), |
1309 | /* Alternative form (just for assembly, not for disassembly) */ | 1309 | /* Alternative form (just for assembly, not for disassembly) */ |
1310 | -cond ("ba", "t", CONDA, F_UNBR|F_ALIAS), | ||
1311 | - | ||
1312 | -cond ("bcc", "tcc", CONDCC, F_CONDBR), | ||
1313 | -cond ("bcs", "tcs", CONDCS, F_CONDBR), | ||
1314 | -cond ("be", "te", CONDE, F_CONDBR), | ||
1315 | -cond ("beq", "teq", CONDE, F_CONDBR|F_ALIAS), | ||
1316 | -cond ("bg", "tg", CONDG, F_CONDBR), | ||
1317 | -cond ("bgt", "tgt", CONDG, F_CONDBR|F_ALIAS), | ||
1318 | -cond ("bge", "tge", CONDGE, F_CONDBR), | ||
1319 | -cond ("bgeu", "tgeu", CONDGEU, F_CONDBR|F_ALIAS), /* for cc */ | ||
1320 | -cond ("bgu", "tgu", CONDGU, F_CONDBR), | ||
1321 | -cond ("bl", "tl", CONDL, F_CONDBR), | ||
1322 | -cond ("blt", "tlt", CONDL, F_CONDBR|F_ALIAS), | ||
1323 | -cond ("ble", "tle", CONDLE, F_CONDBR), | ||
1324 | -cond ("bleu", "tleu", CONDLEU, F_CONDBR), | ||
1325 | -cond ("blu", "tlu", CONDLU, F_CONDBR|F_ALIAS), /* for cs */ | ||
1326 | -cond ("bn", "tn", CONDN, F_CONDBR), | ||
1327 | -cond ("bne", "tne", CONDNE, F_CONDBR), | ||
1328 | -cond ("bneg", "tneg", CONDNEG, F_CONDBR), | ||
1329 | -cond ("bnz", "tnz", CONDNZ, F_CONDBR|F_ALIAS), /* for ne */ | ||
1330 | -cond ("bpos", "tpos", CONDPOS, F_CONDBR), | ||
1331 | -cond ("bvc", "tvc", CONDVC, F_CONDBR), | ||
1332 | -cond ("bvs", "tvs", CONDVS, F_CONDBR), | ||
1333 | -cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ | 1310 | +cond ("ba", "t", CONDA, F_UNBR|F_ALIAS), |
1311 | + | ||
1312 | +cond ("bcc", "tcc", CONDCC, F_CONDBR), | ||
1313 | +cond ("bcs", "tcs", CONDCS, F_CONDBR), | ||
1314 | +cond ("be", "te", CONDE, F_CONDBR), | ||
1315 | +cond ("beq", "teq", CONDE, F_CONDBR|F_ALIAS), | ||
1316 | +cond ("bg", "tg", CONDG, F_CONDBR), | ||
1317 | +cond ("bgt", "tgt", CONDG, F_CONDBR|F_ALIAS), | ||
1318 | +cond ("bge", "tge", CONDGE, F_CONDBR), | ||
1319 | +cond ("bgeu", "tgeu", CONDGEU, F_CONDBR|F_ALIAS), /* for cc */ | ||
1320 | +cond ("bgu", "tgu", CONDGU, F_CONDBR), | ||
1321 | +cond ("bl", "tl", CONDL, F_CONDBR), | ||
1322 | +cond ("blt", "tlt", CONDL, F_CONDBR|F_ALIAS), | ||
1323 | +cond ("ble", "tle", CONDLE, F_CONDBR), | ||
1324 | +cond ("bleu", "tleu", CONDLEU, F_CONDBR), | ||
1325 | +cond ("blu", "tlu", CONDLU, F_CONDBR|F_ALIAS), /* for cs */ | ||
1326 | +cond ("bn", "tn", CONDN, F_CONDBR), | ||
1327 | +cond ("bne", "tne", CONDNE, F_CONDBR), | ||
1328 | +cond ("bneg", "tneg", CONDNEG, F_CONDBR), | ||
1329 | +cond ("bnz", "tnz", CONDNZ, F_CONDBR|F_ALIAS), /* for ne */ | ||
1330 | +cond ("bpos", "tpos", CONDPOS, F_CONDBR), | ||
1331 | +cond ("bvc", "tvc", CONDVC, F_CONDBR), | ||
1332 | +cond ("bvs", "tvs", CONDVS, F_CONDBR), | ||
1333 | +cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ | ||
1334 | 1334 | ||
1335 | #undef cond | 1335 | #undef cond |
1336 | #undef br | 1336 | #undef br |
@@ -1436,42 +1436,42 @@ cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ | @@ -1436,42 +1436,42 @@ cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ | ||
1436 | movfcc (opcode, fcond, flags), /* v9 */ \ | 1436 | movfcc (opcode, fcond, flags), /* v9 */ \ |
1437 | movicc (opcode, cond, flags) /* v9 */ | 1437 | movicc (opcode, cond, flags) /* v9 */ |
1438 | 1438 | ||
1439 | -/* v9 */ movcc ("mova", CONDA, FCONDA, 0), | ||
1440 | -/* v9 */ movicc ("movcc", CONDCC, 0), | ||
1441 | -/* v9 */ movicc ("movgeu", CONDGEU, F_ALIAS), | ||
1442 | -/* v9 */ movicc ("movcs", CONDCS, 0), | ||
1443 | -/* v9 */ movicc ("movlu", CONDLU, F_ALIAS), | ||
1444 | -/* v9 */ movcc ("move", CONDE, FCONDE, 0), | ||
1445 | -/* v9 */ movcc ("movg", CONDG, FCONDG, 0), | ||
1446 | -/* v9 */ movcc ("movge", CONDGE, FCONDGE, 0), | ||
1447 | -/* v9 */ movicc ("movgu", CONDGU, 0), | ||
1448 | -/* v9 */ movcc ("movl", CONDL, FCONDL, 0), | ||
1449 | -/* v9 */ movcc ("movle", CONDLE, FCONDLE, 0), | ||
1450 | -/* v9 */ movicc ("movleu", CONDLEU, 0), | ||
1451 | -/* v9 */ movfcc ("movlg", FCONDLG, 0), | ||
1452 | -/* v9 */ movcc ("movn", CONDN, FCONDN, 0), | ||
1453 | -/* v9 */ movcc ("movne", CONDNE, FCONDNE, 0), | ||
1454 | -/* v9 */ movicc ("movneg", CONDNEG, 0), | ||
1455 | -/* v9 */ movcc ("movnz", CONDNZ, FCONDNZ, F_ALIAS), | ||
1456 | -/* v9 */ movfcc ("movo", FCONDO, 0), | ||
1457 | -/* v9 */ movicc ("movpos", CONDPOS, 0), | ||
1458 | -/* v9 */ movfcc ("movu", FCONDU, 0), | ||
1459 | -/* v9 */ movfcc ("movue", FCONDUE, 0), | ||
1460 | -/* v9 */ movfcc ("movug", FCONDUG, 0), | ||
1461 | -/* v9 */ movfcc ("movuge", FCONDUGE, 0), | ||
1462 | -/* v9 */ movfcc ("movul", FCONDUL, 0), | ||
1463 | -/* v9 */ movfcc ("movule", FCONDULE, 0), | ||
1464 | -/* v9 */ movicc ("movvc", CONDVC, 0), | ||
1465 | -/* v9 */ movicc ("movvs", CONDVS, 0), | ||
1466 | -/* v9 */ movcc ("movz", CONDZ, FCONDZ, F_ALIAS), | 1439 | +/* v9 */ movcc ("mova", CONDA, FCONDA, 0), |
1440 | +/* v9 */ movicc ("movcc", CONDCC, 0), | ||
1441 | +/* v9 */ movicc ("movgeu", CONDGEU, F_ALIAS), | ||
1442 | +/* v9 */ movicc ("movcs", CONDCS, 0), | ||
1443 | +/* v9 */ movicc ("movlu", CONDLU, F_ALIAS), | ||
1444 | +/* v9 */ movcc ("move", CONDE, FCONDE, 0), | ||
1445 | +/* v9 */ movcc ("movg", CONDG, FCONDG, 0), | ||
1446 | +/* v9 */ movcc ("movge", CONDGE, FCONDGE, 0), | ||
1447 | +/* v9 */ movicc ("movgu", CONDGU, 0), | ||
1448 | +/* v9 */ movcc ("movl", CONDL, FCONDL, 0), | ||
1449 | +/* v9 */ movcc ("movle", CONDLE, FCONDLE, 0), | ||
1450 | +/* v9 */ movicc ("movleu", CONDLEU, 0), | ||
1451 | +/* v9 */ movfcc ("movlg", FCONDLG, 0), | ||
1452 | +/* v9 */ movcc ("movn", CONDN, FCONDN, 0), | ||
1453 | +/* v9 */ movcc ("movne", CONDNE, FCONDNE, 0), | ||
1454 | +/* v9 */ movicc ("movneg", CONDNEG, 0), | ||
1455 | +/* v9 */ movcc ("movnz", CONDNZ, FCONDNZ, F_ALIAS), | ||
1456 | +/* v9 */ movfcc ("movo", FCONDO, 0), | ||
1457 | +/* v9 */ movicc ("movpos", CONDPOS, 0), | ||
1458 | +/* v9 */ movfcc ("movu", FCONDU, 0), | ||
1459 | +/* v9 */ movfcc ("movue", FCONDUE, 0), | ||
1460 | +/* v9 */ movfcc ("movug", FCONDUG, 0), | ||
1461 | +/* v9 */ movfcc ("movuge", FCONDUGE, 0), | ||
1462 | +/* v9 */ movfcc ("movul", FCONDUL, 0), | ||
1463 | +/* v9 */ movfcc ("movule", FCONDULE, 0), | ||
1464 | +/* v9 */ movicc ("movvc", CONDVC, 0), | ||
1465 | +/* v9 */ movicc ("movvs", CONDVS, 0), | ||
1466 | +/* v9 */ movcc ("movz", CONDZ, FCONDZ, F_ALIAS), | ||
1467 | 1467 | ||
1468 | #undef movicc /* v9 */ | 1468 | #undef movicc /* v9 */ |
1469 | #undef movfcc /* v9 */ | 1469 | #undef movfcc /* v9 */ |
1470 | #undef movcc /* v9 */ | 1470 | #undef movcc /* v9 */ |
1471 | 1471 | ||
1472 | -#define FM_SF 1 /* v9 - values for fpsize */ | ||
1473 | -#define FM_DF 2 /* v9 */ | ||
1474 | -#define FM_QF 3 /* v9 */ | 1472 | +#define FM_SF 1 /* v9 - values for fpsize */ |
1473 | +#define FM_DF 2 /* v9 */ | ||
1474 | +#define FM_QF 3 /* v9 */ | ||
1475 | 1475 | ||
1476 | #define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \ | 1476 | #define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \ |
1477 | { opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags, v9 }, \ | 1477 | { opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags, v9 }, \ |
@@ -1492,90 +1492,90 @@ cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ | @@ -1492,90 +1492,90 @@ cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ | ||
1492 | { opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \ | 1492 | { opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \ |
1493 | { opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 } | 1493 | { opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 } |
1494 | 1494 | ||
1495 | -/* v9 */ fmovcc ("fmovda", FM_DF, CONDA, FCONDA, 0), | ||
1496 | -/* v9 */ fmovcc ("fmovqa", FM_QF, CONDA, FCONDA, 0), | ||
1497 | -/* v9 */ fmovcc ("fmovsa", FM_SF, CONDA, FCONDA, 0), | ||
1498 | -/* v9 */ fmovicc ("fmovdcc", FM_DF, CONDCC, 0), | ||
1499 | -/* v9 */ fmovicc ("fmovqcc", FM_QF, CONDCC, 0), | ||
1500 | -/* v9 */ fmovicc ("fmovscc", FM_SF, CONDCC, 0), | ||
1501 | -/* v9 */ fmovicc ("fmovdcs", FM_DF, CONDCS, 0), | ||
1502 | -/* v9 */ fmovicc ("fmovqcs", FM_QF, CONDCS, 0), | ||
1503 | -/* v9 */ fmovicc ("fmovscs", FM_SF, CONDCS, 0), | ||
1504 | -/* v9 */ fmovcc ("fmovde", FM_DF, CONDE, FCONDE, 0), | ||
1505 | -/* v9 */ fmovcc ("fmovqe", FM_QF, CONDE, FCONDE, 0), | ||
1506 | -/* v9 */ fmovcc ("fmovse", FM_SF, CONDE, FCONDE, 0), | ||
1507 | -/* v9 */ fmovcc ("fmovdg", FM_DF, CONDG, FCONDG, 0), | ||
1508 | -/* v9 */ fmovcc ("fmovqg", FM_QF, CONDG, FCONDG, 0), | ||
1509 | -/* v9 */ fmovcc ("fmovsg", FM_SF, CONDG, FCONDG, 0), | ||
1510 | -/* v9 */ fmovcc ("fmovdge", FM_DF, CONDGE, FCONDGE, 0), | ||
1511 | -/* v9 */ fmovcc ("fmovqge", FM_QF, CONDGE, FCONDGE, 0), | ||
1512 | -/* v9 */ fmovcc ("fmovsge", FM_SF, CONDGE, FCONDGE, 0), | ||
1513 | -/* v9 */ fmovicc ("fmovdgeu", FM_DF, CONDGEU, F_ALIAS), | ||
1514 | -/* v9 */ fmovicc ("fmovqgeu", FM_QF, CONDGEU, F_ALIAS), | ||
1515 | -/* v9 */ fmovicc ("fmovsgeu", FM_SF, CONDGEU, F_ALIAS), | ||
1516 | -/* v9 */ fmovicc ("fmovdgu", FM_DF, CONDGU, 0), | ||
1517 | -/* v9 */ fmovicc ("fmovqgu", FM_QF, CONDGU, 0), | ||
1518 | -/* v9 */ fmovicc ("fmovsgu", FM_SF, CONDGU, 0), | ||
1519 | -/* v9 */ fmovcc ("fmovdl", FM_DF, CONDL, FCONDL, 0), | ||
1520 | -/* v9 */ fmovcc ("fmovql", FM_QF, CONDL, FCONDL, 0), | ||
1521 | -/* v9 */ fmovcc ("fmovsl", FM_SF, CONDL, FCONDL, 0), | ||
1522 | -/* v9 */ fmovcc ("fmovdle", FM_DF, CONDLE, FCONDLE, 0), | ||
1523 | -/* v9 */ fmovcc ("fmovqle", FM_QF, CONDLE, FCONDLE, 0), | ||
1524 | -/* v9 */ fmovcc ("fmovsle", FM_SF, CONDLE, FCONDLE, 0), | ||
1525 | -/* v9 */ fmovicc ("fmovdleu", FM_DF, CONDLEU, 0), | ||
1526 | -/* v9 */ fmovicc ("fmovqleu", FM_QF, CONDLEU, 0), | ||
1527 | -/* v9 */ fmovicc ("fmovsleu", FM_SF, CONDLEU, 0), | ||
1528 | -/* v9 */ fmovfcc ("fmovdlg", FM_DF, FCONDLG, 0), | ||
1529 | -/* v9 */ fmovfcc ("fmovqlg", FM_QF, FCONDLG, 0), | ||
1530 | -/* v9 */ fmovfcc ("fmovslg", FM_SF, FCONDLG, 0), | ||
1531 | -/* v9 */ fmovicc ("fmovdlu", FM_DF, CONDLU, F_ALIAS), | ||
1532 | -/* v9 */ fmovicc ("fmovqlu", FM_QF, CONDLU, F_ALIAS), | ||
1533 | -/* v9 */ fmovicc ("fmovslu", FM_SF, CONDLU, F_ALIAS), | ||
1534 | -/* v9 */ fmovcc ("fmovdn", FM_DF, CONDN, FCONDN, 0), | ||
1535 | -/* v9 */ fmovcc ("fmovqn", FM_QF, CONDN, FCONDN, 0), | ||
1536 | -/* v9 */ fmovcc ("fmovsn", FM_SF, CONDN, FCONDN, 0), | ||
1537 | -/* v9 */ fmovcc ("fmovdne", FM_DF, CONDNE, FCONDNE, 0), | ||
1538 | -/* v9 */ fmovcc ("fmovqne", FM_QF, CONDNE, FCONDNE, 0), | ||
1539 | -/* v9 */ fmovcc ("fmovsne", FM_SF, CONDNE, FCONDNE, 0), | ||
1540 | -/* v9 */ fmovicc ("fmovdneg", FM_DF, CONDNEG, 0), | ||
1541 | -/* v9 */ fmovicc ("fmovqneg", FM_QF, CONDNEG, 0), | ||
1542 | -/* v9 */ fmovicc ("fmovsneg", FM_SF, CONDNEG, 0), | ||
1543 | -/* v9 */ fmovcc ("fmovdnz", FM_DF, CONDNZ, FCONDNZ, F_ALIAS), | ||
1544 | -/* v9 */ fmovcc ("fmovqnz", FM_QF, CONDNZ, FCONDNZ, F_ALIAS), | ||
1545 | -/* v9 */ fmovcc ("fmovsnz", FM_SF, CONDNZ, FCONDNZ, F_ALIAS), | ||
1546 | -/* v9 */ fmovfcc ("fmovdo", FM_DF, FCONDO, 0), | ||
1547 | -/* v9 */ fmovfcc ("fmovqo", FM_QF, FCONDO, 0), | ||
1548 | -/* v9 */ fmovfcc ("fmovso", FM_SF, FCONDO, 0), | ||
1549 | -/* v9 */ fmovicc ("fmovdpos", FM_DF, CONDPOS, 0), | ||
1550 | -/* v9 */ fmovicc ("fmovqpos", FM_QF, CONDPOS, 0), | ||
1551 | -/* v9 */ fmovicc ("fmovspos", FM_SF, CONDPOS, 0), | ||
1552 | -/* v9 */ fmovfcc ("fmovdu", FM_DF, FCONDU, 0), | ||
1553 | -/* v9 */ fmovfcc ("fmovqu", FM_QF, FCONDU, 0), | ||
1554 | -/* v9 */ fmovfcc ("fmovsu", FM_SF, FCONDU, 0), | ||
1555 | -/* v9 */ fmovfcc ("fmovdue", FM_DF, FCONDUE, 0), | ||
1556 | -/* v9 */ fmovfcc ("fmovque", FM_QF, FCONDUE, 0), | ||
1557 | -/* v9 */ fmovfcc ("fmovsue", FM_SF, FCONDUE, 0), | ||
1558 | -/* v9 */ fmovfcc ("fmovdug", FM_DF, FCONDUG, 0), | ||
1559 | -/* v9 */ fmovfcc ("fmovqug", FM_QF, FCONDUG, 0), | ||
1560 | -/* v9 */ fmovfcc ("fmovsug", FM_SF, FCONDUG, 0), | ||
1561 | -/* v9 */ fmovfcc ("fmovduge", FM_DF, FCONDUGE, 0), | ||
1562 | -/* v9 */ fmovfcc ("fmovquge", FM_QF, FCONDUGE, 0), | ||
1563 | -/* v9 */ fmovfcc ("fmovsuge", FM_SF, FCONDUGE, 0), | ||
1564 | -/* v9 */ fmovfcc ("fmovdul", FM_DF, FCONDUL, 0), | ||
1565 | -/* v9 */ fmovfcc ("fmovqul", FM_QF, FCONDUL, 0), | ||
1566 | -/* v9 */ fmovfcc ("fmovsul", FM_SF, FCONDUL, 0), | ||
1567 | -/* v9 */ fmovfcc ("fmovdule", FM_DF, FCONDULE, 0), | ||
1568 | -/* v9 */ fmovfcc ("fmovqule", FM_QF, FCONDULE, 0), | ||
1569 | -/* v9 */ fmovfcc ("fmovsule", FM_SF, FCONDULE, 0), | ||
1570 | -/* v9 */ fmovicc ("fmovdvc", FM_DF, CONDVC, 0), | ||
1571 | -/* v9 */ fmovicc ("fmovqvc", FM_QF, CONDVC, 0), | ||
1572 | -/* v9 */ fmovicc ("fmovsvc", FM_SF, CONDVC, 0), | ||
1573 | -/* v9 */ fmovicc ("fmovdvs", FM_DF, CONDVS, 0), | ||
1574 | -/* v9 */ fmovicc ("fmovqvs", FM_QF, CONDVS, 0), | ||
1575 | -/* v9 */ fmovicc ("fmovsvs", FM_SF, CONDVS, 0), | ||
1576 | -/* v9 */ fmovcc ("fmovdz", FM_DF, CONDZ, FCONDZ, F_ALIAS), | ||
1577 | -/* v9 */ fmovcc ("fmovqz", FM_QF, CONDZ, FCONDZ, F_ALIAS), | ||
1578 | -/* v9 */ fmovcc ("fmovsz", FM_SF, CONDZ, FCONDZ, F_ALIAS), | 1495 | +/* v9 */ fmovcc ("fmovda", FM_DF, CONDA, FCONDA, 0), |
1496 | +/* v9 */ fmovcc ("fmovqa", FM_QF, CONDA, FCONDA, 0), | ||
1497 | +/* v9 */ fmovcc ("fmovsa", FM_SF, CONDA, FCONDA, 0), | ||
1498 | +/* v9 */ fmovicc ("fmovdcc", FM_DF, CONDCC, 0), | ||
1499 | +/* v9 */ fmovicc ("fmovqcc", FM_QF, CONDCC, 0), | ||
1500 | +/* v9 */ fmovicc ("fmovscc", FM_SF, CONDCC, 0), | ||
1501 | +/* v9 */ fmovicc ("fmovdcs", FM_DF, CONDCS, 0), | ||
1502 | +/* v9 */ fmovicc ("fmovqcs", FM_QF, CONDCS, 0), | ||
1503 | +/* v9 */ fmovicc ("fmovscs", FM_SF, CONDCS, 0), | ||
1504 | +/* v9 */ fmovcc ("fmovde", FM_DF, CONDE, FCONDE, 0), | ||
1505 | +/* v9 */ fmovcc ("fmovqe", FM_QF, CONDE, FCONDE, 0), | ||
1506 | +/* v9 */ fmovcc ("fmovse", FM_SF, CONDE, FCONDE, 0), | ||
1507 | +/* v9 */ fmovcc ("fmovdg", FM_DF, CONDG, FCONDG, 0), | ||
1508 | +/* v9 */ fmovcc ("fmovqg", FM_QF, CONDG, FCONDG, 0), | ||
1509 | +/* v9 */ fmovcc ("fmovsg", FM_SF, CONDG, FCONDG, 0), | ||
1510 | +/* v9 */ fmovcc ("fmovdge", FM_DF, CONDGE, FCONDGE, 0), | ||
1511 | +/* v9 */ fmovcc ("fmovqge", FM_QF, CONDGE, FCONDGE, 0), | ||
1512 | +/* v9 */ fmovcc ("fmovsge", FM_SF, CONDGE, FCONDGE, 0), | ||
1513 | +/* v9 */ fmovicc ("fmovdgeu", FM_DF, CONDGEU, F_ALIAS), | ||
1514 | +/* v9 */ fmovicc ("fmovqgeu", FM_QF, CONDGEU, F_ALIAS), | ||
1515 | +/* v9 */ fmovicc ("fmovsgeu", FM_SF, CONDGEU, F_ALIAS), | ||
1516 | +/* v9 */ fmovicc ("fmovdgu", FM_DF, CONDGU, 0), | ||
1517 | +/* v9 */ fmovicc ("fmovqgu", FM_QF, CONDGU, 0), | ||
1518 | +/* v9 */ fmovicc ("fmovsgu", FM_SF, CONDGU, 0), | ||
1519 | +/* v9 */ fmovcc ("fmovdl", FM_DF, CONDL, FCONDL, 0), | ||
1520 | +/* v9 */ fmovcc ("fmovql", FM_QF, CONDL, FCONDL, 0), | ||
1521 | +/* v9 */ fmovcc ("fmovsl", FM_SF, CONDL, FCONDL, 0), | ||
1522 | +/* v9 */ fmovcc ("fmovdle", FM_DF, CONDLE, FCONDLE, 0), | ||
1523 | +/* v9 */ fmovcc ("fmovqle", FM_QF, CONDLE, FCONDLE, 0), | ||
1524 | +/* v9 */ fmovcc ("fmovsle", FM_SF, CONDLE, FCONDLE, 0), | ||
1525 | +/* v9 */ fmovicc ("fmovdleu", FM_DF, CONDLEU, 0), | ||
1526 | +/* v9 */ fmovicc ("fmovqleu", FM_QF, CONDLEU, 0), | ||
1527 | +/* v9 */ fmovicc ("fmovsleu", FM_SF, CONDLEU, 0), | ||
1528 | +/* v9 */ fmovfcc ("fmovdlg", FM_DF, FCONDLG, 0), | ||
1529 | +/* v9 */ fmovfcc ("fmovqlg", FM_QF, FCONDLG, 0), | ||
1530 | +/* v9 */ fmovfcc ("fmovslg", FM_SF, FCONDLG, 0), | ||
1531 | +/* v9 */ fmovicc ("fmovdlu", FM_DF, CONDLU, F_ALIAS), | ||
1532 | +/* v9 */ fmovicc ("fmovqlu", FM_QF, CONDLU, F_ALIAS), | ||
1533 | +/* v9 */ fmovicc ("fmovslu", FM_SF, CONDLU, F_ALIAS), | ||
1534 | +/* v9 */ fmovcc ("fmovdn", FM_DF, CONDN, FCONDN, 0), | ||
1535 | +/* v9 */ fmovcc ("fmovqn", FM_QF, CONDN, FCONDN, 0), | ||
1536 | +/* v9 */ fmovcc ("fmovsn", FM_SF, CONDN, FCONDN, 0), | ||
1537 | +/* v9 */ fmovcc ("fmovdne", FM_DF, CONDNE, FCONDNE, 0), | ||
1538 | +/* v9 */ fmovcc ("fmovqne", FM_QF, CONDNE, FCONDNE, 0), | ||
1539 | +/* v9 */ fmovcc ("fmovsne", FM_SF, CONDNE, FCONDNE, 0), | ||
1540 | +/* v9 */ fmovicc ("fmovdneg", FM_DF, CONDNEG, 0), | ||
1541 | +/* v9 */ fmovicc ("fmovqneg", FM_QF, CONDNEG, 0), | ||
1542 | +/* v9 */ fmovicc ("fmovsneg", FM_SF, CONDNEG, 0), | ||
1543 | +/* v9 */ fmovcc ("fmovdnz", FM_DF, CONDNZ, FCONDNZ, F_ALIAS), | ||
1544 | +/* v9 */ fmovcc ("fmovqnz", FM_QF, CONDNZ, FCONDNZ, F_ALIAS), | ||
1545 | +/* v9 */ fmovcc ("fmovsnz", FM_SF, CONDNZ, FCONDNZ, F_ALIAS), | ||
1546 | +/* v9 */ fmovfcc ("fmovdo", FM_DF, FCONDO, 0), | ||
1547 | +/* v9 */ fmovfcc ("fmovqo", FM_QF, FCONDO, 0), | ||
1548 | +/* v9 */ fmovfcc ("fmovso", FM_SF, FCONDO, 0), | ||
1549 | +/* v9 */ fmovicc ("fmovdpos", FM_DF, CONDPOS, 0), | ||
1550 | +/* v9 */ fmovicc ("fmovqpos", FM_QF, CONDPOS, 0), | ||
1551 | +/* v9 */ fmovicc ("fmovspos", FM_SF, CONDPOS, 0), | ||
1552 | +/* v9 */ fmovfcc ("fmovdu", FM_DF, FCONDU, 0), | ||
1553 | +/* v9 */ fmovfcc ("fmovqu", FM_QF, FCONDU, 0), | ||
1554 | +/* v9 */ fmovfcc ("fmovsu", FM_SF, FCONDU, 0), | ||
1555 | +/* v9 */ fmovfcc ("fmovdue", FM_DF, FCONDUE, 0), | ||
1556 | +/* v9 */ fmovfcc ("fmovque", FM_QF, FCONDUE, 0), | ||
1557 | +/* v9 */ fmovfcc ("fmovsue", FM_SF, FCONDUE, 0), | ||
1558 | +/* v9 */ fmovfcc ("fmovdug", FM_DF, FCONDUG, 0), | ||
1559 | +/* v9 */ fmovfcc ("fmovqug", FM_QF, FCONDUG, 0), | ||
1560 | +/* v9 */ fmovfcc ("fmovsug", FM_SF, FCONDUG, 0), | ||
1561 | +/* v9 */ fmovfcc ("fmovduge", FM_DF, FCONDUGE, 0), | ||
1562 | +/* v9 */ fmovfcc ("fmovquge", FM_QF, FCONDUGE, 0), | ||
1563 | +/* v9 */ fmovfcc ("fmovsuge", FM_SF, FCONDUGE, 0), | ||
1564 | +/* v9 */ fmovfcc ("fmovdul", FM_DF, FCONDUL, 0), | ||
1565 | +/* v9 */ fmovfcc ("fmovqul", FM_QF, FCONDUL, 0), | ||
1566 | +/* v9 */ fmovfcc ("fmovsul", FM_SF, FCONDUL, 0), | ||
1567 | +/* v9 */ fmovfcc ("fmovdule", FM_DF, FCONDULE, 0), | ||
1568 | +/* v9 */ fmovfcc ("fmovqule", FM_QF, FCONDULE, 0), | ||
1569 | +/* v9 */ fmovfcc ("fmovsule", FM_SF, FCONDULE, 0), | ||
1570 | +/* v9 */ fmovicc ("fmovdvc", FM_DF, CONDVC, 0), | ||
1571 | +/* v9 */ fmovicc ("fmovqvc", FM_QF, CONDVC, 0), | ||
1572 | +/* v9 */ fmovicc ("fmovsvc", FM_SF, CONDVC, 0), | ||
1573 | +/* v9 */ fmovicc ("fmovdvs", FM_DF, CONDVS, 0), | ||
1574 | +/* v9 */ fmovicc ("fmovqvs", FM_QF, CONDVS, 0), | ||
1575 | +/* v9 */ fmovicc ("fmovsvs", FM_SF, CONDVS, 0), | ||
1576 | +/* v9 */ fmovcc ("fmovdz", FM_DF, CONDZ, FCONDZ, F_ALIAS), | ||
1577 | +/* v9 */ fmovcc ("fmovqz", FM_QF, CONDZ, FCONDZ, F_ALIAS), | ||
1578 | +/* v9 */ fmovcc ("fmovsz", FM_SF, CONDZ, FCONDZ, F_ALIAS), | ||
1579 | 1579 | ||
1580 | #undef fmovicc /* v9 */ | 1580 | #undef fmovicc /* v9 */ |
1581 | #undef fmovfcc /* v9 */ | 1581 | #undef fmovfcc /* v9 */ |
@@ -1641,19 +1641,19 @@ cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ | @@ -1641,19 +1641,19 @@ cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ | ||
1641 | FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags) | 1641 | FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags) |
1642 | 1642 | ||
1643 | CONDFC ("fb", "cb", 0x8, F_UNBR), | 1643 | CONDFC ("fb", "cb", 0x8, F_UNBR), |
1644 | -CONDFCL ("fba", "cba", 0x8, F_UNBR|F_ALIAS), | ||
1645 | -CONDFC ("fbe", "cb0", 0x9, F_CONDBR), | 1644 | +CONDFCL ("fba", "cba", 0x8, F_UNBR|F_ALIAS), |
1645 | +CONDFC ("fbe", "cb0", 0x9, F_CONDBR), | ||
1646 | CONDF ("fbz", 0x9, F_CONDBR|F_ALIAS), | 1646 | CONDF ("fbz", 0x9, F_CONDBR|F_ALIAS), |
1647 | -CONDFC ("fbg", "cb2", 0x6, F_CONDBR), | 1647 | +CONDFC ("fbg", "cb2", 0x6, F_CONDBR), |
1648 | CONDFC ("fbge", "cb02", 0xb, F_CONDBR), | 1648 | CONDFC ("fbge", "cb02", 0xb, F_CONDBR), |
1649 | -CONDFC ("fbl", "cb1", 0x4, F_CONDBR), | 1649 | +CONDFC ("fbl", "cb1", 0x4, F_CONDBR), |
1650 | CONDFC ("fble", "cb01", 0xd, F_CONDBR), | 1650 | CONDFC ("fble", "cb01", 0xd, F_CONDBR), |
1651 | CONDFC ("fblg", "cb12", 0x2, F_CONDBR), | 1651 | CONDFC ("fblg", "cb12", 0x2, F_CONDBR), |
1652 | -CONDFCL ("fbn", "cbn", 0x0, F_UNBR), | 1652 | +CONDFCL ("fbn", "cbn", 0x0, F_UNBR), |
1653 | CONDFC ("fbne", "cb123", 0x1, F_CONDBR), | 1653 | CONDFC ("fbne", "cb123", 0x1, F_CONDBR), |
1654 | CONDF ("fbnz", 0x1, F_CONDBR|F_ALIAS), | 1654 | CONDF ("fbnz", 0x1, F_CONDBR|F_ALIAS), |
1655 | -CONDFC ("fbo", "cb012", 0xf, F_CONDBR), | ||
1656 | -CONDFC ("fbu", "cb3", 0x7, F_CONDBR), | 1655 | +CONDFC ("fbo", "cb012", 0xf, F_CONDBR), |
1656 | +CONDFC ("fbu", "cb3", 0x7, F_CONDBR), | ||
1657 | CONDFC ("fbue", "cb03", 0xa, F_CONDBR), | 1657 | CONDFC ("fbue", "cb03", 0xa, F_CONDBR), |
1658 | CONDFC ("fbug", "cb23", 0x5, F_CONDBR), | 1658 | CONDFC ("fbug", "cb23", 0x5, F_CONDBR), |
1659 | CONDFC ("fbuge", "cb023", 0xc, F_CONDBR), | 1659 | CONDFC ("fbuge", "cb023", 0xc, F_CONDBR), |
@@ -1665,167 +1665,167 @@ CONDFC ("fbule", "cb013", 0xe, F_CONDBR), | @@ -1665,167 +1665,167 @@ CONDFC ("fbule", "cb013", 0xe, F_CONDBR), | ||
1665 | #undef CONDF | 1665 | #undef CONDF |
1666 | #undef CBR | 1666 | #undef CBR |
1667 | #undef FBR | 1667 | #undef FBR |
1668 | -#undef FBRX /* v9 */ | 1668 | +#undef FBRX /* v9 */ |
1669 | 1669 | ||
1670 | -{ "jmp", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|RD_G0|ASI(~0), "1+2", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+rs2,%g0 */ | ||
1671 | -{ "jmp", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|RD_G0|ASI_RS2(~0), "1", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+%g0,%g0 */ | ||
1672 | -{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0, "1+i", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+i,%g0 */ | ||
1673 | -{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0, "i+1", F_UNBR|F_DELAYED, v6 }, /* jmpl i+rs1,%g0 */ | ||
1674 | -{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* jmpl %g0+i,%g0 */ | ||
1675 | -{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0|SIMM13(~0), "1", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+0,%g0 */ | 1670 | +{ "jmp", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|RD_G0|ASI(~0), "1+2", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+rs2,%g0 */ |
1671 | +{ "jmp", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|RD_G0|ASI_RS2(~0), "1", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+%g0,%g0 */ | ||
1672 | +{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0, "1+i", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+i,%g0 */ | ||
1673 | +{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0, "i+1", F_UNBR|F_DELAYED, v6 }, /* jmpl i+rs1,%g0 */ | ||
1674 | +{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* jmpl %g0+i,%g0 */ | ||
1675 | +{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0|SIMM13(~0), "1", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+0,%g0 */ | ||
1676 | 1676 | ||
1677 | -{ "nop", F2(0, 4), 0xfeffffff, "", 0, v6 }, /* sethi 0, %g0 */ | 1677 | +{ "nop", F2(0, 4), 0xfeffffff, "", 0, v6 }, /* sethi 0, %g0 */ |
1678 | 1678 | ||
1679 | -{ "set", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v6 }, | ||
1680 | -{ "setuw", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v9 }, | ||
1681 | -{ "setsw", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v9 }, | ||
1682 | -{ "setx", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,1,d", F_ALIAS, v9 }, | 1679 | +{ "set", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v6 }, |
1680 | +{ "setuw", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v9 }, | ||
1681 | +{ "setsw", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v9 }, | ||
1682 | +{ "setx", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,1,d", F_ALIAS, v9 }, | ||
1683 | 1683 | ||
1684 | -{ "sethi", F2(0x0, 0x4), F2(~0x0, ~0x4), "h,d", 0, v6 }, | 1684 | +{ "sethi", F2(0x0, 0x4), F2(~0x0, ~0x4), "h,d", 0, v6 }, |
1685 | 1685 | ||
1686 | -{ "taddcc", F3(2, 0x20, 0), F3(~2, ~0x20, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1687 | -{ "taddcc", F3(2, 0x20, 1), F3(~2, ~0x20, ~1), "1,i,d", 0, v6 }, | ||
1688 | -{ "taddcc", F3(2, 0x20, 1), F3(~2, ~0x20, ~1), "i,1,d", 0, v6 }, | ||
1689 | -{ "taddcctv", F3(2, 0x22, 0), F3(~2, ~0x22, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1690 | -{ "taddcctv", F3(2, 0x22, 1), F3(~2, ~0x22, ~1), "1,i,d", 0, v6 }, | ||
1691 | -{ "taddcctv", F3(2, 0x22, 1), F3(~2, ~0x22, ~1), "i,1,d", 0, v6 }, | 1686 | +{ "taddcc", F3(2, 0x20, 0), F3(~2, ~0x20, ~0)|ASI(~0), "1,2,d", 0, v6 }, |
1687 | +{ "taddcc", F3(2, 0x20, 1), F3(~2, ~0x20, ~1), "1,i,d", 0, v6 }, | ||
1688 | +{ "taddcc", F3(2, 0x20, 1), F3(~2, ~0x20, ~1), "i,1,d", 0, v6 }, | ||
1689 | +{ "taddcctv", F3(2, 0x22, 0), F3(~2, ~0x22, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1690 | +{ "taddcctv", F3(2, 0x22, 1), F3(~2, ~0x22, ~1), "1,i,d", 0, v6 }, | ||
1691 | +{ "taddcctv", F3(2, 0x22, 1), F3(~2, ~0x22, ~1), "i,1,d", 0, v6 }, | ||
1692 | 1692 | ||
1693 | -{ "tsubcc", F3(2, 0x21, 0), F3(~2, ~0x21, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1694 | -{ "tsubcc", F3(2, 0x21, 1), F3(~2, ~0x21, ~1), "1,i,d", 0, v6 }, | ||
1695 | -{ "tsubcctv", F3(2, 0x23, 0), F3(~2, ~0x23, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1696 | -{ "tsubcctv", F3(2, 0x23, 1), F3(~2, ~0x23, ~1), "1,i,d", 0, v6 }, | 1693 | +{ "tsubcc", F3(2, 0x21, 0), F3(~2, ~0x21, ~0)|ASI(~0), "1,2,d", 0, v6 }, |
1694 | +{ "tsubcc", F3(2, 0x21, 1), F3(~2, ~0x21, ~1), "1,i,d", 0, v6 }, | ||
1695 | +{ "tsubcctv", F3(2, 0x23, 0), F3(~2, ~0x23, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1696 | +{ "tsubcctv", F3(2, 0x23, 1), F3(~2, ~0x23, ~1), "1,i,d", 0, v6 }, | ||
1697 | 1697 | ||
1698 | -{ "unimp", F2(0x0, 0x0), 0xffc00000, "n", 0, v6notv9 }, | ||
1699 | -{ "illtrap", F2(0, 0), F2(~0, ~0)|RD_G0, "n", 0, v9 }, | 1698 | +{ "unimp", F2(0x0, 0x0), 0xffc00000, "n", 0, v6notv9 }, |
1699 | +{ "illtrap", F2(0, 0), F2(~0, ~0)|RD_G0, "n", 0, v9 }, | ||
1700 | 1700 | ||
1701 | /* This *is* a commutative instruction. */ | 1701 | /* This *is* a commutative instruction. */ |
1702 | -{ "xnor", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1703 | -{ "xnor", F3(2, 0x07, 1), F3(~2, ~0x07, ~1), "1,i,d", 0, v6 }, | ||
1704 | -{ "xnor", F3(2, 0x07, 1), F3(~2, ~0x07, ~1), "i,1,d", 0, v6 }, | 1702 | +{ "xnor", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "1,2,d", 0, v6 }, |
1703 | +{ "xnor", F3(2, 0x07, 1), F3(~2, ~0x07, ~1), "1,i,d", 0, v6 }, | ||
1704 | +{ "xnor", F3(2, 0x07, 1), F3(~2, ~0x07, ~1), "i,1,d", 0, v6 }, | ||
1705 | /* This *is* a commutative instruction. */ | 1705 | /* This *is* a commutative instruction. */ |
1706 | -{ "xnorcc", F3(2, 0x17, 0), F3(~2, ~0x17, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1707 | -{ "xnorcc", F3(2, 0x17, 1), F3(~2, ~0x17, ~1), "1,i,d", 0, v6 }, | ||
1708 | -{ "xnorcc", F3(2, 0x17, 1), F3(~2, ~0x17, ~1), "i,1,d", 0, v6 }, | ||
1709 | -{ "xor", F3(2, 0x03, 0), F3(~2, ~0x03, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1710 | -{ "xor", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "1,i,d", 0, v6 }, | ||
1711 | -{ "xor", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "i,1,d", 0, v6 }, | ||
1712 | -{ "xorcc", F3(2, 0x13, 0), F3(~2, ~0x13, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1713 | -{ "xorcc", F3(2, 0x13, 1), F3(~2, ~0x13, ~1), "1,i,d", 0, v6 }, | ||
1714 | -{ "xorcc", F3(2, 0x13, 1), F3(~2, ~0x13, ~1), "i,1,d", 0, v6 }, | ||
1715 | - | ||
1716 | -{ "not", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "1,d", F_ALIAS, v6 }, /* xnor rs1,%0,rd */ | ||
1717 | -{ "not", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "r", F_ALIAS, v6 }, /* xnor rd,%0,rd */ | ||
1718 | - | ||
1719 | -{ "btog", F3(2, 0x03, 0), F3(~2, ~0x03, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* xor rd,rs2,rd */ | ||
1720 | -{ "btog", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "i,r", F_ALIAS, v6 }, /* xor rd,i,rd */ | 1706 | +{ "xnorcc", F3(2, 0x17, 0), F3(~2, ~0x17, ~0)|ASI(~0), "1,2,d", 0, v6 }, |
1707 | +{ "xnorcc", F3(2, 0x17, 1), F3(~2, ~0x17, ~1), "1,i,d", 0, v6 }, | ||
1708 | +{ "xnorcc", F3(2, 0x17, 1), F3(~2, ~0x17, ~1), "i,1,d", 0, v6 }, | ||
1709 | +{ "xor", F3(2, 0x03, 0), F3(~2, ~0x03, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1710 | +{ "xor", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "1,i,d", 0, v6 }, | ||
1711 | +{ "xor", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "i,1,d", 0, v6 }, | ||
1712 | +{ "xorcc", F3(2, 0x13, 0), F3(~2, ~0x13, ~0)|ASI(~0), "1,2,d", 0, v6 }, | ||
1713 | +{ "xorcc", F3(2, 0x13, 1), F3(~2, ~0x13, ~1), "1,i,d", 0, v6 }, | ||
1714 | +{ "xorcc", F3(2, 0x13, 1), F3(~2, ~0x13, ~1), "i,1,d", 0, v6 }, | ||
1715 | + | ||
1716 | +{ "not", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "1,d", F_ALIAS, v6 }, /* xnor rs1,%0,rd */ | ||
1717 | +{ "not", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "r", F_ALIAS, v6 }, /* xnor rd,%0,rd */ | ||
1718 | + | ||
1719 | +{ "btog", F3(2, 0x03, 0), F3(~2, ~0x03, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* xor rd,rs2,rd */ | ||
1720 | +{ "btog", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "i,r", F_ALIAS, v6 }, /* xor rd,i,rd */ | ||
1721 | 1721 | ||
1722 | /* FPop1 and FPop2 are not instructions. Don't accept them. */ | 1722 | /* FPop1 and FPop2 are not instructions. Don't accept them. */ |
1723 | 1723 | ||
1724 | -{ "fdtoi", F3F(2, 0x34, 0x0d2), F3F(~2, ~0x34, ~0x0d2)|RS1_G0, "B,g", F_FLOAT, v6 }, | ||
1725 | -{ "fstoi", F3F(2, 0x34, 0x0d1), F3F(~2, ~0x34, ~0x0d1)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1726 | -{ "fqtoi", F3F(2, 0x34, 0x0d3), F3F(~2, ~0x34, ~0x0d3)|RS1_G0, "R,g", F_FLOAT, v8 }, | ||
1727 | - | ||
1728 | -{ "fdtox", F3F(2, 0x34, 0x082), F3F(~2, ~0x34, ~0x082)|RS1_G0, "B,g", F_FLOAT, v9 }, | ||
1729 | -{ "fstox", F3F(2, 0x34, 0x081), F3F(~2, ~0x34, ~0x081)|RS1_G0, "f,g", F_FLOAT, v9 }, | ||
1730 | -{ "fqtox", F3F(2, 0x34, 0x083), F3F(~2, ~0x34, ~0x083)|RS1_G0, "R,g", F_FLOAT, v9 }, | ||
1731 | - | ||
1732 | -{ "fitod", F3F(2, 0x34, 0x0c8), F3F(~2, ~0x34, ~0x0c8)|RS1_G0, "f,H", F_FLOAT, v6 }, | ||
1733 | -{ "fitos", F3F(2, 0x34, 0x0c4), F3F(~2, ~0x34, ~0x0c4)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1734 | -{ "fitoq", F3F(2, 0x34, 0x0cc), F3F(~2, ~0x34, ~0x0cc)|RS1_G0, "f,J", F_FLOAT, v8 }, | ||
1735 | - | ||
1736 | -{ "fxtod", F3F(2, 0x34, 0x088), F3F(~2, ~0x34, ~0x088)|RS1_G0, "f,H", F_FLOAT, v9 }, | ||
1737 | -{ "fxtos", F3F(2, 0x34, 0x084), F3F(~2, ~0x34, ~0x084)|RS1_G0, "f,g", F_FLOAT, v9 }, | ||
1738 | -{ "fxtoq", F3F(2, 0x34, 0x08c), F3F(~2, ~0x34, ~0x08c)|RS1_G0, "f,J", F_FLOAT, v9 }, | ||
1739 | - | ||
1740 | -{ "fdtoq", F3F(2, 0x34, 0x0ce), F3F(~2, ~0x34, ~0x0ce)|RS1_G0, "B,J", F_FLOAT, v8 }, | ||
1741 | -{ "fdtos", F3F(2, 0x34, 0x0c6), F3F(~2, ~0x34, ~0x0c6)|RS1_G0, "B,g", F_FLOAT, v6 }, | ||
1742 | -{ "fqtod", F3F(2, 0x34, 0x0cb), F3F(~2, ~0x34, ~0x0cb)|RS1_G0, "R,H", F_FLOAT, v8 }, | ||
1743 | -{ "fqtos", F3F(2, 0x34, 0x0c7), F3F(~2, ~0x34, ~0x0c7)|RS1_G0, "R,g", F_FLOAT, v8 }, | ||
1744 | -{ "fstod", F3F(2, 0x34, 0x0c9), F3F(~2, ~0x34, ~0x0c9)|RS1_G0, "f,H", F_FLOAT, v6 }, | ||
1745 | -{ "fstoq", F3F(2, 0x34, 0x0cd), F3F(~2, ~0x34, ~0x0cd)|RS1_G0, "f,J", F_FLOAT, v8 }, | ||
1746 | - | ||
1747 | -{ "fdivd", F3F(2, 0x34, 0x04e), F3F(~2, ~0x34, ~0x04e), "v,B,H", F_FLOAT, v6 }, | ||
1748 | -{ "fdivq", F3F(2, 0x34, 0x04f), F3F(~2, ~0x34, ~0x04f), "V,R,J", F_FLOAT, v8 }, | ||
1749 | -{ "fdivx", F3F(2, 0x34, 0x04f), F3F(~2, ~0x34, ~0x04f), "V,R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1750 | -{ "fdivs", F3F(2, 0x34, 0x04d), F3F(~2, ~0x34, ~0x04d), "e,f,g", F_FLOAT, v6 }, | ||
1751 | -{ "fmuld", F3F(2, 0x34, 0x04a), F3F(~2, ~0x34, ~0x04a), "v,B,H", F_FLOAT, v6 }, | ||
1752 | -{ "fmulq", F3F(2, 0x34, 0x04b), F3F(~2, ~0x34, ~0x04b), "V,R,J", F_FLOAT, v8 }, | ||
1753 | -{ "fmulx", F3F(2, 0x34, 0x04b), F3F(~2, ~0x34, ~0x04b), "V,R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1754 | -{ "fmuls", F3F(2, 0x34, 0x049), F3F(~2, ~0x34, ~0x049), "e,f,g", F_FLOAT, v6 }, | ||
1755 | - | ||
1756 | -{ "fdmulq", F3F(2, 0x34, 0x06e), F3F(~2, ~0x34, ~0x06e), "v,B,J", F_FLOAT, v8 }, | ||
1757 | -{ "fdmulx", F3F(2, 0x34, 0x06e), F3F(~2, ~0x34, ~0x06e), "v,B,J", F_FLOAT|F_ALIAS, v8 }, | ||
1758 | -{ "fsmuld", F3F(2, 0x34, 0x069), F3F(~2, ~0x34, ~0x069), "e,f,H", F_FLOAT, v8 }, | ||
1759 | - | ||
1760 | -{ "fsqrtd", F3F(2, 0x34, 0x02a), F3F(~2, ~0x34, ~0x02a)|RS1_G0, "B,H", F_FLOAT, v7 }, | ||
1761 | -{ "fsqrtq", F3F(2, 0x34, 0x02b), F3F(~2, ~0x34, ~0x02b)|RS1_G0, "R,J", F_FLOAT, v8 }, | ||
1762 | -{ "fsqrtx", F3F(2, 0x34, 0x02b), F3F(~2, ~0x34, ~0x02b)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1763 | -{ "fsqrts", F3F(2, 0x34, 0x029), F3F(~2, ~0x34, ~0x029)|RS1_G0, "f,g", F_FLOAT, v7 }, | ||
1764 | - | ||
1765 | -{ "fabsd", F3F(2, 0x34, 0x00a), F3F(~2, ~0x34, ~0x00a)|RS1_G0, "B,H", F_FLOAT, v9 }, | ||
1766 | -{ "fabsq", F3F(2, 0x34, 0x00b), F3F(~2, ~0x34, ~0x00b)|RS1_G0, "R,J", F_FLOAT, v9 }, | ||
1767 | -{ "fabsx", F3F(2, 0x34, 0x00b), F3F(~2, ~0x34, ~0x00b)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, | ||
1768 | -{ "fabss", F3F(2, 0x34, 0x009), F3F(~2, ~0x34, ~0x009)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1769 | -{ "fmovd", F3F(2, 0x34, 0x002), F3F(~2, ~0x34, ~0x002)|RS1_G0, "B,H", F_FLOAT, v9 }, | ||
1770 | -{ "fmovq", F3F(2, 0x34, 0x003), F3F(~2, ~0x34, ~0x003)|RS1_G0, "R,J", F_FLOAT, v9 }, | ||
1771 | -{ "fmovx", F3F(2, 0x34, 0x003), F3F(~2, ~0x34, ~0x003)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, | ||
1772 | -{ "fmovs", F3F(2, 0x34, 0x001), F3F(~2, ~0x34, ~0x001)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1773 | -{ "fnegd", F3F(2, 0x34, 0x006), F3F(~2, ~0x34, ~0x006)|RS1_G0, "B,H", F_FLOAT, v9 }, | ||
1774 | -{ "fnegq", F3F(2, 0x34, 0x007), F3F(~2, ~0x34, ~0x007)|RS1_G0, "R,J", F_FLOAT, v9 }, | ||
1775 | -{ "fnegx", F3F(2, 0x34, 0x007), F3F(~2, ~0x34, ~0x007)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, | ||
1776 | -{ "fnegs", F3F(2, 0x34, 0x005), F3F(~2, ~0x34, ~0x005)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1777 | - | ||
1778 | -{ "faddd", F3F(2, 0x34, 0x042), F3F(~2, ~0x34, ~0x042), "v,B,H", F_FLOAT, v6 }, | ||
1779 | -{ "faddq", F3F(2, 0x34, 0x043), F3F(~2, ~0x34, ~0x043), "V,R,J", F_FLOAT, v8 }, | ||
1780 | -{ "faddx", F3F(2, 0x34, 0x043), F3F(~2, ~0x34, ~0x043), "V,R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1781 | -{ "fadds", F3F(2, 0x34, 0x041), F3F(~2, ~0x34, ~0x041), "e,f,g", F_FLOAT, v6 }, | ||
1782 | -{ "fsubd", F3F(2, 0x34, 0x046), F3F(~2, ~0x34, ~0x046), "v,B,H", F_FLOAT, v6 }, | ||
1783 | -{ "fsubq", F3F(2, 0x34, 0x047), F3F(~2, ~0x34, ~0x047), "V,R,J", F_FLOAT, v8 }, | ||
1784 | -{ "fsubx", F3F(2, 0x34, 0x047), F3F(~2, ~0x34, ~0x047), "V,R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1785 | -{ "fsubs", F3F(2, 0x34, 0x045), F3F(~2, ~0x34, ~0x045), "e,f,g", F_FLOAT, v6 }, | ||
1786 | - | ||
1787 | -#define CMPFCC(x) (((x)&0x3)<<25) | ||
1788 | - | ||
1789 | -{ "fcmpd", F3F(2, 0x35, 0x052), F3F(~2, ~0x35, ~0x052)|RD_G0, "v,B", F_FLOAT, v6 }, | ||
1790 | -{ "fcmpd", CMPFCC(0)|F3F(2, 0x35, 0x052), CMPFCC(~0)|F3F(~2, ~0x35, ~0x052), "6,v,B", F_FLOAT, v9 }, | ||
1791 | -{ "fcmpd", CMPFCC(1)|F3F(2, 0x35, 0x052), CMPFCC(~1)|F3F(~2, ~0x35, ~0x052), "7,v,B", F_FLOAT, v9 }, | ||
1792 | -{ "fcmpd", CMPFCC(2)|F3F(2, 0x35, 0x052), CMPFCC(~2)|F3F(~2, ~0x35, ~0x052), "8,v,B", F_FLOAT, v9 }, | ||
1793 | -{ "fcmpd", CMPFCC(3)|F3F(2, 0x35, 0x052), CMPFCC(~3)|F3F(~2, ~0x35, ~0x052), "9,v,B", F_FLOAT, v9 }, | ||
1794 | -{ "fcmped", F3F(2, 0x35, 0x056), F3F(~2, ~0x35, ~0x056)|RD_G0, "v,B", F_FLOAT, v6 }, | ||
1795 | -{ "fcmped", CMPFCC(0)|F3F(2, 0x35, 0x056), CMPFCC(~0)|F3F(~2, ~0x35, ~0x056), "6,v,B", F_FLOAT, v9 }, | ||
1796 | -{ "fcmped", CMPFCC(1)|F3F(2, 0x35, 0x056), CMPFCC(~1)|F3F(~2, ~0x35, ~0x056), "7,v,B", F_FLOAT, v9 }, | ||
1797 | -{ "fcmped", CMPFCC(2)|F3F(2, 0x35, 0x056), CMPFCC(~2)|F3F(~2, ~0x35, ~0x056), "8,v,B", F_FLOAT, v9 }, | ||
1798 | -{ "fcmped", CMPFCC(3)|F3F(2, 0x35, 0x056), CMPFCC(~3)|F3F(~2, ~0x35, ~0x056), "9,v,B", F_FLOAT, v9 }, | ||
1799 | -{ "fcmpq", F3F(2, 0x35, 0x053), F3F(~2, ~0x35, ~0x053)|RD_G0, "V,R", F_FLOAT, v8 }, | ||
1800 | -{ "fcmpq", CMPFCC(0)|F3F(2, 0x35, 0x053), CMPFCC(~0)|F3F(~2, ~0x35, ~0x053), "6,V,R", F_FLOAT, v9 }, | ||
1801 | -{ "fcmpq", CMPFCC(1)|F3F(2, 0x35, 0x053), CMPFCC(~1)|F3F(~2, ~0x35, ~0x053), "7,V,R", F_FLOAT, v9 }, | ||
1802 | -{ "fcmpq", CMPFCC(2)|F3F(2, 0x35, 0x053), CMPFCC(~2)|F3F(~2, ~0x35, ~0x053), "8,V,R", F_FLOAT, v9 }, | ||
1803 | -{ "fcmpq", CMPFCC(3)|F3F(2, 0x35, 0x053), CMPFCC(~3)|F3F(~2, ~0x35, ~0x053), "9,V,R", F_FLOAT, v9 }, | ||
1804 | -{ "fcmpeq", F3F(2, 0x35, 0x057), F3F(~2, ~0x35, ~0x057)|RD_G0, "V,R", F_FLOAT, v8 }, | ||
1805 | -{ "fcmpeq", CMPFCC(0)|F3F(2, 0x35, 0x057), CMPFCC(~0)|F3F(~2, ~0x35, ~0x057), "6,V,R", F_FLOAT, v9 }, | ||
1806 | -{ "fcmpeq", CMPFCC(1)|F3F(2, 0x35, 0x057), CMPFCC(~1)|F3F(~2, ~0x35, ~0x057), "7,V,R", F_FLOAT, v9 }, | ||
1807 | -{ "fcmpeq", CMPFCC(2)|F3F(2, 0x35, 0x057), CMPFCC(~2)|F3F(~2, ~0x35, ~0x057), "8,V,R", F_FLOAT, v9 }, | ||
1808 | -{ "fcmpeq", CMPFCC(3)|F3F(2, 0x35, 0x057), CMPFCC(~3)|F3F(~2, ~0x35, ~0x057), "9,V,R", F_FLOAT, v9 }, | ||
1809 | -{ "fcmpx", F3F(2, 0x35, 0x053), F3F(~2, ~0x35, ~0x053)|RD_G0, "V,R", F_FLOAT|F_ALIAS, v8 }, | ||
1810 | -{ "fcmpx", CMPFCC(0)|F3F(2, 0x35, 0x053), CMPFCC(~0)|F3F(~2, ~0x35, ~0x053), "6,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1811 | -{ "fcmpx", CMPFCC(1)|F3F(2, 0x35, 0x053), CMPFCC(~1)|F3F(~2, ~0x35, ~0x053), "7,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1812 | -{ "fcmpx", CMPFCC(2)|F3F(2, 0x35, 0x053), CMPFCC(~2)|F3F(~2, ~0x35, ~0x053), "8,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1813 | -{ "fcmpx", CMPFCC(3)|F3F(2, 0x35, 0x053), CMPFCC(~3)|F3F(~2, ~0x35, ~0x053), "9,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1814 | -{ "fcmpex", F3F(2, 0x35, 0x057), F3F(~2, ~0x35, ~0x057)|RD_G0, "V,R", F_FLOAT|F_ALIAS, v8 }, | ||
1815 | -{ "fcmpex", CMPFCC(0)|F3F(2, 0x35, 0x057), CMPFCC(~0)|F3F(~2, ~0x35, ~0x057), "6,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1816 | -{ "fcmpex", CMPFCC(1)|F3F(2, 0x35, 0x057), CMPFCC(~1)|F3F(~2, ~0x35, ~0x057), "7,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1817 | -{ "fcmpex", CMPFCC(2)|F3F(2, 0x35, 0x057), CMPFCC(~2)|F3F(~2, ~0x35, ~0x057), "8,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1818 | -{ "fcmpex", CMPFCC(3)|F3F(2, 0x35, 0x057), CMPFCC(~3)|F3F(~2, ~0x35, ~0x057), "9,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1819 | -{ "fcmps", F3F(2, 0x35, 0x051), F3F(~2, ~0x35, ~0x051)|RD_G0, "e,f", F_FLOAT, v6 }, | ||
1820 | -{ "fcmps", CMPFCC(0)|F3F(2, 0x35, 0x051), CMPFCC(~0)|F3F(~2, ~0x35, ~0x051), "6,e,f", F_FLOAT, v9 }, | ||
1821 | -{ "fcmps", CMPFCC(1)|F3F(2, 0x35, 0x051), CMPFCC(~1)|F3F(~2, ~0x35, ~0x051), "7,e,f", F_FLOAT, v9 }, | ||
1822 | -{ "fcmps", CMPFCC(2)|F3F(2, 0x35, 0x051), CMPFCC(~2)|F3F(~2, ~0x35, ~0x051), "8,e,f", F_FLOAT, v9 }, | ||
1823 | -{ "fcmps", CMPFCC(3)|F3F(2, 0x35, 0x051), CMPFCC(~3)|F3F(~2, ~0x35, ~0x051), "9,e,f", F_FLOAT, v9 }, | ||
1824 | -{ "fcmpes", F3F(2, 0x35, 0x055), F3F(~2, ~0x35, ~0x055)|RD_G0, "e,f", F_FLOAT, v6 }, | ||
1825 | -{ "fcmpes", CMPFCC(0)|F3F(2, 0x35, 0x055), CMPFCC(~0)|F3F(~2, ~0x35, ~0x055), "6,e,f", F_FLOAT, v9 }, | ||
1826 | -{ "fcmpes", CMPFCC(1)|F3F(2, 0x35, 0x055), CMPFCC(~1)|F3F(~2, ~0x35, ~0x055), "7,e,f", F_FLOAT, v9 }, | ||
1827 | -{ "fcmpes", CMPFCC(2)|F3F(2, 0x35, 0x055), CMPFCC(~2)|F3F(~2, ~0x35, ~0x055), "8,e,f", F_FLOAT, v9 }, | ||
1828 | -{ "fcmpes", CMPFCC(3)|F3F(2, 0x35, 0x055), CMPFCC(~3)|F3F(~2, ~0x35, ~0x055), "9,e,f", F_FLOAT, v9 }, | 1724 | +{ "fdtoi", F3F(2, 0x34, 0x0d2), F3F(~2, ~0x34, ~0x0d2)|RS1_G0, "B,g", F_FLOAT, v6 }, |
1725 | +{ "fstoi", F3F(2, 0x34, 0x0d1), F3F(~2, ~0x34, ~0x0d1)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1726 | +{ "fqtoi", F3F(2, 0x34, 0x0d3), F3F(~2, ~0x34, ~0x0d3)|RS1_G0, "R,g", F_FLOAT, v8 }, | ||
1727 | + | ||
1728 | +{ "fdtox", F3F(2, 0x34, 0x082), F3F(~2, ~0x34, ~0x082)|RS1_G0, "B,g", F_FLOAT, v9 }, | ||
1729 | +{ "fstox", F3F(2, 0x34, 0x081), F3F(~2, ~0x34, ~0x081)|RS1_G0, "f,g", F_FLOAT, v9 }, | ||
1730 | +{ "fqtox", F3F(2, 0x34, 0x083), F3F(~2, ~0x34, ~0x083)|RS1_G0, "R,g", F_FLOAT, v9 }, | ||
1731 | + | ||
1732 | +{ "fitod", F3F(2, 0x34, 0x0c8), F3F(~2, ~0x34, ~0x0c8)|RS1_G0, "f,H", F_FLOAT, v6 }, | ||
1733 | +{ "fitos", F3F(2, 0x34, 0x0c4), F3F(~2, ~0x34, ~0x0c4)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1734 | +{ "fitoq", F3F(2, 0x34, 0x0cc), F3F(~2, ~0x34, ~0x0cc)|RS1_G0, "f,J", F_FLOAT, v8 }, | ||
1735 | + | ||
1736 | +{ "fxtod", F3F(2, 0x34, 0x088), F3F(~2, ~0x34, ~0x088)|RS1_G0, "f,H", F_FLOAT, v9 }, | ||
1737 | +{ "fxtos", F3F(2, 0x34, 0x084), F3F(~2, ~0x34, ~0x084)|RS1_G0, "f,g", F_FLOAT, v9 }, | ||
1738 | +{ "fxtoq", F3F(2, 0x34, 0x08c), F3F(~2, ~0x34, ~0x08c)|RS1_G0, "f,J", F_FLOAT, v9 }, | ||
1739 | + | ||
1740 | +{ "fdtoq", F3F(2, 0x34, 0x0ce), F3F(~2, ~0x34, ~0x0ce)|RS1_G0, "B,J", F_FLOAT, v8 }, | ||
1741 | +{ "fdtos", F3F(2, 0x34, 0x0c6), F3F(~2, ~0x34, ~0x0c6)|RS1_G0, "B,g", F_FLOAT, v6 }, | ||
1742 | +{ "fqtod", F3F(2, 0x34, 0x0cb), F3F(~2, ~0x34, ~0x0cb)|RS1_G0, "R,H", F_FLOAT, v8 }, | ||
1743 | +{ "fqtos", F3F(2, 0x34, 0x0c7), F3F(~2, ~0x34, ~0x0c7)|RS1_G0, "R,g", F_FLOAT, v8 }, | ||
1744 | +{ "fstod", F3F(2, 0x34, 0x0c9), F3F(~2, ~0x34, ~0x0c9)|RS1_G0, "f,H", F_FLOAT, v6 }, | ||
1745 | +{ "fstoq", F3F(2, 0x34, 0x0cd), F3F(~2, ~0x34, ~0x0cd)|RS1_G0, "f,J", F_FLOAT, v8 }, | ||
1746 | + | ||
1747 | +{ "fdivd", F3F(2, 0x34, 0x04e), F3F(~2, ~0x34, ~0x04e), "v,B,H", F_FLOAT, v6 }, | ||
1748 | +{ "fdivq", F3F(2, 0x34, 0x04f), F3F(~2, ~0x34, ~0x04f), "V,R,J", F_FLOAT, v8 }, | ||
1749 | +{ "fdivx", F3F(2, 0x34, 0x04f), F3F(~2, ~0x34, ~0x04f), "V,R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1750 | +{ "fdivs", F3F(2, 0x34, 0x04d), F3F(~2, ~0x34, ~0x04d), "e,f,g", F_FLOAT, v6 }, | ||
1751 | +{ "fmuld", F3F(2, 0x34, 0x04a), F3F(~2, ~0x34, ~0x04a), "v,B,H", F_FLOAT, v6 }, | ||
1752 | +{ "fmulq", F3F(2, 0x34, 0x04b), F3F(~2, ~0x34, ~0x04b), "V,R,J", F_FLOAT, v8 }, | ||
1753 | +{ "fmulx", F3F(2, 0x34, 0x04b), F3F(~2, ~0x34, ~0x04b), "V,R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1754 | +{ "fmuls", F3F(2, 0x34, 0x049), F3F(~2, ~0x34, ~0x049), "e,f,g", F_FLOAT, v6 }, | ||
1755 | + | ||
1756 | +{ "fdmulq", F3F(2, 0x34, 0x06e), F3F(~2, ~0x34, ~0x06e), "v,B,J", F_FLOAT, v8 }, | ||
1757 | +{ "fdmulx", F3F(2, 0x34, 0x06e), F3F(~2, ~0x34, ~0x06e), "v,B,J", F_FLOAT|F_ALIAS, v8 }, | ||
1758 | +{ "fsmuld", F3F(2, 0x34, 0x069), F3F(~2, ~0x34, ~0x069), "e,f,H", F_FLOAT, v8 }, | ||
1759 | + | ||
1760 | +{ "fsqrtd", F3F(2, 0x34, 0x02a), F3F(~2, ~0x34, ~0x02a)|RS1_G0, "B,H", F_FLOAT, v7 }, | ||
1761 | +{ "fsqrtq", F3F(2, 0x34, 0x02b), F3F(~2, ~0x34, ~0x02b)|RS1_G0, "R,J", F_FLOAT, v8 }, | ||
1762 | +{ "fsqrtx", F3F(2, 0x34, 0x02b), F3F(~2, ~0x34, ~0x02b)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1763 | +{ "fsqrts", F3F(2, 0x34, 0x029), F3F(~2, ~0x34, ~0x029)|RS1_G0, "f,g", F_FLOAT, v7 }, | ||
1764 | + | ||
1765 | +{ "fabsd", F3F(2, 0x34, 0x00a), F3F(~2, ~0x34, ~0x00a)|RS1_G0, "B,H", F_FLOAT, v9 }, | ||
1766 | +{ "fabsq", F3F(2, 0x34, 0x00b), F3F(~2, ~0x34, ~0x00b)|RS1_G0, "R,J", F_FLOAT, v9 }, | ||
1767 | +{ "fabsx", F3F(2, 0x34, 0x00b), F3F(~2, ~0x34, ~0x00b)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, | ||
1768 | +{ "fabss", F3F(2, 0x34, 0x009), F3F(~2, ~0x34, ~0x009)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1769 | +{ "fmovd", F3F(2, 0x34, 0x002), F3F(~2, ~0x34, ~0x002)|RS1_G0, "B,H", F_FLOAT, v9 }, | ||
1770 | +{ "fmovq", F3F(2, 0x34, 0x003), F3F(~2, ~0x34, ~0x003)|RS1_G0, "R,J", F_FLOAT, v9 }, | ||
1771 | +{ "fmovx", F3F(2, 0x34, 0x003), F3F(~2, ~0x34, ~0x003)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, | ||
1772 | +{ "fmovs", F3F(2, 0x34, 0x001), F3F(~2, ~0x34, ~0x001)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1773 | +{ "fnegd", F3F(2, 0x34, 0x006), F3F(~2, ~0x34, ~0x006)|RS1_G0, "B,H", F_FLOAT, v9 }, | ||
1774 | +{ "fnegq", F3F(2, 0x34, 0x007), F3F(~2, ~0x34, ~0x007)|RS1_G0, "R,J", F_FLOAT, v9 }, | ||
1775 | +{ "fnegx", F3F(2, 0x34, 0x007), F3F(~2, ~0x34, ~0x007)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, | ||
1776 | +{ "fnegs", F3F(2, 0x34, 0x005), F3F(~2, ~0x34, ~0x005)|RS1_G0, "f,g", F_FLOAT, v6 }, | ||
1777 | + | ||
1778 | +{ "faddd", F3F(2, 0x34, 0x042), F3F(~2, ~0x34, ~0x042), "v,B,H", F_FLOAT, v6 }, | ||
1779 | +{ "faddq", F3F(2, 0x34, 0x043), F3F(~2, ~0x34, ~0x043), "V,R,J", F_FLOAT, v8 }, | ||
1780 | +{ "faddx", F3F(2, 0x34, 0x043), F3F(~2, ~0x34, ~0x043), "V,R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1781 | +{ "fadds", F3F(2, 0x34, 0x041), F3F(~2, ~0x34, ~0x041), "e,f,g", F_FLOAT, v6 }, | ||
1782 | +{ "fsubd", F3F(2, 0x34, 0x046), F3F(~2, ~0x34, ~0x046), "v,B,H", F_FLOAT, v6 }, | ||
1783 | +{ "fsubq", F3F(2, 0x34, 0x047), F3F(~2, ~0x34, ~0x047), "V,R,J", F_FLOAT, v8 }, | ||
1784 | +{ "fsubx", F3F(2, 0x34, 0x047), F3F(~2, ~0x34, ~0x047), "V,R,J", F_FLOAT|F_ALIAS, v8 }, | ||
1785 | +{ "fsubs", F3F(2, 0x34, 0x045), F3F(~2, ~0x34, ~0x045), "e,f,g", F_FLOAT, v6 }, | ||
1786 | + | ||
1787 | +#define CMPFCC(x) (((x)&0x3)<<25) | ||
1788 | + | ||
1789 | +{ "fcmpd", F3F(2, 0x35, 0x052), F3F(~2, ~0x35, ~0x052)|RD_G0, "v,B", F_FLOAT, v6 }, | ||
1790 | +{ "fcmpd", CMPFCC(0)|F3F(2, 0x35, 0x052), CMPFCC(~0)|F3F(~2, ~0x35, ~0x052), "6,v,B", F_FLOAT, v9 }, | ||
1791 | +{ "fcmpd", CMPFCC(1)|F3F(2, 0x35, 0x052), CMPFCC(~1)|F3F(~2, ~0x35, ~0x052), "7,v,B", F_FLOAT, v9 }, | ||
1792 | +{ "fcmpd", CMPFCC(2)|F3F(2, 0x35, 0x052), CMPFCC(~2)|F3F(~2, ~0x35, ~0x052), "8,v,B", F_FLOAT, v9 }, | ||
1793 | +{ "fcmpd", CMPFCC(3)|F3F(2, 0x35, 0x052), CMPFCC(~3)|F3F(~2, ~0x35, ~0x052), "9,v,B", F_FLOAT, v9 }, | ||
1794 | +{ "fcmped", F3F(2, 0x35, 0x056), F3F(~2, ~0x35, ~0x056)|RD_G0, "v,B", F_FLOAT, v6 }, | ||
1795 | +{ "fcmped", CMPFCC(0)|F3F(2, 0x35, 0x056), CMPFCC(~0)|F3F(~2, ~0x35, ~0x056), "6,v,B", F_FLOAT, v9 }, | ||
1796 | +{ "fcmped", CMPFCC(1)|F3F(2, 0x35, 0x056), CMPFCC(~1)|F3F(~2, ~0x35, ~0x056), "7,v,B", F_FLOAT, v9 }, | ||
1797 | +{ "fcmped", CMPFCC(2)|F3F(2, 0x35, 0x056), CMPFCC(~2)|F3F(~2, ~0x35, ~0x056), "8,v,B", F_FLOAT, v9 }, | ||
1798 | +{ "fcmped", CMPFCC(3)|F3F(2, 0x35, 0x056), CMPFCC(~3)|F3F(~2, ~0x35, ~0x056), "9,v,B", F_FLOAT, v9 }, | ||
1799 | +{ "fcmpq", F3F(2, 0x35, 0x053), F3F(~2, ~0x35, ~0x053)|RD_G0, "V,R", F_FLOAT, v8 }, | ||
1800 | +{ "fcmpq", CMPFCC(0)|F3F(2, 0x35, 0x053), CMPFCC(~0)|F3F(~2, ~0x35, ~0x053), "6,V,R", F_FLOAT, v9 }, | ||
1801 | +{ "fcmpq", CMPFCC(1)|F3F(2, 0x35, 0x053), CMPFCC(~1)|F3F(~2, ~0x35, ~0x053), "7,V,R", F_FLOAT, v9 }, | ||
1802 | +{ "fcmpq", CMPFCC(2)|F3F(2, 0x35, 0x053), CMPFCC(~2)|F3F(~2, ~0x35, ~0x053), "8,V,R", F_FLOAT, v9 }, | ||
1803 | +{ "fcmpq", CMPFCC(3)|F3F(2, 0x35, 0x053), CMPFCC(~3)|F3F(~2, ~0x35, ~0x053), "9,V,R", F_FLOAT, v9 }, | ||
1804 | +{ "fcmpeq", F3F(2, 0x35, 0x057), F3F(~2, ~0x35, ~0x057)|RD_G0, "V,R", F_FLOAT, v8 }, | ||
1805 | +{ "fcmpeq", CMPFCC(0)|F3F(2, 0x35, 0x057), CMPFCC(~0)|F3F(~2, ~0x35, ~0x057), "6,V,R", F_FLOAT, v9 }, | ||
1806 | +{ "fcmpeq", CMPFCC(1)|F3F(2, 0x35, 0x057), CMPFCC(~1)|F3F(~2, ~0x35, ~0x057), "7,V,R", F_FLOAT, v9 }, | ||
1807 | +{ "fcmpeq", CMPFCC(2)|F3F(2, 0x35, 0x057), CMPFCC(~2)|F3F(~2, ~0x35, ~0x057), "8,V,R", F_FLOAT, v9 }, | ||
1808 | +{ "fcmpeq", CMPFCC(3)|F3F(2, 0x35, 0x057), CMPFCC(~3)|F3F(~2, ~0x35, ~0x057), "9,V,R", F_FLOAT, v9 }, | ||
1809 | +{ "fcmpx", F3F(2, 0x35, 0x053), F3F(~2, ~0x35, ~0x053)|RD_G0, "V,R", F_FLOAT|F_ALIAS, v8 }, | ||
1810 | +{ "fcmpx", CMPFCC(0)|F3F(2, 0x35, 0x053), CMPFCC(~0)|F3F(~2, ~0x35, ~0x053), "6,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1811 | +{ "fcmpx", CMPFCC(1)|F3F(2, 0x35, 0x053), CMPFCC(~1)|F3F(~2, ~0x35, ~0x053), "7,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1812 | +{ "fcmpx", CMPFCC(2)|F3F(2, 0x35, 0x053), CMPFCC(~2)|F3F(~2, ~0x35, ~0x053), "8,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1813 | +{ "fcmpx", CMPFCC(3)|F3F(2, 0x35, 0x053), CMPFCC(~3)|F3F(~2, ~0x35, ~0x053), "9,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1814 | +{ "fcmpex", F3F(2, 0x35, 0x057), F3F(~2, ~0x35, ~0x057)|RD_G0, "V,R", F_FLOAT|F_ALIAS, v8 }, | ||
1815 | +{ "fcmpex", CMPFCC(0)|F3F(2, 0x35, 0x057), CMPFCC(~0)|F3F(~2, ~0x35, ~0x057), "6,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1816 | +{ "fcmpex", CMPFCC(1)|F3F(2, 0x35, 0x057), CMPFCC(~1)|F3F(~2, ~0x35, ~0x057), "7,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1817 | +{ "fcmpex", CMPFCC(2)|F3F(2, 0x35, 0x057), CMPFCC(~2)|F3F(~2, ~0x35, ~0x057), "8,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1818 | +{ "fcmpex", CMPFCC(3)|F3F(2, 0x35, 0x057), CMPFCC(~3)|F3F(~2, ~0x35, ~0x057), "9,V,R", F_FLOAT|F_ALIAS, v9 }, | ||
1819 | +{ "fcmps", F3F(2, 0x35, 0x051), F3F(~2, ~0x35, ~0x051)|RD_G0, "e,f", F_FLOAT, v6 }, | ||
1820 | +{ "fcmps", CMPFCC(0)|F3F(2, 0x35, 0x051), CMPFCC(~0)|F3F(~2, ~0x35, ~0x051), "6,e,f", F_FLOAT, v9 }, | ||
1821 | +{ "fcmps", CMPFCC(1)|F3F(2, 0x35, 0x051), CMPFCC(~1)|F3F(~2, ~0x35, ~0x051), "7,e,f", F_FLOAT, v9 }, | ||
1822 | +{ "fcmps", CMPFCC(2)|F3F(2, 0x35, 0x051), CMPFCC(~2)|F3F(~2, ~0x35, ~0x051), "8,e,f", F_FLOAT, v9 }, | ||
1823 | +{ "fcmps", CMPFCC(3)|F3F(2, 0x35, 0x051), CMPFCC(~3)|F3F(~2, ~0x35, ~0x051), "9,e,f", F_FLOAT, v9 }, | ||
1824 | +{ "fcmpes", F3F(2, 0x35, 0x055), F3F(~2, ~0x35, ~0x055)|RD_G0, "e,f", F_FLOAT, v6 }, | ||
1825 | +{ "fcmpes", CMPFCC(0)|F3F(2, 0x35, 0x055), CMPFCC(~0)|F3F(~2, ~0x35, ~0x055), "6,e,f", F_FLOAT, v9 }, | ||
1826 | +{ "fcmpes", CMPFCC(1)|F3F(2, 0x35, 0x055), CMPFCC(~1)|F3F(~2, ~0x35, ~0x055), "7,e,f", F_FLOAT, v9 }, | ||
1827 | +{ "fcmpes", CMPFCC(2)|F3F(2, 0x35, 0x055), CMPFCC(~2)|F3F(~2, ~0x35, ~0x055), "8,e,f", F_FLOAT, v9 }, | ||
1828 | +{ "fcmpes", CMPFCC(3)|F3F(2, 0x35, 0x055), CMPFCC(~3)|F3F(~2, ~0x35, ~0x055), "9,e,f", F_FLOAT, v9 }, | ||
1829 | 1829 | ||
1830 | /* These Extended FPop (FIFO) instructions are new in the Fujitsu | 1830 | /* These Extended FPop (FIFO) instructions are new in the Fujitsu |
1831 | MB86934, replacing the CPop instructions from v6 and later | 1831 | MB86934, replacing the CPop instructions from v6 and later |
@@ -1835,30 +1835,30 @@ CONDFC ("fbule", "cb013", 0xe, F_CONDBR), | @@ -1835,30 +1835,30 @@ CONDFC ("fbule", "cb013", 0xe, F_CONDBR), | ||
1835 | #define EFPOP1_3(name, op, args) { name, F3F(2, 0x36, op), F3F(~2, ~0x36, ~op), args, 0, sparclite } | 1835 | #define EFPOP1_3(name, op, args) { name, F3F(2, 0x36, op), F3F(~2, ~0x36, ~op), args, 0, sparclite } |
1836 | #define EFPOP2_2(name, op, args) { name, F3F(2, 0x37, op), F3F(~2, ~0x37, ~op)|RD_G0, args, 0, sparclite } | 1836 | #define EFPOP2_2(name, op, args) { name, F3F(2, 0x37, op), F3F(~2, ~0x37, ~op)|RD_G0, args, 0, sparclite } |
1837 | 1837 | ||
1838 | -EFPOP1_2 ("efitod", 0x0c8, "f,H"), | ||
1839 | -EFPOP1_2 ("efitos", 0x0c4, "f,g"), | ||
1840 | -EFPOP1_2 ("efdtoi", 0x0d2, "B,g"), | ||
1841 | -EFPOP1_2 ("efstoi", 0x0d1, "f,g"), | ||
1842 | -EFPOP1_2 ("efstod", 0x0c9, "f,H"), | ||
1843 | -EFPOP1_2 ("efdtos", 0x0c6, "B,g"), | ||
1844 | -EFPOP1_2 ("efmovs", 0x001, "f,g"), | ||
1845 | -EFPOP1_2 ("efnegs", 0x005, "f,g"), | ||
1846 | -EFPOP1_2 ("efabss", 0x009, "f,g"), | ||
1847 | -EFPOP1_2 ("efsqrtd", 0x02a, "B,H"), | ||
1848 | -EFPOP1_2 ("efsqrts", 0x029, "f,g"), | ||
1849 | -EFPOP1_3 ("efaddd", 0x042, "v,B,H"), | ||
1850 | -EFPOP1_3 ("efadds", 0x041, "e,f,g"), | ||
1851 | -EFPOP1_3 ("efsubd", 0x046, "v,B,H"), | ||
1852 | -EFPOP1_3 ("efsubs", 0x045, "e,f,g"), | ||
1853 | -EFPOP1_3 ("efdivd", 0x04e, "v,B,H"), | ||
1854 | -EFPOP1_3 ("efdivs", 0x04d, "e,f,g"), | ||
1855 | -EFPOP1_3 ("efmuld", 0x04a, "v,B,H"), | ||
1856 | -EFPOP1_3 ("efmuls", 0x049, "e,f,g"), | ||
1857 | -EFPOP1_3 ("efsmuld", 0x069, "e,f,H"), | ||
1858 | -EFPOP2_2 ("efcmpd", 0x052, "v,B"), | ||
1859 | -EFPOP2_2 ("efcmped", 0x056, "v,B"), | ||
1860 | -EFPOP2_2 ("efcmps", 0x051, "e,f"), | ||
1861 | -EFPOP2_2 ("efcmpes", 0x055, "e,f"), | 1838 | +EFPOP1_2 ("efitod", 0x0c8, "f,H"), |
1839 | +EFPOP1_2 ("efitos", 0x0c4, "f,g"), | ||
1840 | +EFPOP1_2 ("efdtoi", 0x0d2, "B,g"), | ||
1841 | +EFPOP1_2 ("efstoi", 0x0d1, "f,g"), | ||
1842 | +EFPOP1_2 ("efstod", 0x0c9, "f,H"), | ||
1843 | +EFPOP1_2 ("efdtos", 0x0c6, "B,g"), | ||
1844 | +EFPOP1_2 ("efmovs", 0x001, "f,g"), | ||
1845 | +EFPOP1_2 ("efnegs", 0x005, "f,g"), | ||
1846 | +EFPOP1_2 ("efabss", 0x009, "f,g"), | ||
1847 | +EFPOP1_2 ("efsqrtd", 0x02a, "B,H"), | ||
1848 | +EFPOP1_2 ("efsqrts", 0x029, "f,g"), | ||
1849 | +EFPOP1_3 ("efaddd", 0x042, "v,B,H"), | ||
1850 | +EFPOP1_3 ("efadds", 0x041, "e,f,g"), | ||
1851 | +EFPOP1_3 ("efsubd", 0x046, "v,B,H"), | ||
1852 | +EFPOP1_3 ("efsubs", 0x045, "e,f,g"), | ||
1853 | +EFPOP1_3 ("efdivd", 0x04e, "v,B,H"), | ||
1854 | +EFPOP1_3 ("efdivs", 0x04d, "e,f,g"), | ||
1855 | +EFPOP1_3 ("efmuld", 0x04a, "v,B,H"), | ||
1856 | +EFPOP1_3 ("efmuls", 0x049, "e,f,g"), | ||
1857 | +EFPOP1_3 ("efsmuld", 0x069, "e,f,H"), | ||
1858 | +EFPOP2_2 ("efcmpd", 0x052, "v,B"), | ||
1859 | +EFPOP2_2 ("efcmped", 0x056, "v,B"), | ||
1860 | +EFPOP2_2 ("efcmps", 0x051, "e,f"), | ||
1861 | +EFPOP2_2 ("efcmpes", 0x055, "e,f"), | ||
1862 | 1862 | ||
1863 | #undef EFPOP1_2 | 1863 | #undef EFPOP1_2 |
1864 | #undef EFPOP1_3 | 1864 | #undef EFPOP1_3 |
@@ -1866,8 +1866,8 @@ EFPOP2_2 ("efcmpes", 0x055, "e,f"), | @@ -1866,8 +1866,8 @@ EFPOP2_2 ("efcmpes", 0x055, "e,f"), | ||
1866 | 1866 | ||
1867 | /* These are marked F_ALIAS, so that they won't conflict with sparclite insns | 1867 | /* These are marked F_ALIAS, so that they won't conflict with sparclite insns |
1868 | present. Otherwise, the F_ALIAS flag is ignored. */ | 1868 | present. Otherwise, the F_ALIAS flag is ignored. */ |
1869 | -{ "cpop1", F3(2, 0x36, 0), F3(~2, ~0x36, ~1), "[1+2],d", F_ALIAS, v6notv9 }, | ||
1870 | -{ "cpop2", F3(2, 0x37, 0), F3(~2, ~0x37, ~1), "[1+2],d", F_ALIAS, v6notv9 }, | 1869 | +{ "cpop1", F3(2, 0x36, 0), F3(~2, ~0x36, ~1), "[1+2],d", F_ALIAS, v6notv9 }, |
1870 | +{ "cpop2", F3(2, 0x37, 0), F3(~2, ~0x37, ~1), "[1+2],d", F_ALIAS, v6notv9 }, | ||
1871 | 1871 | ||
1872 | /* sparclet specific insns */ | 1872 | /* sparclet specific insns */ |
1873 | 1873 | ||
@@ -1878,20 +1878,20 @@ COMMUTEOP ("smacd", 0x2f, sparclet), | @@ -1878,20 +1878,20 @@ COMMUTEOP ("smacd", 0x2f, sparclet), | ||
1878 | COMMUTEOP ("umuld", 0x09, sparclet), | 1878 | COMMUTEOP ("umuld", 0x09, sparclet), |
1879 | COMMUTEOP ("smuld", 0x0d, sparclet), | 1879 | COMMUTEOP ("smuld", 0x0d, sparclet), |
1880 | 1880 | ||
1881 | -{ "shuffle", F3(2, 0x2d, 0), F3(~2, ~0x2d, ~0)|ASI(~0), "1,2,d", 0, sparclet }, | ||
1882 | -{ "shuffle", F3(2, 0x2d, 1), F3(~2, ~0x2d, ~1), "1,i,d", 0, sparclet }, | 1881 | +{ "shuffle", F3(2, 0x2d, 0), F3(~2, ~0x2d, ~0)|ASI(~0), "1,2,d", 0, sparclet }, |
1882 | +{ "shuffle", F3(2, 0x2d, 1), F3(~2, ~0x2d, ~1), "1,i,d", 0, sparclet }, | ||
1883 | 1883 | ||
1884 | /* The manual isn't completely accurate on these insns. The `rs2' field is | 1884 | /* The manual isn't completely accurate on these insns. The `rs2' field is |
1885 | treated as being 6 bits to account for 6 bit immediates to cpush. It is | 1885 | treated as being 6 bits to account for 6 bit immediates to cpush. It is |
1886 | assumed that it is intended that bit 5 is 0 when rs2 contains a reg. */ | 1886 | assumed that it is intended that bit 5 is 0 when rs2 contains a reg. */ |
1887 | #define BIT5 (1<<5) | 1887 | #define BIT5 (1<<5) |
1888 | -{ "crdcxt", F3(2, 0x36, 0)|SLCPOP(4), F3(~2, ~0x36, ~0)|SLCPOP(~4)|BIT5|RS2(~0), "U,d", 0, sparclet }, | ||
1889 | -{ "cwrcxt", F3(2, 0x36, 0)|SLCPOP(3), F3(~2, ~0x36, ~0)|SLCPOP(~3)|BIT5|RS2(~0), "1,u", 0, sparclet }, | ||
1890 | -{ "cpush", F3(2, 0x36, 0)|SLCPOP(0), F3(~2, ~0x36, ~0)|SLCPOP(~0)|BIT5|RD(~0), "1,2", 0, sparclet }, | ||
1891 | -{ "cpush", F3(2, 0x36, 1)|SLCPOP(0), F3(~2, ~0x36, ~1)|SLCPOP(~0)|RD(~0), "1,Y", 0, sparclet }, | ||
1892 | -{ "cpusha", F3(2, 0x36, 0)|SLCPOP(1), F3(~2, ~0x36, ~0)|SLCPOP(~1)|BIT5|RD(~0), "1,2", 0, sparclet }, | ||
1893 | -{ "cpusha", F3(2, 0x36, 1)|SLCPOP(1), F3(~2, ~0x36, ~1)|SLCPOP(~1)|RD(~0), "1,Y", 0, sparclet }, | ||
1894 | -{ "cpull", F3(2, 0x36, 0)|SLCPOP(2), F3(~2, ~0x36, ~0)|SLCPOP(~2)|BIT5|RS1(~0)|RS2(~0), "d", 0, sparclet }, | 1888 | +{ "crdcxt", F3(2, 0x36, 0)|SLCPOP(4), F3(~2, ~0x36, ~0)|SLCPOP(~4)|BIT5|RS2(~0), "U,d", 0, sparclet }, |
1889 | +{ "cwrcxt", F3(2, 0x36, 0)|SLCPOP(3), F3(~2, ~0x36, ~0)|SLCPOP(~3)|BIT5|RS2(~0), "1,u", 0, sparclet }, | ||
1890 | +{ "cpush", F3(2, 0x36, 0)|SLCPOP(0), F3(~2, ~0x36, ~0)|SLCPOP(~0)|BIT5|RD(~0), "1,2", 0, sparclet }, | ||
1891 | +{ "cpush", F3(2, 0x36, 1)|SLCPOP(0), F3(~2, ~0x36, ~1)|SLCPOP(~0)|RD(~0), "1,Y", 0, sparclet }, | ||
1892 | +{ "cpusha", F3(2, 0x36, 0)|SLCPOP(1), F3(~2, ~0x36, ~0)|SLCPOP(~1)|BIT5|RD(~0), "1,2", 0, sparclet }, | ||
1893 | +{ "cpusha", F3(2, 0x36, 1)|SLCPOP(1), F3(~2, ~0x36, ~1)|SLCPOP(~1)|RD(~0), "1,Y", 0, sparclet }, | ||
1894 | +{ "cpull", F3(2, 0x36, 0)|SLCPOP(2), F3(~2, ~0x36, ~0)|SLCPOP(~2)|BIT5|RS1(~0)|RS2(~0), "d", 0, sparclet }, | ||
1895 | #undef BIT5 | 1895 | #undef BIT5 |
1896 | 1896 | ||
1897 | /* sparclet coprocessor branch insns */ | 1897 | /* sparclet coprocessor branch insns */ |
@@ -1923,108 +1923,108 @@ SLCBCC("cbnefr", 15), | @@ -1923,108 +1923,108 @@ SLCBCC("cbnefr", 15), | ||
1923 | #undef SLCBCC2 | 1923 | #undef SLCBCC2 |
1924 | #undef SLCBCC | 1924 | #undef SLCBCC |
1925 | 1925 | ||
1926 | -{ "casa", F3(3, 0x3c, 0), F3(~3, ~0x3c, ~0), "[1]A,2,d", 0, v9 }, | ||
1927 | -{ "casa", F3(3, 0x3c, 1), F3(~3, ~0x3c, ~1), "[1]o,2,d", 0, v9 }, | ||
1928 | -{ "casxa", F3(3, 0x3e, 0), F3(~3, ~0x3e, ~0), "[1]A,2,d", 0, v9 }, | ||
1929 | -{ "casxa", F3(3, 0x3e, 1), F3(~3, ~0x3e, ~1), "[1]o,2,d", 0, v9 }, | 1926 | +{ "casa", F3(3, 0x3c, 0), F3(~3, ~0x3c, ~0), "[1]A,2,d", 0, v9 }, |
1927 | +{ "casa", F3(3, 0x3c, 1), F3(~3, ~0x3c, ~1), "[1]o,2,d", 0, v9 }, | ||
1928 | +{ "casxa", F3(3, 0x3e, 0), F3(~3, ~0x3e, ~0), "[1]A,2,d", 0, v9 }, | ||
1929 | +{ "casxa", F3(3, 0x3e, 1), F3(~3, ~0x3e, ~1), "[1]o,2,d", 0, v9 }, | ||
1930 | 1930 | ||
1931 | /* v9 synthetic insns */ | 1931 | /* v9 synthetic insns */ |
1932 | -{ "iprefetch", F2(0, 1)|(2<<20)|BPRED, F2(~0, ~1)|(1<<20)|ANNUL|COND(~0), "G", 0, v9 }, /* bn,a,pt %xcc,label */ | ||
1933 | -{ "signx", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|ASI(~0)|RS2_G0, "1,d", F_ALIAS, v9 }, /* sra rs1,%g0,rd */ | ||
1934 | -{ "signx", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|ASI(~0)|RS2_G0, "r", F_ALIAS, v9 }, /* sra rd,%g0,rd */ | ||
1935 | -{ "clruw", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|ASI(~0)|RS2_G0, "1,d", F_ALIAS, v9 }, /* srl rs1,%g0,rd */ | ||
1936 | -{ "clruw", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|ASI(~0)|RS2_G0, "r", F_ALIAS, v9 }, /* srl rd,%g0,rd */ | ||
1937 | -{ "cas", F3(3, 0x3c, 0)|ASI(0x80), F3(~3, ~0x3c, ~0)|ASI(~0x80), "[1],2,d", F_ALIAS, v9 }, /* casa [rs1]ASI_P,rs2,rd */ | ||
1938 | -{ "casl", F3(3, 0x3c, 0)|ASI(0x88), F3(~3, ~0x3c, ~0)|ASI(~0x88), "[1],2,d", F_ALIAS, v9 }, /* casa [rs1]ASI_P_L,rs2,rd */ | ||
1939 | -{ "casx", F3(3, 0x3e, 0)|ASI(0x80), F3(~3, ~0x3e, ~0)|ASI(~0x80), "[1],2,d", F_ALIAS, v9 }, /* casxa [rs1]ASI_P,rs2,rd */ | ||
1940 | -{ "casxl", F3(3, 0x3e, 0)|ASI(0x88), F3(~3, ~0x3e, ~0)|ASI(~0x88), "[1],2,d", F_ALIAS, v9 }, /* casxa [rs1]ASI_P_L,rs2,rd */ | 1932 | +{ "iprefetch", F2(0, 1)|(2<<20)|BPRED, F2(~0, ~1)|(1<<20)|ANNUL|COND(~0), "G", 0, v9 }, /* bn,a,pt %xcc,label */ |
1933 | +{ "signx", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|ASI(~0)|RS2_G0, "1,d", F_ALIAS, v9 }, /* sra rs1,%g0,rd */ | ||
1934 | +{ "signx", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|ASI(~0)|RS2_G0, "r", F_ALIAS, v9 }, /* sra rd,%g0,rd */ | ||
1935 | +{ "clruw", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|ASI(~0)|RS2_G0, "1,d", F_ALIAS, v9 }, /* srl rs1,%g0,rd */ | ||
1936 | +{ "clruw", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|ASI(~0)|RS2_G0, "r", F_ALIAS, v9 }, /* srl rd,%g0,rd */ | ||
1937 | +{ "cas", F3(3, 0x3c, 0)|ASI(0x80), F3(~3, ~0x3c, ~0)|ASI(~0x80), "[1],2,d", F_ALIAS, v9 }, /* casa [rs1]ASI_P,rs2,rd */ | ||
1938 | +{ "casl", F3(3, 0x3c, 0)|ASI(0x88), F3(~3, ~0x3c, ~0)|ASI(~0x88), "[1],2,d", F_ALIAS, v9 }, /* casa [rs1]ASI_P_L,rs2,rd */ | ||
1939 | +{ "casx", F3(3, 0x3e, 0)|ASI(0x80), F3(~3, ~0x3e, ~0)|ASI(~0x80), "[1],2,d", F_ALIAS, v9 }, /* casxa [rs1]ASI_P,rs2,rd */ | ||
1940 | +{ "casxl", F3(3, 0x3e, 0)|ASI(0x88), F3(~3, ~0x3e, ~0)|ASI(~0x88), "[1],2,d", F_ALIAS, v9 }, /* casxa [rs1]ASI_P_L,rs2,rd */ | ||
1941 | 1941 | ||
1942 | /* Ultrasparc extensions */ | 1942 | /* Ultrasparc extensions */ |
1943 | -{ "shutdown", F3F(2, 0x36, 0x080), F3F(~2, ~0x36, ~0x080)|RD_G0|RS1_G0|RS2_G0, "", 0, v9a }, | 1943 | +{ "shutdown", F3F(2, 0x36, 0x080), F3F(~2, ~0x36, ~0x080)|RD_G0|RS1_G0|RS2_G0, "", 0, v9a }, |
1944 | 1944 | ||
1945 | /* FIXME: Do we want to mark these as F_FLOAT, or something similar? */ | 1945 | /* FIXME: Do we want to mark these as F_FLOAT, or something similar? */ |
1946 | -{ "fpadd16", F3F(2, 0x36, 0x050), F3F(~2, ~0x36, ~0x050), "v,B,H", 0, v9a }, | ||
1947 | -{ "fpadd16s", F3F(2, 0x36, 0x051), F3F(~2, ~0x36, ~0x051), "e,f,g", 0, v9a }, | ||
1948 | -{ "fpadd32", F3F(2, 0x36, 0x052), F3F(~2, ~0x36, ~0x052), "v,B,H", 0, v9a }, | ||
1949 | -{ "fpadd32s", F3F(2, 0x36, 0x053), F3F(~2, ~0x36, ~0x053), "e,f,g", 0, v9a }, | ||
1950 | -{ "fpsub16", F3F(2, 0x36, 0x054), F3F(~2, ~0x36, ~0x054), "v,B,H", 0, v9a }, | ||
1951 | -{ "fpsub16s", F3F(2, 0x36, 0x055), F3F(~2, ~0x36, ~0x055), "e,f,g", 0, v9a }, | ||
1952 | -{ "fpsub32", F3F(2, 0x36, 0x056), F3F(~2, ~0x36, ~0x056), "v,B,H", 0, v9a }, | ||
1953 | -{ "fpsub32s", F3F(2, 0x36, 0x057), F3F(~2, ~0x36, ~0x057), "e,f,g", 0, v9a }, | ||
1954 | - | ||
1955 | -{ "fpack32", F3F(2, 0x36, 0x03a), F3F(~2, ~0x36, ~0x03a), "v,B,H", 0, v9a }, | ||
1956 | -{ "fpack16", F3F(2, 0x36, 0x03b), F3F(~2, ~0x36, ~0x03b)|RS1_G0, "B,g", 0, v9a }, | ||
1957 | -{ "fpackfix", F3F(2, 0x36, 0x03d), F3F(~2, ~0x36, ~0x03d)|RS1_G0, "B,g", 0, v9a }, | ||
1958 | -{ "fexpand", F3F(2, 0x36, 0x04d), F3F(~2, ~0x36, ~0x04d)|RS1_G0, "f,H", 0, v9a }, | ||
1959 | -{ "fpmerge", F3F(2, 0x36, 0x04b), F3F(~2, ~0x36, ~0x04b), "e,f,H", 0, v9a }, | 1946 | +{ "fpadd16", F3F(2, 0x36, 0x050), F3F(~2, ~0x36, ~0x050), "v,B,H", 0, v9a }, |
1947 | +{ "fpadd16s", F3F(2, 0x36, 0x051), F3F(~2, ~0x36, ~0x051), "e,f,g", 0, v9a }, | ||
1948 | +{ "fpadd32", F3F(2, 0x36, 0x052), F3F(~2, ~0x36, ~0x052), "v,B,H", 0, v9a }, | ||
1949 | +{ "fpadd32s", F3F(2, 0x36, 0x053), F3F(~2, ~0x36, ~0x053), "e,f,g", 0, v9a }, | ||
1950 | +{ "fpsub16", F3F(2, 0x36, 0x054), F3F(~2, ~0x36, ~0x054), "v,B,H", 0, v9a }, | ||
1951 | +{ "fpsub16s", F3F(2, 0x36, 0x055), F3F(~2, ~0x36, ~0x055), "e,f,g", 0, v9a }, | ||
1952 | +{ "fpsub32", F3F(2, 0x36, 0x056), F3F(~2, ~0x36, ~0x056), "v,B,H", 0, v9a }, | ||
1953 | +{ "fpsub32s", F3F(2, 0x36, 0x057), F3F(~2, ~0x36, ~0x057), "e,f,g", 0, v9a }, | ||
1954 | + | ||
1955 | +{ "fpack32", F3F(2, 0x36, 0x03a), F3F(~2, ~0x36, ~0x03a), "v,B,H", 0, v9a }, | ||
1956 | +{ "fpack16", F3F(2, 0x36, 0x03b), F3F(~2, ~0x36, ~0x03b)|RS1_G0, "B,g", 0, v9a }, | ||
1957 | +{ "fpackfix", F3F(2, 0x36, 0x03d), F3F(~2, ~0x36, ~0x03d)|RS1_G0, "B,g", 0, v9a }, | ||
1958 | +{ "fexpand", F3F(2, 0x36, 0x04d), F3F(~2, ~0x36, ~0x04d)|RS1_G0, "f,H", 0, v9a }, | ||
1959 | +{ "fpmerge", F3F(2, 0x36, 0x04b), F3F(~2, ~0x36, ~0x04b), "e,f,H", 0, v9a }, | ||
1960 | 1960 | ||
1961 | /* Note that the mixing of 32/64 bit regs is intentional. */ | 1961 | /* Note that the mixing of 32/64 bit regs is intentional. */ |
1962 | -{ "fmul8x16", F3F(2, 0x36, 0x031), F3F(~2, ~0x36, ~0x031), "e,B,H", 0, v9a }, | ||
1963 | -{ "fmul8x16au", F3F(2, 0x36, 0x033), F3F(~2, ~0x36, ~0x033), "e,f,H", 0, v9a }, | ||
1964 | -{ "fmul8x16al", F3F(2, 0x36, 0x035), F3F(~2, ~0x36, ~0x035), "e,f,H", 0, v9a }, | ||
1965 | -{ "fmul8sux16", F3F(2, 0x36, 0x036), F3F(~2, ~0x36, ~0x036), "v,B,H", 0, v9a }, | ||
1966 | -{ "fmul8ulx16", F3F(2, 0x36, 0x037), F3F(~2, ~0x36, ~0x037), "v,B,H", 0, v9a }, | ||
1967 | -{ "fmuld8sux16", F3F(2, 0x36, 0x038), F3F(~2, ~0x36, ~0x038), "e,f,H", 0, v9a }, | ||
1968 | -{ "fmuld8ulx16", F3F(2, 0x36, 0x039), F3F(~2, ~0x36, ~0x039), "e,f,H", 0, v9a }, | ||
1969 | - | ||
1970 | -{ "alignaddr", F3F(2, 0x36, 0x018), F3F(~2, ~0x36, ~0x018), "1,2,d", 0, v9a }, | ||
1971 | -{ "alignaddrl", F3F(2, 0x36, 0x01a), F3F(~2, ~0x36, ~0x01a), "1,2,d", 0, v9a }, | ||
1972 | -{ "faligndata", F3F(2, 0x36, 0x048), F3F(~2, ~0x36, ~0x048), "v,B,H", 0, v9a }, | ||
1973 | - | ||
1974 | -{ "fzero", F3F(2, 0x36, 0x060), F3F(~2, ~0x36, ~0x060), "H", 0, v9a }, | ||
1975 | -{ "fzeros", F3F(2, 0x36, 0x061), F3F(~2, ~0x36, ~0x061), "g", 0, v9a }, | ||
1976 | -{ "fone", F3F(2, 0x36, 0x07e), F3F(~2, ~0x36, ~0x07e), "H", 0, v9a }, | ||
1977 | -{ "fones", F3F(2, 0x36, 0x07f), F3F(~2, ~0x36, ~0x07f), "g", 0, v9a }, | ||
1978 | -{ "fsrc1", F3F(2, 0x36, 0x074), F3F(~2, ~0x36, ~0x074), "v,H", 0, v9a }, | ||
1979 | -{ "fsrc1s", F3F(2, 0x36, 0x075), F3F(~2, ~0x36, ~0x075), "e,g", 0, v9a }, | ||
1980 | -{ "fsrc2", F3F(2, 0x36, 0x078), F3F(~2, ~0x36, ~0x078), "B,H", 0, v9a }, | ||
1981 | -{ "fsrc2s", F3F(2, 0x36, 0x079), F3F(~2, ~0x36, ~0x079), "f,g", 0, v9a }, | ||
1982 | -{ "fnot1", F3F(2, 0x36, 0x06a), F3F(~2, ~0x36, ~0x06a), "v,H", 0, v9a }, | ||
1983 | -{ "fnot1s", F3F(2, 0x36, 0x06b), F3F(~2, ~0x36, ~0x06b), "e,g", 0, v9a }, | ||
1984 | -{ "fnot2", F3F(2, 0x36, 0x066), F3F(~2, ~0x36, ~0x066), "B,H", 0, v9a }, | ||
1985 | -{ "fnot2s", F3F(2, 0x36, 0x067), F3F(~2, ~0x36, ~0x067), "f,g", 0, v9a }, | ||
1986 | -{ "for", F3F(2, 0x36, 0x07c), F3F(~2, ~0x36, ~0x07c), "v,B,H", 0, v9a }, | ||
1987 | -{ "fors", F3F(2, 0x36, 0x07d), F3F(~2, ~0x36, ~0x07d), "e,f,g", 0, v9a }, | ||
1988 | -{ "fnor", F3F(2, 0x36, 0x062), F3F(~2, ~0x36, ~0x062), "v,B,H", 0, v9a }, | ||
1989 | -{ "fnors", F3F(2, 0x36, 0x063), F3F(~2, ~0x36, ~0x063), "e,f,g", 0, v9a }, | ||
1990 | -{ "fand", F3F(2, 0x36, 0x070), F3F(~2, ~0x36, ~0x070), "v,B,H", 0, v9a }, | ||
1991 | -{ "fands", F3F(2, 0x36, 0x071), F3F(~2, ~0x36, ~0x071), "e,f,g", 0, v9a }, | ||
1992 | -{ "fnand", F3F(2, 0x36, 0x06e), F3F(~2, ~0x36, ~0x06e), "v,B,H", 0, v9a }, | ||
1993 | -{ "fnands", F3F(2, 0x36, 0x06f), F3F(~2, ~0x36, ~0x06f), "e,f,g", 0, v9a }, | ||
1994 | -{ "fxor", F3F(2, 0x36, 0x06c), F3F(~2, ~0x36, ~0x06c), "v,B,H", 0, v9a }, | ||
1995 | -{ "fxors", F3F(2, 0x36, 0x06d), F3F(~2, ~0x36, ~0x06d), "e,f,g", 0, v9a }, | ||
1996 | -{ "fxnor", F3F(2, 0x36, 0x072), F3F(~2, ~0x36, ~0x072), "v,B,H", 0, v9a }, | ||
1997 | -{ "fxnors", F3F(2, 0x36, 0x073), F3F(~2, ~0x36, ~0x073), "e,f,g", 0, v9a }, | ||
1998 | -{ "fornot1", F3F(2, 0x36, 0x07a), F3F(~2, ~0x36, ~0x07a), "v,B,H", 0, v9a }, | ||
1999 | -{ "fornot1s", F3F(2, 0x36, 0x07b), F3F(~2, ~0x36, ~0x07b), "e,f,g", 0, v9a }, | ||
2000 | -{ "fornot2", F3F(2, 0x36, 0x076), F3F(~2, ~0x36, ~0x076), "v,B,H", 0, v9a }, | ||
2001 | -{ "fornot2s", F3F(2, 0x36, 0x077), F3F(~2, ~0x36, ~0x077), "e,f,g", 0, v9a }, | ||
2002 | -{ "fandnot1", F3F(2, 0x36, 0x068), F3F(~2, ~0x36, ~0x068), "v,B,H", 0, v9a }, | ||
2003 | -{ "fandnot1s", F3F(2, 0x36, 0x069), F3F(~2, ~0x36, ~0x069), "e,f,g", 0, v9a }, | ||
2004 | -{ "fandnot2", F3F(2, 0x36, 0x064), F3F(~2, ~0x36, ~0x064), "v,B,H", 0, v9a }, | ||
2005 | -{ "fandnot2s", F3F(2, 0x36, 0x065), F3F(~2, ~0x36, ~0x065), "e,f,g", 0, v9a }, | ||
2006 | - | ||
2007 | -{ "fcmpgt16", F3F(2, 0x36, 0x028), F3F(~2, ~0x36, ~0x028), "v,B,d", 0, v9a }, | ||
2008 | -{ "fcmpgt32", F3F(2, 0x36, 0x02c), F3F(~2, ~0x36, ~0x02c), "v,B,d", 0, v9a }, | ||
2009 | -{ "fcmple16", F3F(2, 0x36, 0x020), F3F(~2, ~0x36, ~0x020), "v,B,d", 0, v9a }, | ||
2010 | -{ "fcmple32", F3F(2, 0x36, 0x024), F3F(~2, ~0x36, ~0x024), "v,B,d", 0, v9a }, | ||
2011 | -{ "fcmpne16", F3F(2, 0x36, 0x022), F3F(~2, ~0x36, ~0x022), "v,B,d", 0, v9a }, | ||
2012 | -{ "fcmpne32", F3F(2, 0x36, 0x026), F3F(~2, ~0x36, ~0x026), "v,B,d", 0, v9a }, | ||
2013 | -{ "fcmpeq16", F3F(2, 0x36, 0x02a), F3F(~2, ~0x36, ~0x02a), "v,B,d", 0, v9a }, | ||
2014 | -{ "fcmpeq32", F3F(2, 0x36, 0x02e), F3F(~2, ~0x36, ~0x02e), "v,B,d", 0, v9a }, | ||
2015 | - | ||
2016 | -{ "edge8", F3F(2, 0x36, 0x000), F3F(~2, ~0x36, ~0x000), "1,2,d", 0, v9a }, | ||
2017 | -{ "edge8l", F3F(2, 0x36, 0x002), F3F(~2, ~0x36, ~0x002), "1,2,d", 0, v9a }, | ||
2018 | -{ "edge16", F3F(2, 0x36, 0x004), F3F(~2, ~0x36, ~0x004), "1,2,d", 0, v9a }, | ||
2019 | -{ "edge16l", F3F(2, 0x36, 0x006), F3F(~2, ~0x36, ~0x006), "1,2,d", 0, v9a }, | ||
2020 | -{ "edge32", F3F(2, 0x36, 0x008), F3F(~2, ~0x36, ~0x008), "1,2,d", 0, v9a }, | ||
2021 | -{ "edge32l", F3F(2, 0x36, 0x00a), F3F(~2, ~0x36, ~0x00a), "1,2,d", 0, v9a }, | ||
2022 | - | ||
2023 | -{ "pdist", F3F(2, 0x36, 0x03e), F3F(~2, ~0x36, ~0x03e), "v,B,H", 0, v9a }, | ||
2024 | - | ||
2025 | -{ "array8", F3F(2, 0x36, 0x010), F3F(~2, ~0x36, ~0x010), "1,2,d", 0, v9a }, | ||
2026 | -{ "array16", F3F(2, 0x36, 0x012), F3F(~2, ~0x36, ~0x012), "1,2,d", 0, v9a }, | ||
2027 | -{ "array32", F3F(2, 0x36, 0x014), F3F(~2, ~0x36, ~0x014), "1,2,d", 0, v9a }, | 1962 | +{ "fmul8x16", F3F(2, 0x36, 0x031), F3F(~2, ~0x36, ~0x031), "e,B,H", 0, v9a }, |
1963 | +{ "fmul8x16au", F3F(2, 0x36, 0x033), F3F(~2, ~0x36, ~0x033), "e,f,H", 0, v9a }, | ||
1964 | +{ "fmul8x16al", F3F(2, 0x36, 0x035), F3F(~2, ~0x36, ~0x035), "e,f,H", 0, v9a }, | ||
1965 | +{ "fmul8sux16", F3F(2, 0x36, 0x036), F3F(~2, ~0x36, ~0x036), "v,B,H", 0, v9a }, | ||
1966 | +{ "fmul8ulx16", F3F(2, 0x36, 0x037), F3F(~2, ~0x36, ~0x037), "v,B,H", 0, v9a }, | ||
1967 | +{ "fmuld8sux16", F3F(2, 0x36, 0x038), F3F(~2, ~0x36, ~0x038), "e,f,H", 0, v9a }, | ||
1968 | +{ "fmuld8ulx16", F3F(2, 0x36, 0x039), F3F(~2, ~0x36, ~0x039), "e,f,H", 0, v9a }, | ||
1969 | + | ||
1970 | +{ "alignaddr", F3F(2, 0x36, 0x018), F3F(~2, ~0x36, ~0x018), "1,2,d", 0, v9a }, | ||
1971 | +{ "alignaddrl", F3F(2, 0x36, 0x01a), F3F(~2, ~0x36, ~0x01a), "1,2,d", 0, v9a }, | ||
1972 | +{ "faligndata", F3F(2, 0x36, 0x048), F3F(~2, ~0x36, ~0x048), "v,B,H", 0, v9a }, | ||
1973 | + | ||
1974 | +{ "fzero", F3F(2, 0x36, 0x060), F3F(~2, ~0x36, ~0x060), "H", 0, v9a }, | ||
1975 | +{ "fzeros", F3F(2, 0x36, 0x061), F3F(~2, ~0x36, ~0x061), "g", 0, v9a }, | ||
1976 | +{ "fone", F3F(2, 0x36, 0x07e), F3F(~2, ~0x36, ~0x07e), "H", 0, v9a }, | ||
1977 | +{ "fones", F3F(2, 0x36, 0x07f), F3F(~2, ~0x36, ~0x07f), "g", 0, v9a }, | ||
1978 | +{ "fsrc1", F3F(2, 0x36, 0x074), F3F(~2, ~0x36, ~0x074), "v,H", 0, v9a }, | ||
1979 | +{ "fsrc1s", F3F(2, 0x36, 0x075), F3F(~2, ~0x36, ~0x075), "e,g", 0, v9a }, | ||
1980 | +{ "fsrc2", F3F(2, 0x36, 0x078), F3F(~2, ~0x36, ~0x078), "B,H", 0, v9a }, | ||
1981 | +{ "fsrc2s", F3F(2, 0x36, 0x079), F3F(~2, ~0x36, ~0x079), "f,g", 0, v9a }, | ||
1982 | +{ "fnot1", F3F(2, 0x36, 0x06a), F3F(~2, ~0x36, ~0x06a), "v,H", 0, v9a }, | ||
1983 | +{ "fnot1s", F3F(2, 0x36, 0x06b), F3F(~2, ~0x36, ~0x06b), "e,g", 0, v9a }, | ||
1984 | +{ "fnot2", F3F(2, 0x36, 0x066), F3F(~2, ~0x36, ~0x066), "B,H", 0, v9a }, | ||
1985 | +{ "fnot2s", F3F(2, 0x36, 0x067), F3F(~2, ~0x36, ~0x067), "f,g", 0, v9a }, | ||
1986 | +{ "for", F3F(2, 0x36, 0x07c), F3F(~2, ~0x36, ~0x07c), "v,B,H", 0, v9a }, | ||
1987 | +{ "fors", F3F(2, 0x36, 0x07d), F3F(~2, ~0x36, ~0x07d), "e,f,g", 0, v9a }, | ||
1988 | +{ "fnor", F3F(2, 0x36, 0x062), F3F(~2, ~0x36, ~0x062), "v,B,H", 0, v9a }, | ||
1989 | +{ "fnors", F3F(2, 0x36, 0x063), F3F(~2, ~0x36, ~0x063), "e,f,g", 0, v9a }, | ||
1990 | +{ "fand", F3F(2, 0x36, 0x070), F3F(~2, ~0x36, ~0x070), "v,B,H", 0, v9a }, | ||
1991 | +{ "fands", F3F(2, 0x36, 0x071), F3F(~2, ~0x36, ~0x071), "e,f,g", 0, v9a }, | ||
1992 | +{ "fnand", F3F(2, 0x36, 0x06e), F3F(~2, ~0x36, ~0x06e), "v,B,H", 0, v9a }, | ||
1993 | +{ "fnands", F3F(2, 0x36, 0x06f), F3F(~2, ~0x36, ~0x06f), "e,f,g", 0, v9a }, | ||
1994 | +{ "fxor", F3F(2, 0x36, 0x06c), F3F(~2, ~0x36, ~0x06c), "v,B,H", 0, v9a }, | ||
1995 | +{ "fxors", F3F(2, 0x36, 0x06d), F3F(~2, ~0x36, ~0x06d), "e,f,g", 0, v9a }, | ||
1996 | +{ "fxnor", F3F(2, 0x36, 0x072), F3F(~2, ~0x36, ~0x072), "v,B,H", 0, v9a }, | ||
1997 | +{ "fxnors", F3F(2, 0x36, 0x073), F3F(~2, ~0x36, ~0x073), "e,f,g", 0, v9a }, | ||
1998 | +{ "fornot1", F3F(2, 0x36, 0x07a), F3F(~2, ~0x36, ~0x07a), "v,B,H", 0, v9a }, | ||
1999 | +{ "fornot1s", F3F(2, 0x36, 0x07b), F3F(~2, ~0x36, ~0x07b), "e,f,g", 0, v9a }, | ||
2000 | +{ "fornot2", F3F(2, 0x36, 0x076), F3F(~2, ~0x36, ~0x076), "v,B,H", 0, v9a }, | ||
2001 | +{ "fornot2s", F3F(2, 0x36, 0x077), F3F(~2, ~0x36, ~0x077), "e,f,g", 0, v9a }, | ||
2002 | +{ "fandnot1", F3F(2, 0x36, 0x068), F3F(~2, ~0x36, ~0x068), "v,B,H", 0, v9a }, | ||
2003 | +{ "fandnot1s", F3F(2, 0x36, 0x069), F3F(~2, ~0x36, ~0x069), "e,f,g", 0, v9a }, | ||
2004 | +{ "fandnot2", F3F(2, 0x36, 0x064), F3F(~2, ~0x36, ~0x064), "v,B,H", 0, v9a }, | ||
2005 | +{ "fandnot2s", F3F(2, 0x36, 0x065), F3F(~2, ~0x36, ~0x065), "e,f,g", 0, v9a }, | ||
2006 | + | ||
2007 | +{ "fcmpgt16", F3F(2, 0x36, 0x028), F3F(~2, ~0x36, ~0x028), "v,B,d", 0, v9a }, | ||
2008 | +{ "fcmpgt32", F3F(2, 0x36, 0x02c), F3F(~2, ~0x36, ~0x02c), "v,B,d", 0, v9a }, | ||
2009 | +{ "fcmple16", F3F(2, 0x36, 0x020), F3F(~2, ~0x36, ~0x020), "v,B,d", 0, v9a }, | ||
2010 | +{ "fcmple32", F3F(2, 0x36, 0x024), F3F(~2, ~0x36, ~0x024), "v,B,d", 0, v9a }, | ||
2011 | +{ "fcmpne16", F3F(2, 0x36, 0x022), F3F(~2, ~0x36, ~0x022), "v,B,d", 0, v9a }, | ||
2012 | +{ "fcmpne32", F3F(2, 0x36, 0x026), F3F(~2, ~0x36, ~0x026), "v,B,d", 0, v9a }, | ||
2013 | +{ "fcmpeq16", F3F(2, 0x36, 0x02a), F3F(~2, ~0x36, ~0x02a), "v,B,d", 0, v9a }, | ||
2014 | +{ "fcmpeq32", F3F(2, 0x36, 0x02e), F3F(~2, ~0x36, ~0x02e), "v,B,d", 0, v9a }, | ||
2015 | + | ||
2016 | +{ "edge8", F3F(2, 0x36, 0x000), F3F(~2, ~0x36, ~0x000), "1,2,d", 0, v9a }, | ||
2017 | +{ "edge8l", F3F(2, 0x36, 0x002), F3F(~2, ~0x36, ~0x002), "1,2,d", 0, v9a }, | ||
2018 | +{ "edge16", F3F(2, 0x36, 0x004), F3F(~2, ~0x36, ~0x004), "1,2,d", 0, v9a }, | ||
2019 | +{ "edge16l", F3F(2, 0x36, 0x006), F3F(~2, ~0x36, ~0x006), "1,2,d", 0, v9a }, | ||
2020 | +{ "edge32", F3F(2, 0x36, 0x008), F3F(~2, ~0x36, ~0x008), "1,2,d", 0, v9a }, | ||
2021 | +{ "edge32l", F3F(2, 0x36, 0x00a), F3F(~2, ~0x36, ~0x00a), "1,2,d", 0, v9a }, | ||
2022 | + | ||
2023 | +{ "pdist", F3F(2, 0x36, 0x03e), F3F(~2, ~0x36, ~0x03e), "v,B,H", 0, v9a }, | ||
2024 | + | ||
2025 | +{ "array8", F3F(2, 0x36, 0x010), F3F(~2, ~0x36, ~0x010), "1,2,d", 0, v9a }, | ||
2026 | +{ "array16", F3F(2, 0x36, 0x012), F3F(~2, ~0x36, ~0x012), "1,2,d", 0, v9a }, | ||
2027 | +{ "array32", F3F(2, 0x36, 0x014), F3F(~2, ~0x36, ~0x014), "1,2,d", 0, v9a }, | ||
2028 | 2028 | ||
2029 | /* Cheetah instructions */ | 2029 | /* Cheetah instructions */ |
2030 | { "edge8n", F3F(2, 0x36, 0x001), F3F(~2, ~0x36, ~0x001), "1,2,d", 0, v9b }, | 2030 | { "edge8n", F3F(2, 0x36, 0x001), F3F(~2, ~0x36, ~0x001), "1,2,d", 0, v9b }, |
@@ -2043,8 +2043,8 @@ SLCBCC("cbnefr", 15), | @@ -2043,8 +2043,8 @@ SLCBCC("cbnefr", 15), | ||
2043 | with v9a instructions such as "edge8" which looks like impdep1. */ | 2043 | with v9a instructions such as "edge8" which looks like impdep1. */ |
2044 | 2044 | ||
2045 | #define IMPDEP(name, code) \ | 2045 | #define IMPDEP(name, code) \ |
2046 | -{ name, F3(2, code, 0), F3(~2, ~code, ~0)|ASI(~0), "1,2,d", 0, v9notv9a }, \ | ||
2047 | -{ name, F3(2, code, 1), F3(~2, ~code, ~1), "1,i,d", 0, v9notv9a }, \ | 2046 | +{ name, F3(2, code, 0), F3(~2, ~code, ~0)|ASI(~0), "1,2,d", 0, v9notv9a }, \ |
2047 | +{ name, F3(2, code, 1), F3(~2, ~code, ~1), "1,i,d", 0, v9notv9a }, \ | ||
2048 | { name, F3(2, code, 0), F3(~2, ~code, ~0), "x,1,2,d", 0, v9notv9a }, \ | 2048 | { name, F3(2, code, 0), F3(~2, ~code, ~0), "x,1,2,d", 0, v9notv9a }, \ |
2049 | { name, F3(2, code, 0), F3(~2, ~code, ~0), "x,e,f,g", 0, v9notv9a } | 2049 | { name, F3(2, code, 0), F3(~2, ~code, ~0), "x,e,f,g", 0, v9notv9a } |
2050 | 2050 | ||
@@ -2303,8 +2303,8 @@ sparc_decode_sparclet_cpreg (value) | @@ -2303,8 +2303,8 @@ sparc_decode_sparclet_cpreg (value) | ||
2303 | 2303 | ||
2304 | /* Bitmask of v9 architectures. */ | 2304 | /* Bitmask of v9 architectures. */ |
2305 | #define MASK_V9 ((1 << SPARC_OPCODE_ARCH_V9) \ | 2305 | #define MASK_V9 ((1 << SPARC_OPCODE_ARCH_V9) \ |
2306 | - | (1 << SPARC_OPCODE_ARCH_V9A) \ | ||
2307 | - | (1 << SPARC_OPCODE_ARCH_V9B)) | 2306 | + | (1 << SPARC_OPCODE_ARCH_V9A) \ |
2307 | + | (1 << SPARC_OPCODE_ARCH_V9B)) | ||
2308 | /* 1 if INSN is for v9 only. */ | 2308 | /* 1 if INSN is for v9 only. */ |
2309 | #define V9_ONLY_P(insn) (! ((insn)->architecture & ~MASK_V9)) | 2309 | #define V9_ONLY_P(insn) (! ((insn)->architecture & ~MASK_V9)) |
2310 | /* 1 if INSN is for v9. */ | 2310 | /* 1 if INSN is for v9. */ |
@@ -2336,9 +2336,9 @@ static int compare_opcodes PARAMS ((const void *, const void *)); | @@ -2336,9 +2336,9 @@ static int compare_opcodes PARAMS ((const void *, const void *)); | ||
2336 | static int compute_arch_mask PARAMS ((unsigned long)); | 2336 | static int compute_arch_mask PARAMS ((unsigned long)); |
2337 | 2337 | ||
2338 | /* Sign-extend a value which is N bits long. */ | 2338 | /* Sign-extend a value which is N bits long. */ |
2339 | -#define SEX(value, bits) \ | ||
2340 | - ((((int)(value)) << ((8 * sizeof (int)) - bits)) \ | ||
2341 | - >> ((8 * sizeof (int)) - bits) ) | 2339 | +#define SEX(value, bits) \ |
2340 | + ((((int)(value)) << ((8 * sizeof (int)) - bits)) \ | ||
2341 | + >> ((8 * sizeof (int)) - bits) ) | ||
2342 | 2342 | ||
2343 | static const char * const reg_names[] = | 2343 | static const char * const reg_names[] = |
2344 | { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7", | 2344 | { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7", |
@@ -2357,7 +2357,7 @@ static const char * const reg_names[] = | @@ -2357,7 +2357,7 @@ static const char * const reg_names[] = | ||
2357 | "y", "psr", "wim", "tbr", "pc", "npc", "fpsr", "cpsr" | 2357 | "y", "psr", "wim", "tbr", "pc", "npc", "fpsr", "cpsr" |
2358 | }; | 2358 | }; |
2359 | 2359 | ||
2360 | -#define freg_names (®_names[4 * 8]) | 2360 | +#define freg_names (®_names[4 * 8]) |
2361 | 2361 | ||
2362 | /* These are ordered according to there register number in | 2362 | /* These are ordered according to there register number in |
2363 | rdpr and wrpr insns. */ | 2363 | rdpr and wrpr insns. */ |
@@ -2403,55 +2403,55 @@ static const char * const v9a_asr_reg_names[] = | @@ -2403,55 +2403,55 @@ static const char * const v9a_asr_reg_names[] = | ||
2403 | { | 2403 | { |
2404 | unsigned long int code; | 2404 | unsigned long int code; |
2405 | struct | 2405 | struct |
2406 | - { | ||
2407 | - unsigned int anop:2; | ||
2408 | - #define op ldst.anop | ||
2409 | - unsigned int anrd:5; | ||
2410 | - #define rd ldst.anrd | ||
2411 | - unsigned int op3:6; | ||
2412 | - unsigned int anrs1:5; | ||
2413 | - #define rs1 ldst.anrs1 | ||
2414 | - unsigned int i:1; | ||
2415 | - unsigned int anasi:8; | ||
2416 | - #define asi ldst.anasi | ||
2417 | - unsigned int anrs2:5; | ||
2418 | - #define rs2 ldst.anrs2 | ||
2419 | - #define shcnt rs2 | ||
2420 | - } ldst; | 2406 | + { |
2407 | + unsigned int anop:2; | ||
2408 | + #define op ldst.anop | ||
2409 | + unsigned int anrd:5; | ||
2410 | + #define rd ldst.anrd | ||
2411 | + unsigned int op3:6; | ||
2412 | + unsigned int anrs1:5; | ||
2413 | + #define rs1 ldst.anrs1 | ||
2414 | + unsigned int i:1; | ||
2415 | + unsigned int anasi:8; | ||
2416 | + #define asi ldst.anasi | ||
2417 | + unsigned int anrs2:5; | ||
2418 | + #define rs2 ldst.anrs2 | ||
2419 | + #define shcnt rs2 | ||
2420 | + } ldst; | ||
2421 | struct | 2421 | struct |
2422 | - { | ||
2423 | - unsigned int anop:2, anrd:5, op3:6, anrs1:5, i:1; | ||
2424 | - unsigned int IMM13:13; | ||
2425 | - #define imm13 IMM13.IMM13 | ||
2426 | - } IMM13; | 2422 | + { |
2423 | + unsigned int anop:2, anrd:5, op3:6, anrs1:5, i:1; | ||
2424 | + unsigned int IMM13:13; | ||
2425 | + #define imm13 IMM13.IMM13 | ||
2426 | + } IMM13; | ||
2427 | struct | 2427 | struct |
2428 | - { | ||
2429 | - unsigned int anop:2; | ||
2430 | - unsigned int a:1; | ||
2431 | - unsigned int cond:4; | ||
2432 | - unsigned int op2:3; | ||
2433 | - unsigned int DISP22:22; | ||
2434 | - #define disp22 branch.DISP22 | ||
2435 | - #define imm22 disp22 | ||
2436 | - } branch; | 2428 | + { |
2429 | + unsigned int anop:2; | ||
2430 | + unsigned int a:1; | ||
2431 | + unsigned int cond:4; | ||
2432 | + unsigned int op2:3; | ||
2433 | + unsigned int DISP22:22; | ||
2434 | + #define disp22 branch.DISP22 | ||
2435 | + #define imm22 disp22 | ||
2436 | + } branch; | ||
2437 | struct | 2437 | struct |
2438 | - { | ||
2439 | - unsigned int anop:2; | ||
2440 | - unsigned int a:1; | ||
2441 | - unsigned int z:1; | ||
2442 | - unsigned int rcond:3; | ||
2443 | - unsigned int op2:3; | ||
2444 | - unsigned int DISP16HI:2; | ||
2445 | - unsigned int p:1; | ||
2446 | - unsigned int _rs1:5; | ||
2447 | - unsigned int DISP16LO:14; | ||
2448 | - } branch16; | 2438 | + { |
2439 | + unsigned int anop:2; | ||
2440 | + unsigned int a:1; | ||
2441 | + unsigned int z:1; | ||
2442 | + unsigned int rcond:3; | ||
2443 | + unsigned int op2:3; | ||
2444 | + unsigned int DISP16HI:2; | ||
2445 | + unsigned int p:1; | ||
2446 | + unsigned int _rs1:5; | ||
2447 | + unsigned int DISP16LO:14; | ||
2448 | + } branch16; | ||
2449 | struct | 2449 | struct |
2450 | - { | ||
2451 | - unsigned int anop:2; | ||
2452 | - unsigned int adisp30:30; | ||
2453 | - #define disp30 call.adisp30 | ||
2454 | - } call; | 2450 | + { |
2451 | + unsigned int anop:2; | ||
2452 | + unsigned int adisp30:30; | ||
2453 | + #define disp30 call.adisp30 | ||
2454 | + } call; | ||
2455 | }; | 2455 | }; |
2456 | 2456 | ||
2457 | */ | 2457 | */ |
@@ -2467,8 +2467,8 @@ is_delayed_branch (insn) | @@ -2467,8 +2467,8 @@ is_delayed_branch (insn) | ||
2467 | { | 2467 | { |
2468 | const struct sparc_opcode *opcode = op->opcode; | 2468 | const struct sparc_opcode *opcode = op->opcode; |
2469 | if ((opcode->match & insn) == opcode->match | 2469 | if ((opcode->match & insn) == opcode->match |
2470 | - && (opcode->lose & insn) == 0) | ||
2471 | - return (opcode->flags & F_DELAYED); | 2470 | + && (opcode->lose & insn) == 0) |
2471 | + return (opcode->flags & F_DELAYED); | ||
2472 | } | 2472 | } |
2473 | return 0; | 2473 | return 0; |
2474 | } | 2474 | } |
@@ -2510,13 +2510,13 @@ print_insn_sparc (memaddr, info) | @@ -2510,13 +2510,13 @@ print_insn_sparc (memaddr, info) | ||
2510 | current_arch_mask = compute_arch_mask (info->mach); | 2510 | current_arch_mask = compute_arch_mask (info->mach); |
2511 | 2511 | ||
2512 | if (!opcodes_initialized) | 2512 | if (!opcodes_initialized) |
2513 | - sorted_opcodes = (const struct sparc_opcode **) | 2513 | + sorted_opcodes = (const struct sparc_opcode **) |
2514 | malloc (sparc_num_opcodes * sizeof (struct sparc_opcode *)); | 2514 | malloc (sparc_num_opcodes * sizeof (struct sparc_opcode *)); |
2515 | /* Reset the sorted table so we can resort it. */ | 2515 | /* Reset the sorted table so we can resort it. */ |
2516 | for (i = 0; i < sparc_num_opcodes; ++i) | 2516 | for (i = 0; i < sparc_num_opcodes; ++i) |
2517 | - sorted_opcodes[i] = &sparc_opcodes[i]; | 2517 | + sorted_opcodes[i] = &sparc_opcodes[i]; |
2518 | qsort ((char *) sorted_opcodes, sparc_num_opcodes, | 2518 | qsort ((char *) sorted_opcodes, sparc_num_opcodes, |
2519 | - sizeof (sorted_opcodes[0]), compare_opcodes); | 2519 | + sizeof (sorted_opcodes[0]), compare_opcodes); |
2520 | 2520 | ||
2521 | build_hash_table (sorted_opcodes, opcode_hash_table, sparc_num_opcodes); | 2521 | build_hash_table (sorted_opcodes, opcode_hash_table, sparc_num_opcodes); |
2522 | current_mach = info->mach; | 2522 | current_mach = info->mach; |
@@ -2528,8 +2528,8 @@ print_insn_sparc (memaddr, info) | @@ -2528,8 +2528,8 @@ print_insn_sparc (memaddr, info) | ||
2528 | (*info->read_memory_func) (memaddr, buffer, sizeof (buffer), info); | 2528 | (*info->read_memory_func) (memaddr, buffer, sizeof (buffer), info); |
2529 | if (status != 0) | 2529 | if (status != 0) |
2530 | { | 2530 | { |
2531 | - (*info->memory_error_func) (status, memaddr, info); | ||
2532 | - return -1; | 2531 | + (*info->memory_error_func) (status, memaddr, info); |
2532 | + return -1; | ||
2533 | } | 2533 | } |
2534 | } | 2534 | } |
2535 | 2535 | ||
@@ -2542,10 +2542,10 @@ print_insn_sparc (memaddr, info) | @@ -2542,10 +2542,10 @@ print_insn_sparc (memaddr, info) | ||
2542 | 2542 | ||
2543 | insn = getword (buffer); | 2543 | insn = getword (buffer); |
2544 | 2544 | ||
2545 | - info->insn_info_valid = 1; /* We do return this info */ | ||
2546 | - info->insn_type = dis_nonbranch; /* Assume non branch insn */ | ||
2547 | - info->branch_delay_insns = 0; /* Assume no delay */ | ||
2548 | - info->target = 0; /* Assume no target known */ | 2545 | + info->insn_info_valid = 1; /* We do return this info */ |
2546 | + info->insn_type = dis_nonbranch; /* Assume non branch insn */ | ||
2547 | + info->branch_delay_insns = 0; /* Assume no delay */ | ||
2548 | + info->target = 0; /* Assume no target known */ | ||
2549 | 2549 | ||
2550 | for (op = opcode_hash_table[HASH_INSN (insn)]; op; op = op->next) | 2550 | for (op = opcode_hash_table[HASH_INSN (insn)]; op; op = op->next) |
2551 | { | 2551 | { |
@@ -2553,484 +2553,484 @@ print_insn_sparc (memaddr, info) | @@ -2553,484 +2553,484 @@ print_insn_sparc (memaddr, info) | ||
2553 | 2553 | ||
2554 | /* If the insn isn't supported by the current architecture, skip it. */ | 2554 | /* If the insn isn't supported by the current architecture, skip it. */ |
2555 | if (! (opcode->architecture & current_arch_mask)) | 2555 | if (! (opcode->architecture & current_arch_mask)) |
2556 | - continue; | 2556 | + continue; |
2557 | 2557 | ||
2558 | if ((opcode->match & insn) == opcode->match | 2558 | if ((opcode->match & insn) == opcode->match |
2559 | - && (opcode->lose & insn) == 0) | ||
2560 | - { | ||
2561 | - /* Nonzero means that we have found an instruction which has | ||
2562 | - the effect of adding or or'ing the imm13 field to rs1. */ | ||
2563 | - int imm_added_to_rs1 = 0; | ||
2564 | - int imm_ored_to_rs1 = 0; | 2559 | + && (opcode->lose & insn) == 0) |
2560 | + { | ||
2561 | + /* Nonzero means that we have found an instruction which has | ||
2562 | + the effect of adding or or'ing the imm13 field to rs1. */ | ||
2563 | + int imm_added_to_rs1 = 0; | ||
2564 | + int imm_ored_to_rs1 = 0; | ||
2565 | 2565 | ||
2566 | - /* Nonzero means that we have found a plus sign in the args | ||
2567 | - field of the opcode table. */ | ||
2568 | - int found_plus = 0; | 2566 | + /* Nonzero means that we have found a plus sign in the args |
2567 | + field of the opcode table. */ | ||
2568 | + int found_plus = 0; | ||
2569 | 2569 | ||
2570 | - /* Nonzero means we have an annulled branch. */ | ||
2571 | - int is_annulled = 0; | 2570 | + /* Nonzero means we have an annulled branch. */ |
2571 | + int is_annulled = 0; | ||
2572 | 2572 | ||
2573 | - /* Do we have an `add' or `or' instruction combining an | 2573 | + /* Do we have an `add' or `or' instruction combining an |
2574 | immediate with rs1? */ | 2574 | immediate with rs1? */ |
2575 | - if (opcode->match == 0x80102000) /* or */ | ||
2576 | - imm_ored_to_rs1 = 1; | ||
2577 | - if (opcode->match == 0x80002000) /* add */ | ||
2578 | - imm_added_to_rs1 = 1; | ||
2579 | - | ||
2580 | - if (X_RS1 (insn) != X_RD (insn) | ||
2581 | - && strchr (opcode->args, 'r') != 0) | ||
2582 | - /* Can't do simple format if source and dest are different. */ | ||
2583 | - continue; | ||
2584 | - if (X_RS2 (insn) != X_RD (insn) | ||
2585 | - && strchr (opcode->args, 'O') != 0) | ||
2586 | - /* Can't do simple format if source and dest are different. */ | ||
2587 | - continue; | ||
2588 | - | ||
2589 | - (*info->fprintf_func) (stream, opcode->name); | ||
2590 | - | ||
2591 | - { | ||
2592 | - register const char *s; | ||
2593 | - | ||
2594 | - if (opcode->args[0] != ',') | ||
2595 | - (*info->fprintf_func) (stream, " "); | ||
2596 | - for (s = opcode->args; *s != '\0'; ++s) | ||
2597 | - { | ||
2598 | - while (*s == ',') | ||
2599 | - { | ||
2600 | - (*info->fprintf_func) (stream, ","); | ||
2601 | - ++s; | ||
2602 | - switch (*s) { | ||
2603 | - case 'a': | ||
2604 | - (*info->fprintf_func) (stream, "a"); | ||
2605 | - is_annulled = 1; | ||
2606 | - ++s; | ||
2607 | - continue; | ||
2608 | - case 'N': | ||
2609 | - (*info->fprintf_func) (stream, "pn"); | ||
2610 | - ++s; | ||
2611 | - continue; | ||
2612 | - | ||
2613 | - case 'T': | ||
2614 | - (*info->fprintf_func) (stream, "pt"); | ||
2615 | - ++s; | ||
2616 | - continue; | ||
2617 | - | ||
2618 | - default: | ||
2619 | - break; | ||
2620 | - } /* switch on arg */ | ||
2621 | - } /* while there are comma started args */ | ||
2622 | - | ||
2623 | - (*info->fprintf_func) (stream, " "); | ||
2624 | - | ||
2625 | - switch (*s) | ||
2626 | - { | ||
2627 | - case '+': | ||
2628 | - found_plus = 1; | ||
2629 | - | ||
2630 | - /* note fall-through */ | ||
2631 | - default: | ||
2632 | - (*info->fprintf_func) (stream, "%c", *s); | ||
2633 | - break; | ||
2634 | - | ||
2635 | - case '#': | ||
2636 | - (*info->fprintf_func) (stream, "0"); | ||
2637 | - break; | ||
2638 | - | ||
2639 | -#define reg(n) (*info->fprintf_func) (stream, "%%%s", reg_names[n]) | ||
2640 | - case '1': | ||
2641 | - case 'r': | ||
2642 | - reg (X_RS1 (insn)); | ||
2643 | - break; | ||
2644 | - | ||
2645 | - case '2': | ||
2646 | - case 'O': | ||
2647 | - reg (X_RS2 (insn)); | ||
2648 | - break; | ||
2649 | - | ||
2650 | - case 'd': | ||
2651 | - reg (X_RD (insn)); | ||
2652 | - break; | ||
2653 | -#undef reg | ||
2654 | - | ||
2655 | -#define freg(n) (*info->fprintf_func) (stream, "%%%s", freg_names[n]) | ||
2656 | -#define fregx(n) (*info->fprintf_func) (stream, "%%%s", freg_names[((n) & ~1) | (((n) & 1) << 5)]) | ||
2657 | - case 'e': | ||
2658 | - freg (X_RS1 (insn)); | ||
2659 | - break; | ||
2660 | - case 'v': /* double/even */ | ||
2661 | - case 'V': /* quad/multiple of 4 */ | ||
2662 | - fregx (X_RS1 (insn)); | ||
2663 | - break; | ||
2664 | - | ||
2665 | - case 'f': | ||
2666 | - freg (X_RS2 (insn)); | ||
2667 | - break; | ||
2668 | - case 'B': /* double/even */ | ||
2669 | - case 'R': /* quad/multiple of 4 */ | ||
2670 | - fregx (X_RS2 (insn)); | ||
2671 | - break; | ||
2672 | - | ||
2673 | - case 'g': | ||
2674 | - freg (X_RD (insn)); | ||
2675 | - break; | ||
2676 | - case 'H': /* double/even */ | ||
2677 | - case 'J': /* quad/multiple of 4 */ | ||
2678 | - fregx (X_RD (insn)); | ||
2679 | - break; | ||
2680 | -#undef freg | ||
2681 | -#undef fregx | ||
2682 | - | ||
2683 | -#define creg(n) (*info->fprintf_func) (stream, "%%c%u", (unsigned int) (n)) | ||
2684 | - case 'b': | ||
2685 | - creg (X_RS1 (insn)); | ||
2686 | - break; | ||
2687 | - | ||
2688 | - case 'c': | ||
2689 | - creg (X_RS2 (insn)); | ||
2690 | - break; | ||
2691 | - | ||
2692 | - case 'D': | ||
2693 | - creg (X_RD (insn)); | ||
2694 | - break; | ||
2695 | -#undef creg | ||
2696 | - | ||
2697 | - case 'h': | ||
2698 | - (*info->fprintf_func) (stream, "%%hi(%#x)", | ||
2699 | - ((unsigned) 0xFFFFFFFF | ||
2700 | - & ((int) X_IMM22 (insn) << 10))); | ||
2701 | - break; | ||
2702 | - | ||
2703 | - case 'i': /* 13 bit immediate */ | ||
2704 | - case 'I': /* 11 bit immediate */ | ||
2705 | - case 'j': /* 10 bit immediate */ | ||
2706 | - { | ||
2707 | - int imm; | ||
2708 | - | ||
2709 | - if (*s == 'i') | ||
2710 | - imm = X_SIMM (insn, 13); | ||
2711 | - else if (*s == 'I') | ||
2712 | - imm = X_SIMM (insn, 11); | ||
2713 | - else | ||
2714 | - imm = X_SIMM (insn, 10); | ||
2715 | - | ||
2716 | - /* Check to see whether we have a 1+i, and take | ||
2717 | - note of that fact. | ||
2718 | - | ||
2719 | - Note: because of the way we sort the table, | ||
2720 | - we will be matching 1+i rather than i+1, | ||
2721 | - so it is OK to assume that i is after +, | ||
2722 | - not before it. */ | ||
2723 | - if (found_plus) | ||
2724 | - imm_added_to_rs1 = 1; | ||
2725 | - | ||
2726 | - if (imm <= 9) | ||
2727 | - (*info->fprintf_func) (stream, "%d", imm); | ||
2728 | - else | ||
2729 | - (*info->fprintf_func) (stream, "%#x", imm); | ||
2730 | - } | ||
2731 | - break; | ||
2732 | - | ||
2733 | - case 'X': /* 5 bit unsigned immediate */ | ||
2734 | - case 'Y': /* 6 bit unsigned immediate */ | ||
2735 | - { | ||
2736 | - int imm = X_IMM (insn, *s == 'X' ? 5 : 6); | ||
2737 | - | ||
2738 | - if (imm <= 9) | ||
2739 | - (info->fprintf_func) (stream, "%d", imm); | ||
2740 | - else | ||
2741 | - (info->fprintf_func) (stream, "%#x", (unsigned) imm); | ||
2742 | - } | ||
2743 | - break; | ||
2744 | - | ||
2745 | - case '3': | ||
2746 | - (info->fprintf_func) (stream, "%d", X_IMM (insn, 3)); | ||
2747 | - break; | ||
2748 | - | ||
2749 | - case 'K': | ||
2750 | - { | ||
2751 | - int mask = X_MEMBAR (insn); | ||
2752 | - int bit = 0x40, printed_one = 0; | ||
2753 | - const char *name; | ||
2754 | - | ||
2755 | - if (mask == 0) | ||
2756 | - (info->fprintf_func) (stream, "0"); | ||
2757 | - else | ||
2758 | - while (bit) | ||
2759 | - { | ||
2760 | - if (mask & bit) | ||
2761 | - { | ||
2762 | - if (printed_one) | ||
2763 | - (info->fprintf_func) (stream, "|"); | ||
2764 | - name = sparc_decode_membar (bit); | ||
2765 | - (info->fprintf_func) (stream, "%s", name); | ||
2766 | - printed_one = 1; | ||
2767 | - } | ||
2768 | - bit >>= 1; | ||
2769 | - } | ||
2770 | - break; | ||
2771 | - } | ||
2772 | - | ||
2773 | - case 'k': | ||
2774 | - info->target = memaddr + SEX (X_DISP16 (insn), 16) * 4; | ||
2775 | - (*info->print_address_func) (info->target, info); | ||
2776 | - break; | ||
2777 | - | ||
2778 | - case 'G': | ||
2779 | - info->target = memaddr + SEX (X_DISP19 (insn), 19) * 4; | ||
2780 | - (*info->print_address_func) (info->target, info); | ||
2781 | - break; | ||
2782 | - | ||
2783 | - case '6': | ||
2784 | - case '7': | ||
2785 | - case '8': | ||
2786 | - case '9': | ||
2787 | - (*info->fprintf_func) (stream, "%%fcc%c", *s - '6' + '0'); | ||
2788 | - break; | ||
2789 | - | ||
2790 | - case 'z': | ||
2791 | - (*info->fprintf_func) (stream, "%%icc"); | ||
2792 | - break; | ||
2793 | - | ||
2794 | - case 'Z': | ||
2795 | - (*info->fprintf_func) (stream, "%%xcc"); | ||
2796 | - break; | ||
2797 | - | ||
2798 | - case 'E': | ||
2799 | - (*info->fprintf_func) (stream, "%%ccr"); | ||
2800 | - break; | ||
2801 | - | ||
2802 | - case 's': | ||
2803 | - (*info->fprintf_func) (stream, "%%fprs"); | ||
2804 | - break; | ||
2805 | - | ||
2806 | - case 'o': | ||
2807 | - (*info->fprintf_func) (stream, "%%asi"); | ||
2808 | - break; | ||
2809 | - | ||
2810 | - case 'W': | ||
2811 | - (*info->fprintf_func) (stream, "%%tick"); | ||
2812 | - break; | ||
2813 | - | ||
2814 | - case 'P': | ||
2815 | - (*info->fprintf_func) (stream, "%%pc"); | ||
2816 | - break; | ||
2817 | - | ||
2818 | - case '?': | ||
2819 | - if (X_RS1 (insn) == 31) | ||
2820 | - (*info->fprintf_func) (stream, "%%ver"); | ||
2821 | - else if ((unsigned) X_RS1 (insn) < 16) | ||
2822 | - (*info->fprintf_func) (stream, "%%%s", | ||
2823 | - v9_priv_reg_names[X_RS1 (insn)]); | ||
2824 | - else | ||
2825 | - (*info->fprintf_func) (stream, "%%reserved"); | ||
2826 | - break; | ||
2827 | - | ||
2828 | - case '!': | ||
2829 | - if ((unsigned) X_RD (insn) < 15) | ||
2830 | - (*info->fprintf_func) (stream, "%%%s", | ||
2831 | - v9_priv_reg_names[X_RD (insn)]); | ||
2832 | - else | ||
2833 | - (*info->fprintf_func) (stream, "%%reserved"); | ||
2834 | - break; | ||
2835 | - | ||
2836 | - case '/': | ||
2837 | - if (X_RS1 (insn) < 16 || X_RS1 (insn) > 25) | ||
2838 | - (*info->fprintf_func) (stream, "%%reserved"); | ||
2839 | - else | ||
2840 | - (*info->fprintf_func) (stream, "%%%s", | ||
2841 | - v9a_asr_reg_names[X_RS1 (insn)-16]); | ||
2842 | - break; | ||
2843 | - | ||
2844 | - case '_': | ||
2845 | - if (X_RD (insn) < 16 || X_RD (insn) > 25) | ||
2846 | - (*info->fprintf_func) (stream, "%%reserved"); | ||
2847 | - else | ||
2848 | - (*info->fprintf_func) (stream, "%%%s", | ||
2849 | - v9a_asr_reg_names[X_RD (insn)-16]); | ||
2850 | - break; | ||
2851 | - | ||
2852 | - case '*': | ||
2853 | - { | ||
2854 | - const char *name = sparc_decode_prefetch (X_RD (insn)); | ||
2855 | - | ||
2856 | - if (name) | ||
2857 | - (*info->fprintf_func) (stream, "%s", name); | ||
2858 | - else | ||
2859 | - (*info->fprintf_func) (stream, "%d", X_RD (insn)); | ||
2860 | - break; | ||
2861 | - } | ||
2862 | - | ||
2863 | - case 'M': | ||
2864 | - (*info->fprintf_func) (stream, "%%asr%d", X_RS1 (insn)); | ||
2865 | - break; | ||
2866 | - | ||
2867 | - case 'm': | ||
2868 | - (*info->fprintf_func) (stream, "%%asr%d", X_RD (insn)); | ||
2869 | - break; | ||
2870 | - | ||
2871 | - case 'L': | ||
2872 | - info->target = memaddr + SEX (X_DISP30 (insn), 30) * 4; | ||
2873 | - (*info->print_address_func) (info->target, info); | ||
2874 | - break; | ||
2875 | - | ||
2876 | - case 'n': | ||
2877 | - (*info->fprintf_func) | ||
2878 | - (stream, "%#x", SEX (X_DISP22 (insn), 22)); | ||
2879 | - break; | ||
2880 | - | ||
2881 | - case 'l': | ||
2882 | - info->target = memaddr + SEX (X_DISP22 (insn), 22) * 4; | ||
2883 | - (*info->print_address_func) (info->target, info); | ||
2884 | - break; | ||
2885 | - | ||
2886 | - case 'A': | ||
2887 | - { | ||
2888 | - const char *name; | ||
2889 | - | ||
2890 | - if ((info->mach == bfd_mach_sparc_v8plusa) || | 2575 | + if (opcode->match == 0x80102000) /* or */ |
2576 | + imm_ored_to_rs1 = 1; | ||
2577 | + if (opcode->match == 0x80002000) /* add */ | ||
2578 | + imm_added_to_rs1 = 1; | ||
2579 | + | ||
2580 | + if (X_RS1 (insn) != X_RD (insn) | ||
2581 | + && strchr (opcode->args, 'r') != 0) | ||
2582 | + /* Can't do simple format if source and dest are different. */ | ||
2583 | + continue; | ||
2584 | + if (X_RS2 (insn) != X_RD (insn) | ||
2585 | + && strchr (opcode->args, 'O') != 0) | ||
2586 | + /* Can't do simple format if source and dest are different. */ | ||
2587 | + continue; | ||
2588 | + | ||
2589 | + (*info->fprintf_func) (stream, opcode->name); | ||
2590 | + | ||
2591 | + { | ||
2592 | + register const char *s; | ||
2593 | + | ||
2594 | + if (opcode->args[0] != ',') | ||
2595 | + (*info->fprintf_func) (stream, " "); | ||
2596 | + for (s = opcode->args; *s != '\0'; ++s) | ||
2597 | + { | ||
2598 | + while (*s == ',') | ||
2599 | + { | ||
2600 | + (*info->fprintf_func) (stream, ","); | ||
2601 | + ++s; | ||
2602 | + switch (*s) { | ||
2603 | + case 'a': | ||
2604 | + (*info->fprintf_func) (stream, "a"); | ||
2605 | + is_annulled = 1; | ||
2606 | + ++s; | ||
2607 | + continue; | ||
2608 | + case 'N': | ||
2609 | + (*info->fprintf_func) (stream, "pn"); | ||
2610 | + ++s; | ||
2611 | + continue; | ||
2612 | + | ||
2613 | + case 'T': | ||
2614 | + (*info->fprintf_func) (stream, "pt"); | ||
2615 | + ++s; | ||
2616 | + continue; | ||
2617 | + | ||
2618 | + default: | ||
2619 | + break; | ||
2620 | + } /* switch on arg */ | ||
2621 | + } /* while there are comma started args */ | ||
2622 | + | ||
2623 | + (*info->fprintf_func) (stream, " "); | ||
2624 | + | ||
2625 | + switch (*s) | ||
2626 | + { | ||
2627 | + case '+': | ||
2628 | + found_plus = 1; | ||
2629 | + | ||
2630 | + /* note fall-through */ | ||
2631 | + default: | ||
2632 | + (*info->fprintf_func) (stream, "%c", *s); | ||
2633 | + break; | ||
2634 | + | ||
2635 | + case '#': | ||
2636 | + (*info->fprintf_func) (stream, "0"); | ||
2637 | + break; | ||
2638 | + | ||
2639 | +#define reg(n) (*info->fprintf_func) (stream, "%%%s", reg_names[n]) | ||
2640 | + case '1': | ||
2641 | + case 'r': | ||
2642 | + reg (X_RS1 (insn)); | ||
2643 | + break; | ||
2644 | + | ||
2645 | + case '2': | ||
2646 | + case 'O': | ||
2647 | + reg (X_RS2 (insn)); | ||
2648 | + break; | ||
2649 | + | ||
2650 | + case 'd': | ||
2651 | + reg (X_RD (insn)); | ||
2652 | + break; | ||
2653 | +#undef reg | ||
2654 | + | ||
2655 | +#define freg(n) (*info->fprintf_func) (stream, "%%%s", freg_names[n]) | ||
2656 | +#define fregx(n) (*info->fprintf_func) (stream, "%%%s", freg_names[((n) & ~1) | (((n) & 1) << 5)]) | ||
2657 | + case 'e': | ||
2658 | + freg (X_RS1 (insn)); | ||
2659 | + break; | ||
2660 | + case 'v': /* double/even */ | ||
2661 | + case 'V': /* quad/multiple of 4 */ | ||
2662 | + fregx (X_RS1 (insn)); | ||
2663 | + break; | ||
2664 | + | ||
2665 | + case 'f': | ||
2666 | + freg (X_RS2 (insn)); | ||
2667 | + break; | ||
2668 | + case 'B': /* double/even */ | ||
2669 | + case 'R': /* quad/multiple of 4 */ | ||
2670 | + fregx (X_RS2 (insn)); | ||
2671 | + break; | ||
2672 | + | ||
2673 | + case 'g': | ||
2674 | + freg (X_RD (insn)); | ||
2675 | + break; | ||
2676 | + case 'H': /* double/even */ | ||
2677 | + case 'J': /* quad/multiple of 4 */ | ||
2678 | + fregx (X_RD (insn)); | ||
2679 | + break; | ||
2680 | +#undef freg | ||
2681 | +#undef fregx | ||
2682 | + | ||
2683 | +#define creg(n) (*info->fprintf_func) (stream, "%%c%u", (unsigned int) (n)) | ||
2684 | + case 'b': | ||
2685 | + creg (X_RS1 (insn)); | ||
2686 | + break; | ||
2687 | + | ||
2688 | + case 'c': | ||
2689 | + creg (X_RS2 (insn)); | ||
2690 | + break; | ||
2691 | + | ||
2692 | + case 'D': | ||
2693 | + creg (X_RD (insn)); | ||
2694 | + break; | ||
2695 | +#undef creg | ||
2696 | + | ||
2697 | + case 'h': | ||
2698 | + (*info->fprintf_func) (stream, "%%hi(%#x)", | ||
2699 | + ((unsigned) 0xFFFFFFFF | ||
2700 | + & ((int) X_IMM22 (insn) << 10))); | ||
2701 | + break; | ||
2702 | + | ||
2703 | + case 'i': /* 13 bit immediate */ | ||
2704 | + case 'I': /* 11 bit immediate */ | ||
2705 | + case 'j': /* 10 bit immediate */ | ||
2706 | + { | ||
2707 | + int imm; | ||
2708 | + | ||
2709 | + if (*s == 'i') | ||
2710 | + imm = X_SIMM (insn, 13); | ||
2711 | + else if (*s == 'I') | ||
2712 | + imm = X_SIMM (insn, 11); | ||
2713 | + else | ||
2714 | + imm = X_SIMM (insn, 10); | ||
2715 | + | ||
2716 | + /* Check to see whether we have a 1+i, and take | ||
2717 | + note of that fact. | ||
2718 | + | ||
2719 | + Note: because of the way we sort the table, | ||
2720 | + we will be matching 1+i rather than i+1, | ||
2721 | + so it is OK to assume that i is after +, | ||
2722 | + not before it. */ | ||
2723 | + if (found_plus) | ||
2724 | + imm_added_to_rs1 = 1; | ||
2725 | + | ||
2726 | + if (imm <= 9) | ||
2727 | + (*info->fprintf_func) (stream, "%d", imm); | ||
2728 | + else | ||
2729 | + (*info->fprintf_func) (stream, "%#x", imm); | ||
2730 | + } | ||
2731 | + break; | ||
2732 | + | ||
2733 | + case 'X': /* 5 bit unsigned immediate */ | ||
2734 | + case 'Y': /* 6 bit unsigned immediate */ | ||
2735 | + { | ||
2736 | + int imm = X_IMM (insn, *s == 'X' ? 5 : 6); | ||
2737 | + | ||
2738 | + if (imm <= 9) | ||
2739 | + (info->fprintf_func) (stream, "%d", imm); | ||
2740 | + else | ||
2741 | + (info->fprintf_func) (stream, "%#x", (unsigned) imm); | ||
2742 | + } | ||
2743 | + break; | ||
2744 | + | ||
2745 | + case '3': | ||
2746 | + (info->fprintf_func) (stream, "%d", X_IMM (insn, 3)); | ||
2747 | + break; | ||
2748 | + | ||
2749 | + case 'K': | ||
2750 | + { | ||
2751 | + int mask = X_MEMBAR (insn); | ||
2752 | + int bit = 0x40, printed_one = 0; | ||
2753 | + const char *name; | ||
2754 | + | ||
2755 | + if (mask == 0) | ||
2756 | + (info->fprintf_func) (stream, "0"); | ||
2757 | + else | ||
2758 | + while (bit) | ||
2759 | + { | ||
2760 | + if (mask & bit) | ||
2761 | + { | ||
2762 | + if (printed_one) | ||
2763 | + (info->fprintf_func) (stream, "|"); | ||
2764 | + name = sparc_decode_membar (bit); | ||
2765 | + (info->fprintf_func) (stream, "%s", name); | ||
2766 | + printed_one = 1; | ||
2767 | + } | ||
2768 | + bit >>= 1; | ||
2769 | + } | ||
2770 | + break; | ||
2771 | + } | ||
2772 | + | ||
2773 | + case 'k': | ||
2774 | + info->target = memaddr + SEX (X_DISP16 (insn), 16) * 4; | ||
2775 | + (*info->print_address_func) (info->target, info); | ||
2776 | + break; | ||
2777 | + | ||
2778 | + case 'G': | ||
2779 | + info->target = memaddr + SEX (X_DISP19 (insn), 19) * 4; | ||
2780 | + (*info->print_address_func) (info->target, info); | ||
2781 | + break; | ||
2782 | + | ||
2783 | + case '6': | ||
2784 | + case '7': | ||
2785 | + case '8': | ||
2786 | + case '9': | ||
2787 | + (*info->fprintf_func) (stream, "%%fcc%c", *s - '6' + '0'); | ||
2788 | + break; | ||
2789 | + | ||
2790 | + case 'z': | ||
2791 | + (*info->fprintf_func) (stream, "%%icc"); | ||
2792 | + break; | ||
2793 | + | ||
2794 | + case 'Z': | ||
2795 | + (*info->fprintf_func) (stream, "%%xcc"); | ||
2796 | + break; | ||
2797 | + | ||
2798 | + case 'E': | ||
2799 | + (*info->fprintf_func) (stream, "%%ccr"); | ||
2800 | + break; | ||
2801 | + | ||
2802 | + case 's': | ||
2803 | + (*info->fprintf_func) (stream, "%%fprs"); | ||
2804 | + break; | ||
2805 | + | ||
2806 | + case 'o': | ||
2807 | + (*info->fprintf_func) (stream, "%%asi"); | ||
2808 | + break; | ||
2809 | + | ||
2810 | + case 'W': | ||
2811 | + (*info->fprintf_func) (stream, "%%tick"); | ||
2812 | + break; | ||
2813 | + | ||
2814 | + case 'P': | ||
2815 | + (*info->fprintf_func) (stream, "%%pc"); | ||
2816 | + break; | ||
2817 | + | ||
2818 | + case '?': | ||
2819 | + if (X_RS1 (insn) == 31) | ||
2820 | + (*info->fprintf_func) (stream, "%%ver"); | ||
2821 | + else if ((unsigned) X_RS1 (insn) < 16) | ||
2822 | + (*info->fprintf_func) (stream, "%%%s", | ||
2823 | + v9_priv_reg_names[X_RS1 (insn)]); | ||
2824 | + else | ||
2825 | + (*info->fprintf_func) (stream, "%%reserved"); | ||
2826 | + break; | ||
2827 | + | ||
2828 | + case '!': | ||
2829 | + if ((unsigned) X_RD (insn) < 15) | ||
2830 | + (*info->fprintf_func) (stream, "%%%s", | ||
2831 | + v9_priv_reg_names[X_RD (insn)]); | ||
2832 | + else | ||
2833 | + (*info->fprintf_func) (stream, "%%reserved"); | ||
2834 | + break; | ||
2835 | + | ||
2836 | + case '/': | ||
2837 | + if (X_RS1 (insn) < 16 || X_RS1 (insn) > 25) | ||
2838 | + (*info->fprintf_func) (stream, "%%reserved"); | ||
2839 | + else | ||
2840 | + (*info->fprintf_func) (stream, "%%%s", | ||
2841 | + v9a_asr_reg_names[X_RS1 (insn)-16]); | ||
2842 | + break; | ||
2843 | + | ||
2844 | + case '_': | ||
2845 | + if (X_RD (insn) < 16 || X_RD (insn) > 25) | ||
2846 | + (*info->fprintf_func) (stream, "%%reserved"); | ||
2847 | + else | ||
2848 | + (*info->fprintf_func) (stream, "%%%s", | ||
2849 | + v9a_asr_reg_names[X_RD (insn)-16]); | ||
2850 | + break; | ||
2851 | + | ||
2852 | + case '*': | ||
2853 | + { | ||
2854 | + const char *name = sparc_decode_prefetch (X_RD (insn)); | ||
2855 | + | ||
2856 | + if (name) | ||
2857 | + (*info->fprintf_func) (stream, "%s", name); | ||
2858 | + else | ||
2859 | + (*info->fprintf_func) (stream, "%d", X_RD (insn)); | ||
2860 | + break; | ||
2861 | + } | ||
2862 | + | ||
2863 | + case 'M': | ||
2864 | + (*info->fprintf_func) (stream, "%%asr%d", X_RS1 (insn)); | ||
2865 | + break; | ||
2866 | + | ||
2867 | + case 'm': | ||
2868 | + (*info->fprintf_func) (stream, "%%asr%d", X_RD (insn)); | ||
2869 | + break; | ||
2870 | + | ||
2871 | + case 'L': | ||
2872 | + info->target = memaddr + SEX (X_DISP30 (insn), 30) * 4; | ||
2873 | + (*info->print_address_func) (info->target, info); | ||
2874 | + break; | ||
2875 | + | ||
2876 | + case 'n': | ||
2877 | + (*info->fprintf_func) | ||
2878 | + (stream, "%#x", SEX (X_DISP22 (insn), 22)); | ||
2879 | + break; | ||
2880 | + | ||
2881 | + case 'l': | ||
2882 | + info->target = memaddr + SEX (X_DISP22 (insn), 22) * 4; | ||
2883 | + (*info->print_address_func) (info->target, info); | ||
2884 | + break; | ||
2885 | + | ||
2886 | + case 'A': | ||
2887 | + { | ||
2888 | + const char *name; | ||
2889 | + | ||
2890 | + if ((info->mach == bfd_mach_sparc_v8plusa) || | ||
2891 | ((info->mach >= bfd_mach_sparc_v9) && | 2891 | ((info->mach >= bfd_mach_sparc_v9) && |
2892 | (info->mach <= bfd_mach_sparc_v9b))) | 2892 | (info->mach <= bfd_mach_sparc_v9b))) |
2893 | - name = sparc_decode_asi_v9 (X_ASI (insn)); | ||
2894 | - else | ||
2895 | - name = sparc_decode_asi_v8 (X_ASI (insn)); | ||
2896 | - | ||
2897 | - if (name) | ||
2898 | - (*info->fprintf_func) (stream, "%s", name); | ||
2899 | - else | ||
2900 | - (*info->fprintf_func) (stream, "(%d)", X_ASI (insn)); | ||
2901 | - break; | ||
2902 | - } | ||
2903 | - | ||
2904 | - case 'C': | ||
2905 | - (*info->fprintf_func) (stream, "%%csr"); | ||
2906 | - break; | ||
2907 | - | ||
2908 | - case 'F': | ||
2909 | - (*info->fprintf_func) (stream, "%%fsr"); | ||
2910 | - break; | ||
2911 | - | ||
2912 | - case 'p': | ||
2913 | - (*info->fprintf_func) (stream, "%%psr"); | ||
2914 | - break; | ||
2915 | - | ||
2916 | - case 'q': | ||
2917 | - (*info->fprintf_func) (stream, "%%fq"); | ||
2918 | - break; | ||
2919 | - | ||
2920 | - case 'Q': | ||
2921 | - (*info->fprintf_func) (stream, "%%cq"); | ||
2922 | - break; | ||
2923 | - | ||
2924 | - case 't': | ||
2925 | - (*info->fprintf_func) (stream, "%%tbr"); | ||
2926 | - break; | ||
2927 | - | ||
2928 | - case 'w': | ||
2929 | - (*info->fprintf_func) (stream, "%%wim"); | ||
2930 | - break; | ||
2931 | - | ||
2932 | - case 'x': | ||
2933 | - (*info->fprintf_func) (stream, "%d", | ||
2934 | - ((X_LDST_I (insn) << 8) | ||
2935 | - + X_ASI (insn))); | ||
2936 | - break; | ||
2937 | - | ||
2938 | - case 'y': | ||
2939 | - (*info->fprintf_func) (stream, "%%y"); | ||
2940 | - break; | ||
2941 | - | ||
2942 | - case 'u': | ||
2943 | - case 'U': | ||
2944 | - { | ||
2945 | - int val = *s == 'U' ? X_RS1 (insn) : X_RD (insn); | ||
2946 | - const char *name = sparc_decode_sparclet_cpreg (val); | ||
2947 | - | ||
2948 | - if (name) | ||
2949 | - (*info->fprintf_func) (stream, "%s", name); | ||
2950 | - else | ||
2951 | - (*info->fprintf_func) (stream, "%%cpreg(%d)", val); | ||
2952 | - break; | ||
2953 | - } | ||
2954 | - } | ||
2955 | - } | ||
2956 | - } | ||
2957 | - | ||
2958 | - /* If we are adding or or'ing something to rs1, then | ||
2959 | - check to see whether the previous instruction was | ||
2960 | - a sethi to the same register as in the sethi. | ||
2961 | - If so, attempt to print the result of the add or | ||
2962 | - or (in this context add and or do the same thing) | ||
2963 | - and its symbolic value. */ | ||
2964 | - if (imm_ored_to_rs1 || imm_added_to_rs1) | ||
2965 | - { | ||
2966 | - unsigned long prev_insn; | ||
2967 | - int errcode; | ||
2968 | - | ||
2969 | - errcode = | ||
2970 | - (*info->read_memory_func) | ||
2971 | - (memaddr - 4, buffer, sizeof (buffer), info); | ||
2972 | - prev_insn = getword (buffer); | ||
2973 | - | ||
2974 | - if (errcode == 0) | ||
2975 | - { | ||
2976 | - /* If it is a delayed branch, we need to look at the | ||
2977 | - instruction before the delayed branch. This handles | ||
2978 | - sequences such as | ||
2979 | - | ||
2980 | - sethi %o1, %hi(_foo), %o1 | ||
2981 | - call _printf | ||
2982 | - or %o1, %lo(_foo), %o1 | ||
2983 | - */ | ||
2984 | - | ||
2985 | - if (is_delayed_branch (prev_insn)) | ||
2986 | - { | ||
2987 | - errcode = (*info->read_memory_func) | ||
2988 | - (memaddr - 8, buffer, sizeof (buffer), info); | ||
2989 | - prev_insn = getword (buffer); | ||
2990 | - } | ||
2991 | - } | ||
2992 | - | ||
2993 | - /* If there was a problem reading memory, then assume | ||
2994 | - the previous instruction was not sethi. */ | ||
2995 | - if (errcode == 0) | ||
2996 | - { | ||
2997 | - /* Is it sethi to the same register? */ | ||
2998 | - if ((prev_insn & 0xc1c00000) == 0x01000000 | ||
2999 | - && X_RD (prev_insn) == X_RS1 (insn)) | ||
3000 | - { | ||
3001 | - (*info->fprintf_func) (stream, "\t! "); | ||
3002 | - info->target = | ||
3003 | - ((unsigned) 0xFFFFFFFF | ||
3004 | - & ((int) X_IMM22 (prev_insn) << 10)); | ||
3005 | - if (imm_added_to_rs1) | ||
3006 | - info->target += X_SIMM (insn, 13); | ||
3007 | - else | ||
3008 | - info->target |= X_SIMM (insn, 13); | ||
3009 | - (*info->print_address_func) (info->target, info); | ||
3010 | - info->insn_type = dis_dref; | ||
3011 | - info->data_size = 4; /* FIXME!!! */ | ||
3012 | - } | ||
3013 | - } | ||
3014 | - } | ||
3015 | - | ||
3016 | - if (opcode->flags & (F_UNBR|F_CONDBR|F_JSR)) | ||
3017 | - { | ||
3018 | - /* FIXME -- check is_annulled flag */ | ||
3019 | - if (opcode->flags & F_UNBR) | ||
3020 | - info->insn_type = dis_branch; | ||
3021 | - if (opcode->flags & F_CONDBR) | ||
3022 | - info->insn_type = dis_condbranch; | ||
3023 | - if (opcode->flags & F_JSR) | ||
3024 | - info->insn_type = dis_jsr; | ||
3025 | - if (opcode->flags & F_DELAYED) | ||
3026 | - info->branch_delay_insns = 1; | ||
3027 | - } | ||
3028 | - | ||
3029 | - return sizeof (buffer); | ||
3030 | - } | 2893 | + name = sparc_decode_asi_v9 (X_ASI (insn)); |
2894 | + else | ||
2895 | + name = sparc_decode_asi_v8 (X_ASI (insn)); | ||
2896 | + | ||
2897 | + if (name) | ||
2898 | + (*info->fprintf_func) (stream, "%s", name); | ||
2899 | + else | ||
2900 | + (*info->fprintf_func) (stream, "(%d)", X_ASI (insn)); | ||
2901 | + break; | ||
2902 | + } | ||
2903 | + | ||
2904 | + case 'C': | ||
2905 | + (*info->fprintf_func) (stream, "%%csr"); | ||
2906 | + break; | ||
2907 | + | ||
2908 | + case 'F': | ||
2909 | + (*info->fprintf_func) (stream, "%%fsr"); | ||
2910 | + break; | ||
2911 | + | ||
2912 | + case 'p': | ||
2913 | + (*info->fprintf_func) (stream, "%%psr"); | ||
2914 | + break; | ||
2915 | + | ||
2916 | + case 'q': | ||
2917 | + (*info->fprintf_func) (stream, "%%fq"); | ||
2918 | + break; | ||
2919 | + | ||
2920 | + case 'Q': | ||
2921 | + (*info->fprintf_func) (stream, "%%cq"); | ||
2922 | + break; | ||
2923 | + | ||
2924 | + case 't': | ||
2925 | + (*info->fprintf_func) (stream, "%%tbr"); | ||
2926 | + break; | ||
2927 | + | ||
2928 | + case 'w': | ||
2929 | + (*info->fprintf_func) (stream, "%%wim"); | ||
2930 | + break; | ||
2931 | + | ||
2932 | + case 'x': | ||
2933 | + (*info->fprintf_func) (stream, "%d", | ||
2934 | + ((X_LDST_I (insn) << 8) | ||
2935 | + + X_ASI (insn))); | ||
2936 | + break; | ||
2937 | + | ||
2938 | + case 'y': | ||
2939 | + (*info->fprintf_func) (stream, "%%y"); | ||
2940 | + break; | ||
2941 | + | ||
2942 | + case 'u': | ||
2943 | + case 'U': | ||
2944 | + { | ||
2945 | + int val = *s == 'U' ? X_RS1 (insn) : X_RD (insn); | ||
2946 | + const char *name = sparc_decode_sparclet_cpreg (val); | ||
2947 | + | ||
2948 | + if (name) | ||
2949 | + (*info->fprintf_func) (stream, "%s", name); | ||
2950 | + else | ||
2951 | + (*info->fprintf_func) (stream, "%%cpreg(%d)", val); | ||
2952 | + break; | ||
2953 | + } | ||
2954 | + } | ||
2955 | + } | ||
2956 | + } | ||
2957 | + | ||
2958 | + /* If we are adding or or'ing something to rs1, then | ||
2959 | + check to see whether the previous instruction was | ||
2960 | + a sethi to the same register as in the sethi. | ||
2961 | + If so, attempt to print the result of the add or | ||
2962 | + or (in this context add and or do the same thing) | ||
2963 | + and its symbolic value. */ | ||
2964 | + if (imm_ored_to_rs1 || imm_added_to_rs1) | ||
2965 | + { | ||
2966 | + unsigned long prev_insn; | ||
2967 | + int errcode; | ||
2968 | + | ||
2969 | + errcode = | ||
2970 | + (*info->read_memory_func) | ||
2971 | + (memaddr - 4, buffer, sizeof (buffer), info); | ||
2972 | + prev_insn = getword (buffer); | ||
2973 | + | ||
2974 | + if (errcode == 0) | ||
2975 | + { | ||
2976 | + /* If it is a delayed branch, we need to look at the | ||
2977 | + instruction before the delayed branch. This handles | ||
2978 | + sequences such as | ||
2979 | + | ||
2980 | + sethi %o1, %hi(_foo), %o1 | ||
2981 | + call _printf | ||
2982 | + or %o1, %lo(_foo), %o1 | ||
2983 | + */ | ||
2984 | + | ||
2985 | + if (is_delayed_branch (prev_insn)) | ||
2986 | + { | ||
2987 | + errcode = (*info->read_memory_func) | ||
2988 | + (memaddr - 8, buffer, sizeof (buffer), info); | ||
2989 | + prev_insn = getword (buffer); | ||
2990 | + } | ||
2991 | + } | ||
2992 | + | ||
2993 | + /* If there was a problem reading memory, then assume | ||
2994 | + the previous instruction was not sethi. */ | ||
2995 | + if (errcode == 0) | ||
2996 | + { | ||
2997 | + /* Is it sethi to the same register? */ | ||
2998 | + if ((prev_insn & 0xc1c00000) == 0x01000000 | ||
2999 | + && X_RD (prev_insn) == X_RS1 (insn)) | ||
3000 | + { | ||
3001 | + (*info->fprintf_func) (stream, "\t! "); | ||
3002 | + info->target = | ||
3003 | + ((unsigned) 0xFFFFFFFF | ||
3004 | + & ((int) X_IMM22 (prev_insn) << 10)); | ||
3005 | + if (imm_added_to_rs1) | ||
3006 | + info->target += X_SIMM (insn, 13); | ||
3007 | + else | ||
3008 | + info->target |= X_SIMM (insn, 13); | ||
3009 | + (*info->print_address_func) (info->target, info); | ||
3010 | + info->insn_type = dis_dref; | ||
3011 | + info->data_size = 4; /* FIXME!!! */ | ||
3012 | + } | ||
3013 | + } | ||
3014 | + } | ||
3015 | + | ||
3016 | + if (opcode->flags & (F_UNBR|F_CONDBR|F_JSR)) | ||
3017 | + { | ||
3018 | + /* FIXME -- check is_annulled flag */ | ||
3019 | + if (opcode->flags & F_UNBR) | ||
3020 | + info->insn_type = dis_branch; | ||
3021 | + if (opcode->flags & F_CONDBR) | ||
3022 | + info->insn_type = dis_condbranch; | ||
3023 | + if (opcode->flags & F_JSR) | ||
3024 | + info->insn_type = dis_jsr; | ||
3025 | + if (opcode->flags & F_DELAYED) | ||
3026 | + info->branch_delay_insns = 1; | ||
3027 | + } | ||
3028 | + | ||
3029 | + return sizeof (buffer); | ||
3030 | + } | ||
3031 | } | 3031 | } |
3032 | 3032 | ||
3033 | - info->insn_type = dis_noninsn; /* Mark as non-valid instruction */ | 3033 | + info->insn_type = dis_noninsn; /* Mark as non-valid instruction */ |
3034 | (*info->fprintf_func) (stream, _("unknown")); | 3034 | (*info->fprintf_func) (stream, _("unknown")); |
3035 | return sizeof (buffer); | 3035 | return sizeof (buffer); |
3036 | } | 3036 | } |
@@ -3051,10 +3051,10 @@ compute_arch_mask (mach) | @@ -3051,10 +3051,10 @@ compute_arch_mask (mach) | ||
3051 | case bfd_mach_sparc_sparclite : | 3051 | case bfd_mach_sparc_sparclite : |
3052 | case bfd_mach_sparc_sparclite_le : | 3052 | case bfd_mach_sparc_sparclite_le : |
3053 | /* sparclites insns are recognized by default (because that's how | 3053 | /* sparclites insns are recognized by default (because that's how |
3054 | - they've always been treated, for better or worse). Kludge this by | ||
3055 | - indicating generic v8 is also selected. */ | 3054 | + they've always been treated, for better or worse). Kludge this by |
3055 | + indicating generic v8 is also selected. */ | ||
3056 | return (SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE) | 3056 | return (SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE) |
3057 | - | SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8)); | 3057 | + | SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8)); |
3058 | case bfd_mach_sparc_v8plus : | 3058 | case bfd_mach_sparc_v8plus : |
3059 | case bfd_mach_sparc_v9 : | 3059 | case bfd_mach_sparc_v9 : |
3060 | return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9); | 3060 | return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9); |
@@ -3087,14 +3087,14 @@ compare_opcodes (const void *a, const void *b) | @@ -3087,14 +3087,14 @@ compare_opcodes (const void *a, const void *b) | ||
3087 | if (op0->architecture & current_arch_mask) | 3087 | if (op0->architecture & current_arch_mask) |
3088 | { | 3088 | { |
3089 | if (! (op1->architecture & current_arch_mask)) | 3089 | if (! (op1->architecture & current_arch_mask)) |
3090 | - return -1; | 3090 | + return -1; |
3091 | } | 3091 | } |
3092 | else | 3092 | else |
3093 | { | 3093 | { |
3094 | if (op1->architecture & current_arch_mask) | 3094 | if (op1->architecture & current_arch_mask) |
3095 | - return 1; | 3095 | + return 1; |
3096 | else if (op0->architecture != op1->architecture) | 3096 | else if (op0->architecture != op1->architecture) |
3097 | - return op0->architecture - op1->architecture; | 3097 | + return op0->architecture - op1->architecture; |
3098 | } | 3098 | } |
3099 | 3099 | ||
3100 | /* If a bit is set in both match and lose, there is something | 3100 | /* If a bit is set in both match and lose, there is something |
@@ -3102,10 +3102,10 @@ compare_opcodes (const void *a, const void *b) | @@ -3102,10 +3102,10 @@ compare_opcodes (const void *a, const void *b) | ||
3102 | if (match0 & lose0) | 3102 | if (match0 & lose0) |
3103 | { | 3103 | { |
3104 | fprintf | 3104 | fprintf |
3105 | - (stderr, | ||
3106 | - /* xgettext:c-format */ | ||
3107 | - _("Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"), | ||
3108 | - op0->name, match0, lose0); | 3105 | + (stderr, |
3106 | + /* xgettext:c-format */ | ||
3107 | + _("Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"), | ||
3108 | + op0->name, match0, lose0); | ||
3109 | op0->lose &= ~op0->match; | 3109 | op0->lose &= ~op0->match; |
3110 | lose0 = op0->lose; | 3110 | lose0 = op0->lose; |
3111 | } | 3111 | } |
@@ -3113,10 +3113,10 @@ compare_opcodes (const void *a, const void *b) | @@ -3113,10 +3113,10 @@ compare_opcodes (const void *a, const void *b) | ||
3113 | if (match1 & lose1) | 3113 | if (match1 & lose1) |
3114 | { | 3114 | { |
3115 | fprintf | 3115 | fprintf |
3116 | - (stderr, | ||
3117 | - /* xgettext:c-format */ | ||
3118 | - _("Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"), | ||
3119 | - op1->name, match1, lose1); | 3116 | + (stderr, |
3117 | + /* xgettext:c-format */ | ||
3118 | + _("Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"), | ||
3119 | + op1->name, match1, lose1); | ||
3120 | op1->lose &= ~op1->match; | 3120 | op1->lose &= ~op1->match; |
3121 | lose1 = op1->lose; | 3121 | lose1 = op1->lose; |
3122 | } | 3122 | } |
@@ -3130,7 +3130,7 @@ compare_opcodes (const void *a, const void *b) | @@ -3130,7 +3130,7 @@ compare_opcodes (const void *a, const void *b) | ||
3130 | int x1 = (match1 & x) != 0; | 3130 | int x1 = (match1 & x) != 0; |
3131 | 3131 | ||
3132 | if (x0 != x1) | 3132 | if (x0 != x1) |
3133 | - return x1 - x0; | 3133 | + return x1 - x0; |
3134 | } | 3134 | } |
3135 | 3135 | ||
3136 | for (i = 0; i < 32; ++i) | 3136 | for (i = 0; i < 32; ++i) |
@@ -3140,7 +3140,7 @@ compare_opcodes (const void *a, const void *b) | @@ -3140,7 +3140,7 @@ compare_opcodes (const void *a, const void *b) | ||
3140 | int x1 = (lose1 & x) != 0; | 3140 | int x1 = (lose1 & x) != 0; |
3141 | 3141 | ||
3142 | if (x0 != x1) | 3142 | if (x0 != x1) |
3143 | - return x1 - x0; | 3143 | + return x1 - x0; |
3144 | } | 3144 | } |
3145 | 3145 | ||
3146 | /* They are functionally equal. So as long as the opcode table is | 3146 | /* They are functionally equal. So as long as the opcode table is |
@@ -3160,12 +3160,12 @@ compare_opcodes (const void *a, const void *b) | @@ -3160,12 +3160,12 @@ compare_opcodes (const void *a, const void *b) | ||
3160 | if (i) | 3160 | if (i) |
3161 | { | 3161 | { |
3162 | if (op0->flags & F_ALIAS) /* If they're both aliases, be arbitrary. */ | 3162 | if (op0->flags & F_ALIAS) /* If they're both aliases, be arbitrary. */ |
3163 | - return i; | 3163 | + return i; |
3164 | else | 3164 | else |
3165 | - fprintf (stderr, | ||
3166 | - /* xgettext:c-format */ | ||
3167 | - _("Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"), | ||
3168 | - op0->name, op1->name); | 3165 | + fprintf (stderr, |
3166 | + /* xgettext:c-format */ | ||
3167 | + _("Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"), | ||
3168 | + op0->name, op1->name); | ||
3169 | } | 3169 | } |
3170 | 3170 | ||
3171 | /* Fewer arguments are preferred. */ | 3171 | /* Fewer arguments are preferred. */ |
@@ -3183,15 +3183,15 @@ compare_opcodes (const void *a, const void *b) | @@ -3183,15 +3183,15 @@ compare_opcodes (const void *a, const void *b) | ||
3183 | 3183 | ||
3184 | if (p0 && p1) | 3184 | if (p0 && p1) |
3185 | { | 3185 | { |
3186 | - /* There is a plus in both operands. Note that a plus | ||
3187 | - sign cannot be the first character in args, | ||
3188 | - so the following [-1]'s are valid. */ | ||
3189 | - if (p0[-1] == 'i' && p1[1] == 'i') | ||
3190 | - /* op0 is i+1 and op1 is 1+i, so op1 goes first. */ | ||
3191 | - return 1; | ||
3192 | - if (p0[1] == 'i' && p1[-1] == 'i') | ||
3193 | - /* op0 is 1+i and op1 is i+1, so op0 goes first. */ | ||
3194 | - return -1; | 3186 | + /* There is a plus in both operands. Note that a plus |
3187 | + sign cannot be the first character in args, | ||
3188 | + so the following [-1]'s are valid. */ | ||
3189 | + if (p0[-1] == 'i' && p1[1] == 'i') | ||
3190 | + /* op0 is i+1 and op1 is 1+i, so op1 goes first. */ | ||
3191 | + return 1; | ||
3192 | + if (p0[1] == 'i' && p1[-1] == 'i') | ||
3193 | + /* op0 is 1+i and op1 is i+1, so op0 goes first. */ | ||
3194 | + return -1; | ||
3195 | } | 3195 | } |
3196 | } | 3196 | } |
3197 | 3197 | ||
@@ -3252,14 +3252,14 @@ build_hash_table (opcode_table, hash_table, num_opcodes) | @@ -3252,14 +3252,14 @@ build_hash_table (opcode_table, hash_table, num_opcodes) | ||
3252 | for (i = 0; i < HASH_SIZE; ++i) | 3252 | for (i = 0; i < HASH_SIZE; ++i) |
3253 | { | 3253 | { |
3254 | if (hash_count[i] < min_count) | 3254 | if (hash_count[i] < min_count) |
3255 | - min_count = hash_count[i]; | ||
3256 | - if (hash_count[i] > max_count) | ||
3257 | - max_count = hash_count[i]; | ||
3258 | - total += hash_count[i]; | 3255 | + min_count = hash_count[i]; |
3256 | + if (hash_count[i] > max_count) | ||
3257 | + max_count = hash_count[i]; | ||
3258 | + total += hash_count[i]; | ||
3259 | } | 3259 | } |
3260 | 3260 | ||
3261 | printf ("Opcode hash table stats: min %d, max %d, ave %f\n", | 3261 | printf ("Opcode hash table stats: min %d, max %d, ave %f\n", |
3262 | - min_count, max_count, (double) total / HASH_SIZE); | 3262 | + min_count, max_count, (double) total / HASH_SIZE); |
3263 | } | 3263 | } |
3264 | #endif | 3264 | #endif |
3265 | } | 3265 | } |
sparc.ld
1 | OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", | 1 | OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", |
2 | - "elf32-sparc") | 2 | + "elf32-sparc") |
3 | OUTPUT_ARCH(sparc) | 3 | OUTPUT_ARCH(sparc) |
4 | SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib); | 4 | SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib); |
5 | ENTRY(_start) | 5 | ENTRY(_start) |
@@ -7,13 +7,13 @@ SECTIONS | @@ -7,13 +7,13 @@ SECTIONS | ||
7 | { | 7 | { |
8 | /* Read-only sections, merged into text segment: */ | 8 | /* Read-only sections, merged into text segment: */ |
9 | . = 0x60000000 + SIZEOF_HEADERS; | 9 | . = 0x60000000 + SIZEOF_HEADERS; |
10 | - .interp : { *(.interp) } | ||
11 | - .hash : { *(.hash) } | ||
12 | - .dynsym : { *(.dynsym) } | ||
13 | - .dynstr : { *(.dynstr) } | ||
14 | - .gnu.version : { *(.gnu.version) } | ||
15 | - .gnu.version_d : { *(.gnu.version_d) } | ||
16 | - .gnu.version_r : { *(.gnu.version_r) } | 10 | + .interp : { *(.interp) } |
11 | + .hash : { *(.hash) } | ||
12 | + .dynsym : { *(.dynsym) } | ||
13 | + .dynstr : { *(.dynstr) } | ||
14 | + .gnu.version : { *(.gnu.version) } | ||
15 | + .gnu.version_d : { *(.gnu.version_d) } | ||
16 | + .gnu.version_r : { *(.gnu.version_r) } | ||
17 | .rel.text : | 17 | .rel.text : |
18 | { *(.rel.text) *(.rel.gnu.linkonce.t*) } | 18 | { *(.rel.text) *(.rel.gnu.linkonce.t*) } |
19 | .rela.text : | 19 | .rela.text : |
@@ -26,21 +26,21 @@ SECTIONS | @@ -26,21 +26,21 @@ SECTIONS | ||
26 | { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } | 26 | { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } |
27 | .rela.rodata : | 27 | .rela.rodata : |
28 | { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } | 28 | { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } |
29 | - .rel.got : { *(.rel.got) } | ||
30 | - .rela.got : { *(.rela.got) } | ||
31 | - .rel.ctors : { *(.rel.ctors) } | ||
32 | - .rela.ctors : { *(.rela.ctors) } | ||
33 | - .rel.dtors : { *(.rel.dtors) } | ||
34 | - .rela.dtors : { *(.rela.dtors) } | ||
35 | - .rel.init : { *(.rel.init) } | ||
36 | - .rela.init : { *(.rela.init) } | ||
37 | - .rel.fini : { *(.rel.fini) } | ||
38 | - .rela.fini : { *(.rela.fini) } | ||
39 | - .rel.bss : { *(.rel.bss) } | ||
40 | - .rela.bss : { *(.rela.bss) } | ||
41 | - .rel.plt : { *(.rel.plt) } | ||
42 | - .rela.plt : { *(.rela.plt) } | ||
43 | - .init : { *(.init) } =0x47ff041f | 29 | + .rel.got : { *(.rel.got) } |
30 | + .rela.got : { *(.rela.got) } | ||
31 | + .rel.ctors : { *(.rel.ctors) } | ||
32 | + .rela.ctors : { *(.rela.ctors) } | ||
33 | + .rel.dtors : { *(.rel.dtors) } | ||
34 | + .rela.dtors : { *(.rela.dtors) } | ||
35 | + .rel.init : { *(.rel.init) } | ||
36 | + .rela.init : { *(.rela.init) } | ||
37 | + .rel.fini : { *(.rel.fini) } | ||
38 | + .rela.fini : { *(.rela.fini) } | ||
39 | + .rel.bss : { *(.rel.bss) } | ||
40 | + .rela.bss : { *(.rela.bss) } | ||
41 | + .rel.plt : { *(.rel.plt) } | ||
42 | + .rela.plt : { *(.rela.plt) } | ||
43 | + .init : { *(.init) } =0x47ff041f | ||
44 | .text : | 44 | .text : |
45 | { | 45 | { |
46 | *(.text) | 46 | *(.text) |
@@ -74,7 +74,7 @@ SECTIONS | @@ -74,7 +74,7 @@ SECTIONS | ||
74 | { | 74 | { |
75 | *(.dtors) | 75 | *(.dtors) |
76 | } | 76 | } |
77 | - .plt : { *(.plt) } | 77 | + .plt : { *(.plt) } |
78 | .got : { *(.got.plt) *(.got) } | 78 | .got : { *(.got.plt) *(.got) } |
79 | .dynamic : { *(.dynamic) } | 79 | .dynamic : { *(.dynamic) } |
80 | /* We want the small data sections together, so single-instruction offsets | 80 | /* We want the small data sections together, so single-instruction offsets |
sparc64.ld
1 | OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", | 1 | OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", |
2 | - "elf64-sparc") | 2 | + "elf64-sparc") |
3 | OUTPUT_ARCH(sparc:v9) | 3 | OUTPUT_ARCH(sparc:v9) |
4 | SEARCH_DIR(/lib64); SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib64); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib64); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib); | 4 | SEARCH_DIR(/lib64); SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib64); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib64); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib); |
5 | ENTRY(_start) | 5 | ENTRY(_start) |
@@ -7,13 +7,13 @@ SECTIONS | @@ -7,13 +7,13 @@ SECTIONS | ||
7 | { | 7 | { |
8 | /* Read-only sections, merged into text segment: */ | 8 | /* Read-only sections, merged into text segment: */ |
9 | . = 0x60000000 + SIZEOF_HEADERS; | 9 | . = 0x60000000 + SIZEOF_HEADERS; |
10 | - .interp : { *(.interp) } | ||
11 | - .hash : { *(.hash) } | ||
12 | - .dynsym : { *(.dynsym) } | ||
13 | - .dynstr : { *(.dynstr) } | ||
14 | - .gnu.version : { *(.gnu.version) } | ||
15 | - .gnu.version_d : { *(.gnu.version_d) } | ||
16 | - .gnu.version_r : { *(.gnu.version_r) } | 10 | + .interp : { *(.interp) } |
11 | + .hash : { *(.hash) } | ||
12 | + .dynsym : { *(.dynsym) } | ||
13 | + .dynstr : { *(.dynstr) } | ||
14 | + .gnu.version : { *(.gnu.version) } | ||
15 | + .gnu.version_d : { *(.gnu.version_d) } | ||
16 | + .gnu.version_r : { *(.gnu.version_r) } | ||
17 | .rel.text : | 17 | .rel.text : |
18 | { *(.rel.text) *(.rel.gnu.linkonce.t*) } | 18 | { *(.rel.text) *(.rel.gnu.linkonce.t*) } |
19 | .rela.text : | 19 | .rela.text : |
@@ -26,21 +26,21 @@ SECTIONS | @@ -26,21 +26,21 @@ SECTIONS | ||
26 | { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } | 26 | { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } |
27 | .rela.rodata : | 27 | .rela.rodata : |
28 | { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } | 28 | { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } |
29 | - .rel.got : { *(.rel.got) } | ||
30 | - .rela.got : { *(.rela.got) } | ||
31 | - .rel.ctors : { *(.rel.ctors) } | ||
32 | - .rela.ctors : { *(.rela.ctors) } | ||
33 | - .rel.dtors : { *(.rel.dtors) } | ||
34 | - .rela.dtors : { *(.rela.dtors) } | ||
35 | - .rel.init : { *(.rel.init) } | ||
36 | - .rela.init : { *(.rela.init) } | ||
37 | - .rel.fini : { *(.rel.fini) } | ||
38 | - .rela.fini : { *(.rela.fini) } | ||
39 | - .rel.bss : { *(.rel.bss) } | ||
40 | - .rela.bss : { *(.rela.bss) } | ||
41 | - .rel.plt : { *(.rel.plt) } | ||
42 | - .rela.plt : { *(.rela.plt) } | ||
43 | - .init : { *(.init) } =0x47ff041f | 29 | + .rel.got : { *(.rel.got) } |
30 | + .rela.got : { *(.rela.got) } | ||
31 | + .rel.ctors : { *(.rel.ctors) } | ||
32 | + .rela.ctors : { *(.rela.ctors) } | ||
33 | + .rel.dtors : { *(.rel.dtors) } | ||
34 | + .rela.dtors : { *(.rela.dtors) } | ||
35 | + .rel.init : { *(.rel.init) } | ||
36 | + .rela.init : { *(.rela.init) } | ||
37 | + .rel.fini : { *(.rel.fini) } | ||
38 | + .rela.fini : { *(.rela.fini) } | ||
39 | + .rel.bss : { *(.rel.bss) } | ||
40 | + .rela.bss : { *(.rela.bss) } | ||
41 | + .rel.plt : { *(.rel.plt) } | ||
42 | + .rela.plt : { *(.rela.plt) } | ||
43 | + .init : { *(.init) } =0x47ff041f | ||
44 | .text : | 44 | .text : |
45 | { | 45 | { |
46 | *(.text) | 46 | *(.text) |
@@ -82,7 +82,7 @@ SECTIONS | @@ -82,7 +82,7 @@ SECTIONS | ||
82 | { | 82 | { |
83 | *(.dtors) | 83 | *(.dtors) |
84 | } | 84 | } |
85 | - .plt : { *(.plt) } | 85 | + .plt : { *(.plt) } |
86 | .got : { *(.got.plt) *(.got) } | 86 | .got : { *(.got.plt) *(.got) } |
87 | .dynamic : { *(.dynamic) } | 87 | .dynamic : { *(.dynamic) } |
88 | /* We want the small data sections together, so single-instruction offsets | 88 | /* We want the small data sections together, so single-instruction offsets |