Search
lxdream.org :: lxdream/src/tools/gendec.h
lxdream 0.9.1
released Jun 29
Download Now
filename src/tools/gendec.h
changeset 561:533f6b478071
prev420:e6f43dec3cf0
next736:a02d1475ccfd
author nkeynes
date Tue Jan 01 05:08:38 2008 +0000 (12 years ago)
branchlxdream-mmu
permissions -rw-r--r--
last change Enable Id keyword on all source files
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 gendec_H
    21 #define gendec_H
    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
    85 #endif
.