filename | src/tools/gendec.h |
changeset | 736:a02d1475ccfd |
prev | 561:533f6b478071 |
next | 948:545c85cc56f1 |
author | nkeynes |
date | Mon Jan 05 04:19:46 2009 +0000 (15 years ago) |
branch | lxdream-mem |
permissions | -rw-r--r-- |
last change | Move address space decls to mmu.h Finally remove sh4_read_long and friends |
view | annotate | diff | log | raw |
1 /**
2 * $Id$
3 *
4 * mem is responsible for creating and maintaining the overall system memory
5 * map, as visible from the SH4 processor. (Note the ARM has a different map)
6 *
7 * Copyright (c) 2005 Nathan Keynes.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 */
20 #ifndef lxdream_gendec_H
21 #define lxdream_gendec_H 1
23 #include <stdint.h>
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
29 #define MAX_OPERAND_NAME 8
30 #define MAX_OPERANDS 4
31 #define MAX_OPERATION_FORMAT 64
32 #define MAX_RULES 512
34 #define USE_NONE 0
35 #define USE_READ 1
36 #define USE_WRITE 2
37 #define USE_READWRITE 3
39 struct operand {
40 int bit_count;
41 int bit_shift;
42 int left_shift;
43 int is_signed;
44 int use_mode;
45 char name[MAX_OPERAND_NAME+1];
46 };
48 struct rule {
49 uint32_t bits;
50 uint32_t mask;
51 int bit_count;
52 int operand_count;
53 int flags_use_mode;
54 struct operand operands[MAX_OPERANDS];
55 char format[MAX_OPERATION_FORMAT+1];
56 };
58 struct ruleset {
59 uint32_t rule_count;
60 struct rule *rules[MAX_RULES];
61 };
63 struct ruleset *parse_ruleset_file( FILE *f );
64 void dump_ruleset( struct ruleset *rules, FILE *f );
65 void dump_rulesubset( struct ruleset *rules, int ruleidx[], int rule_count, FILE *f );
67 struct action {
68 char operand_names[MAX_OPERANDS][MAX_OPERAND_NAME+1];
69 char *body;
70 };
72 struct actionset {
73 char *pretext;
74 char *posttext;
75 char *actions[MAX_RULES];
76 };
78 struct actionset *parse_action_file( struct ruleset *rules, FILE *f );
80 int generate_decoder( struct ruleset *rules, struct actionset *actions, FILE *f );
82 #ifdef __cplusplus
83 }
84 #endif
86 #endif /* !lxdream_gendec_H */
.