1 |
/* Opcode table for the Atmel AVR micro controllers. |
/* Opcode table for the Atmel AVR micro controllers. |
2 |
|
|
3 |
Copyright 2000 Free Software Foundation, Inc. |
Copyright 2000, 2001, 2004 Free Software Foundation, Inc. |
4 |
Contributed by Denis Chertykov <denisc@overta.ru> |
Contributed by Denis Chertykov <denisc@overta.ru> |
5 |
|
|
6 |
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
23 |
#define AVR_ISA_SRAM 0x0008 /* device has SRAM (LD, ST, PUSH, POP, ...) */ |
#define AVR_ISA_SRAM 0x0008 /* device has SRAM (LD, ST, PUSH, POP, ...) */ |
24 |
#define AVR_ISA_MEGA 0x0020 /* device has >8K program memory (JMP and CALL |
#define AVR_ISA_MEGA 0x0020 /* device has >8K program memory (JMP and CALL |
25 |
supported, no 8K wrap on RJMP and RCALL) */ |
supported, no 8K wrap on RJMP and RCALL) */ |
26 |
#define AVR_ISA_MUL 0x0040 /* device has new core (MUL, MOVW, ...) */ |
#define AVR_ISA_MUL 0x0040 /* device has new core (MUL, FMUL, ...) */ |
27 |
#define AVR_ISA_ELPM 0x0080 /* device has >64K program memory (ELPM) */ |
#define AVR_ISA_ELPM 0x0080 /* device has >64K program memory (ELPM) */ |
28 |
#define AVR_ISA_ELPMX 0x0100 /* device has ELPM Rd,Z[+] */ |
#define AVR_ISA_ELPMX 0x0100 /* device has ELPM Rd,Z[+] */ |
29 |
#define AVR_ISA_SPM 0x0200 /* device can program itself */ |
#define AVR_ISA_SPM 0x0200 /* device can program itself */ |
30 |
#define AVR_ISA_BRK 0x0400 /* device has BREAK (on-chip debug) */ |
#define AVR_ISA_BRK 0x0400 /* device has BREAK (on-chip debug) */ |
31 |
#define AVR_ISA_EIND 0x0800 /* device has >128K program memory (none yet) */ |
#define AVR_ISA_EIND 0x0800 /* device has >128K program memory (none yet) */ |
32 |
|
#define AVR_ISA_MOVW 0x1000 /* device has MOVW */ |
33 |
|
|
34 |
#define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM) |
#define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM) |
35 |
#define AVR_ISA_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM) |
#define AVR_ISA_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM) |
36 |
#define AVR_ISA_M8 (AVR_ISA_2xxx | AVR_ISA_MUL | AVR_ISA_LPMX | AVR_ISA_SPM) |
#define AVR_ISA_TINY2 (AVR_ISA_2xxx | AVR_ISA_MOVW | AVR_ISA_LPMX | \ |
37 |
|
AVR_ISA_SPM | AVR_ISA_BRK) |
38 |
|
#define AVR_ISA_M8 (AVR_ISA_2xxx | AVR_ISA_MUL | AVR_ISA_MOVW | \ |
39 |
|
AVR_ISA_LPMX | AVR_ISA_SPM) |
40 |
#define AVR_ISA_M603 (AVR_ISA_2xxx | AVR_ISA_MEGA) |
#define AVR_ISA_M603 (AVR_ISA_2xxx | AVR_ISA_MEGA) |
41 |
#define AVR_ISA_M103 (AVR_ISA_M603 | AVR_ISA_ELPM) |
#define AVR_ISA_M103 (AVR_ISA_M603 | AVR_ISA_ELPM) |
42 |
#define AVR_ISA_M161 (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_LPMX | AVR_ISA_SPM) |
#define AVR_ISA_M161 (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | \ |
43 |
#define AVR_ISA_94K (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_LPMX) |
AVR_ISA_LPMX | AVR_ISA_SPM) |
44 |
|
#define AVR_ISA_94K (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | AVR_ISA_LPMX) |
45 |
#define AVR_ISA_M323 (AVR_ISA_M161 | AVR_ISA_BRK) |
#define AVR_ISA_M323 (AVR_ISA_M161 | AVR_ISA_BRK) |
46 |
#define AVR_ISA_M128 (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX) |
#define AVR_ISA_M128 (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX) |
47 |
|
|
241 |
AVR_INSN (swap, "r", "1001010rrrrr0010", 1, AVR_ISA_1200, 0x9402) |
AVR_INSN (swap, "r", "1001010rrrrr0010", 1, AVR_ISA_1200, 0x9402) |
242 |
|
|
243 |
/* Known to be decoded as `nop' by the old core. */ |
/* Known to be decoded as `nop' by the old core. */ |
244 |
AVR_INSN (movw, "v,v", "00000001ddddrrrr", 1, AVR_ISA_MUL, 0x0100) |
AVR_INSN (movw, "v,v", "00000001ddddrrrr", 1, AVR_ISA_MOVW, 0x0100) |
245 |
AVR_INSN (muls, "d,d", "00000010ddddrrrr", 1, AVR_ISA_MUL, 0x0200) |
AVR_INSN (muls, "d,d", "00000010ddddrrrr", 1, AVR_ISA_MUL, 0x0200) |
246 |
AVR_INSN (mulsu,"a,a", "000000110ddd0rrr", 1, AVR_ISA_MUL, 0x0300) |
AVR_INSN (mulsu,"a,a", "000000110ddd0rrr", 1, AVR_ISA_MUL, 0x0300) |
247 |
AVR_INSN (fmul, "a,a", "000000110ddd1rrr", 1, AVR_ISA_MUL, 0x0308) |
AVR_INSN (fmul, "a,a", "000000110ddd1rrr", 1, AVR_ISA_MUL, 0x0308) |