|
|
1.1 root 1: /*
2: * MicroBlaze insn decoding macros.
3: *
4: * Copyright (c) 2009 Edgar E. Iglesias <[email protected]>
5: *
6: * This library is free software; you can redistribute it and/or
7: * modify it under the terms of the GNU Lesser General Public
8: * License as published by the Free Software Foundation; either
9: * version 2 of the License, or (at your option) any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, see <http://www.gnu.org/licenses/>.
18: */
19:
20: /* Convenient binary macros. */
21: #define HEX__(n) 0x##n##LU
22: #define B8__(x) ((x&0x0000000FLU)?1:0) \
23: + ((x&0x000000F0LU)?2:0) \
24: + ((x&0x00000F00LU)?4:0) \
25: + ((x&0x0000F000LU)?8:0) \
26: + ((x&0x000F0000LU)?16:0) \
27: + ((x&0x00F00000LU)?32:0) \
28: + ((x&0x0F000000LU)?64:0) \
29: + ((x&0xF0000000LU)?128:0)
30: #define B8(d) ((unsigned char)B8__(HEX__(d)))
31:
32: /* Decode logic, mask and value. */
33: #define DEC_ADD {B8(00000000), B8(00110001)}
34: #define DEC_SUB {B8(00000001), B8(00110001)}
35: #define DEC_AND {B8(00100001), B8(00110101)}
36: #define DEC_XOR {B8(00100010), B8(00110111)}
37: #define DEC_OR {B8(00100000), B8(00110111)}
38: #define DEC_BIT {B8(00100100), B8(00111111)}
39: #define DEC_MSR {B8(00100101), B8(00111111)}
40:
41: #define DEC_BARREL {B8(00010001), B8(00110111)}
42: #define DEC_MUL {B8(00010000), B8(00110111)}
43: #define DEC_DIV {B8(00010010), B8(00110111)}
44:
45: #define DEC_LD {B8(00110000), B8(00110100)}
46: #define DEC_ST {B8(00110100), B8(00110100)}
47: #define DEC_IMM {B8(00101100), B8(00111111)}
48:
49: #define DEC_BR {B8(00100110), B8(00110111)}
50: #define DEC_BCC {B8(00100111), B8(00110111)}
51: #define DEC_RTS {B8(00101101), B8(00111111)}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.