Blame as10k1/types.h

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