|
Packit |
427e91 |
#ifndef TYPES_H
|
|
Packit |
427e91 |
#define TYPES_H
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#include "list.h"
|
|
Packit |
427e91 |
//i'm not sure about these type definitions, especially on non-x86
|
|
Packit |
427e91 |
#ifdef NO_LINUX //in the event this actually is used on non-linux platforms
|
|
Packit |
427e91 |
#define u8 unsigned char
|
|
Packit |
427e91 |
#define u16 unsigned short int
|
|
Packit |
427e91 |
#define u32 unsigned int
|
|
Packit |
427e91 |
#else
|
|
Packit |
427e91 |
#include <linux/types.h>
|
|
Packit |
427e91 |
#include <asm/byteorder.h>
|
|
Packit |
427e91 |
#define u8 __u8
|
|
Packit |
427e91 |
#define u16 __u16
|
|
Packit |
427e91 |
#define u32 __u32
|
|
Packit |
427e91 |
#endif
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define MAX_SYM_LEN 32
|
|
Packit |
427e91 |
#define PATCH_NAME_SIZE 32
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define MAX_TANK_ADDR 0x9f //maximum number of tank address
|
|
Packit |
427e91 |
#define MAX_LINE_LENGTH 256 //max length of a source code line
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define GPR_TYPE_INPUT 0x0
|
|
Packit |
427e91 |
#define GPR_TYPE_OUTPUT 0x1
|
|
Packit |
427e91 |
#define GPR_TYPE_CONSTANT 0x2
|
|
Packit |
427e91 |
#define GPR_TYPE_STATIC 0x3
|
|
Packit |
427e91 |
#define GPR_TYPE_DYNAMIC 0x4
|
|
Packit |
427e91 |
#define GPR_TYPE_CONTROL 0x5
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define TYPE_TRAM_DATA 0x6
|
|
Packit |
427e91 |
#define TYPE_TRAM_ADDR_READ 0x7
|
|
Packit |
427e91 |
#define TYPE_TRAM_ADDR_WRITE 0x8
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define TYPE_MACRO_ARG 0x9
|
|
Packit |
427e91 |
#define GPR_TYPE_EQUATE 0xa //just a symbol
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define TRAM_READ 0x1
|
|
Packit |
427e91 |
#define TRAM_WRITE 0x2
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define DBG_SYM 1
|
|
Packit |
427e91 |
#define DBG_GPR 2
|
|
Packit |
427e91 |
#define DBG_TRAM 4
|
|
Packit |
427e91 |
#define DBG_INSTR 8
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
struct symbol{
|
|
Packit |
427e91 |
char name[MAX_SYM_LEN ];
|
|
Packit |
427e91 |
u32 value; //initial value of GPR, or the value (if it's an equate);
|
|
Packit |
427e91 |
u16 address; //address of GPR
|
|
Packit |
427e91 |
};
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
struct sym{
|
|
Packit |
427e91 |
struct list_head list;
|
|
Packit |
427e91 |
u16 type;
|
|
Packit |
427e91 |
struct symbol data;
|
|
Packit |
427e91 |
};
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
struct control{
|
|
Packit |
427e91 |
struct list_head list;
|
|
Packit |
427e91 |
u16 type;
|
|
Packit |
427e91 |
struct symbol data;
|
|
Packit |
427e91 |
u32 max;
|
|
Packit |
427e91 |
u32 min;
|
|
Packit |
427e91 |
};
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
//all tram read/writes from a linked-list with list head in the delay/lookup-table definition block.
|
|
Packit |
427e91 |
struct tram{
|
|
Packit |
427e91 |
struct list_head list;
|
|
Packit |
427e91 |
u16 type;
|
|
Packit |
427e91 |
struct symbol data;
|
|
Packit |
427e91 |
struct list_head tram;
|
|
Packit |
427e91 |
};
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
//a delay block
|
|
Packit |
427e91 |
struct delay{
|
|
Packit |
427e91 |
u32 size;
|
|
Packit |
427e91 |
u8 read;
|
|
Packit |
427e91 |
u8 write;
|
|
Packit |
427e91 |
struct list_head tram;
|
|
Packit |
427e91 |
char name[MAX_SYM_LEN];
|
|
Packit |
427e91 |
};
|
|
Packit |
427e91 |
//a lookup-table block
|
|
Packit |
427e91 |
struct lookup{
|
|
Packit |
427e91 |
u32 size;
|
|
Packit |
427e91 |
u8 read;
|
|
Packit |
427e91 |
u8 write;
|
|
Packit |
427e91 |
struct list_head tram;
|
|
Packit |
427e91 |
char name[MAX_SYM_LEN];
|
|
Packit |
427e91 |
};
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
struct macrdef{
|
|
Packit |
427e91 |
char *ptr;
|
|
Packit |
427e91 |
char name[MAX_SYM_LEN ];
|
|
Packit |
427e91 |
char *operands;
|
|
Packit |
427e91 |
int line_num;
|
|
Packit |
427e91 |
};
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define NO_SYM "__NO_NAME"
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define MAX_DEF_MACRO 30
|
|
Packit |
427e91 |
#define MAX_MAC_DEPTH 5
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
//some C macros:
|
|
Packit |
427e91 |
//blank ptr:
|
|
Packit |
427e91 |
#define blank(PTR) (*PTR==' ' || *PTR=='\t')
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
//value is end of a symbol:
|
|
Packit |
427e91 |
#define symend(ptr) ( blank(ptr) || *ptr=='\0'|| *ptr==','||*ptr=='+'||*ptr=='-'||*ptr=='/'||*ptr=='*')
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
//used for advancing over white spaces and comma:
|
|
Packit |
427e91 |
#define advance(ptr) while( *ptr == ' ' || *ptr== '\t' ||*ptr==',' ){ ptr++;}
|
|
Packit |
427e91 |
//advance over white spaces only:
|
|
Packit |
427e91 |
#define advance_over_whites(ptr) while(*ptr == ' ' || *ptr== '\t'){ptr++;}
|
|
Packit |
427e91 |
//advances to end of symbol
|
|
Packit |
427e91 |
#define advance_to_end(ptr) while(!symend(ptr)){ptr++;}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
//"returns" pointer to the previous entry:
|
|
Packit |
427e91 |
#define prev_sym(entry) list_entry(entry->prev,struct sym,list)
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#endif
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#define GPR_BASE 0x100
|
|
Packit |
427e91 |
#define TRAM_DATA_BASE 0x200
|
|
Packit |
427e91 |
#define TRAM_ADDR_BASE 0x300
|