included changes from Andy Michael
This commit is contained in:
		
							parent
							
								
									b90690ba5d
								
							
						
					
					
						commit
						af5ed82bff
					
				
					 5 changed files with 98 additions and 55 deletions
				
			
		| 
						 | 
					@ -1,7 +1,12 @@
 | 
				
			||||||
 | 
					/* $Header; mach0.c, v1.1 20-Oct-88 AJM */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define LISTING
 | 
					#define LISTING
 | 
				
			||||||
#define ASLD
 | 
					#define ASLD
 | 
				
			||||||
#define THREE_PASS
 | 
					#define THREE_PASS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define WORDS_REVERSED
 | 
				
			||||||
 | 
					#define BYTES_REVERSED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef valu_t
 | 
					#undef valu_t
 | 
				
			||||||
#define valu_t 	long
 | 
					#define valu_t 	long
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					/* $Header: mach2.c, V1.3 2-Nov-88 AJM */
 | 
				
			||||||
%token <y_word> COND
 | 
					%token <y_word> COND
 | 
				
			||||||
%token <y_word> LINK
 | 
					%token <y_word> LINK
 | 
				
			||||||
%token <y_word> BRANCH
 | 
					%token <y_word> BRANCH
 | 
				
			||||||
| 
						 | 
					@ -8,13 +9,15 @@
 | 
				
			||||||
%token <y_word> PEE
 | 
					%token <y_word> PEE
 | 
				
			||||||
%token <y_word> REG
 | 
					%token <y_word> REG
 | 
				
			||||||
%token <y_word> SHIFT
 | 
					%token <y_word> SHIFT
 | 
				
			||||||
%token <y_word> RXX
 | 
					%token <y_word> RRX
 | 
				
			||||||
%token <y_word> SDT
 | 
					%token <y_word> SDT
 | 
				
			||||||
%token <y_word> BYTE
 | 
					%token <y_word> BYTE
 | 
				
			||||||
%token <y_word> TRANS
 | 
					%token <y_word> TRANS
 | 
				
			||||||
%token <y_word> BDT
 | 
					%token <y_word> BDT
 | 
				
			||||||
%token <y_word> SWI
 | 
					%token <y_word> SWI
 | 
				
			||||||
%token <y_word> ADR
 | 
					%token <y_word> ADR
 | 
				
			||||||
 | 
					%token <y_word> MUL
 | 
				
			||||||
 | 
					%token <y_word> MLA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%type <y_word> optlink optcond opts optt optp optb optexc reglist rlist
 | 
					%type <y_word> optlink optcond opts optt optp optb optexc reglist rlist
 | 
				
			||||||
%type <y_word> optsign optpsr optshift shftcnt address offset
 | 
					%type <y_word> optsign optpsr optshift shftcnt address offset
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					/* $Header: mach3.c, v1.5 2-Nov-88 AJM */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
0,		COND,		0x00000000,	".EQ",
 | 
					0,		COND,		0x00000000,	".EQ",
 | 
				
			||||||
0,		COND,		0x10000000,	".NE",
 | 
					0,		COND,		0x10000000,	".NE",
 | 
				
			||||||
0,		COND,		0x20000000,	".CS",
 | 
					0,		COND,		0x20000000,	".CS",
 | 
				
			||||||
| 
						 | 
					@ -82,7 +84,7 @@
 | 
				
			||||||
0,		SHIFT,		0x00000040,	"ASR",
 | 
					0,		SHIFT,		0x00000040,	"ASR",
 | 
				
			||||||
0,		SHIFT,		0x00000060,	"ROR",
 | 
					0,		SHIFT,		0x00000060,	"ROR",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
0,		RXX,		0x00000060,	"RXX",
 | 
					0,		RRX,		0x00000060,	"RRX",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
0,		SDT,		0x04100000,	"LDR",
 | 
					0,		SDT,		0x04100000,	"LDR",
 | 
				
			||||||
0,		SDT,		0x04000000,	"STR",
 | 
					0,		SDT,		0x04000000,	"STR",
 | 
				
			||||||
| 
						 | 
					@ -108,8 +110,11 @@
 | 
				
			||||||
0,		BDT,		0x08000000,	"STMED",
 | 
					0,		BDT,		0x08000000,	"STMED",
 | 
				
			||||||
0,		BDT,		0x08800000,	"STMEA",
 | 
					0,		BDT,		0x08800000,	"STMEA",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
0,		SWI,		0,		"SWI",
 | 
					0,		SWI,		0x0F000000,	"SWI",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
0,		ADR,		0,		"ADR",
 | 
					0,		ADR,		0,		"ADR",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					0,		MUL,		0x00000090,	"MUL",
 | 
				
			||||||
 | 
					0,		MLA,		0x00200090,	"MLA",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					/* $Header: mach4.c, v1.5 2-Nov-88 AJM */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
operation	: BRANCH optlink expr
 | 
					operation	: BRANCH optlink expr
 | 
				
			||||||
			{branch($1, $2, $3.val);}
 | 
								{branch($1, $2, $3.val);}
 | 
				
			||||||
		| DATA1 optcond opts optp REG ',' REG ',' operand
 | 
							| DATA1 optcond opts optp REG ',' REG ',' operand
 | 
				
			||||||
| 
						 | 
					@ -11,9 +13,13 @@ operation	: BRANCH optlink expr
 | 
				
			||||||
		| BDT optcond REG optexc ',' reglist optpsr
 | 
							| BDT optcond REG optexc ',' reglist optpsr
 | 
				
			||||||
			{emit4($1|$2|$3<<16|$4|$6|$7);}
 | 
								{emit4($1|$2|$3<<16|$4|$6|$7);}
 | 
				
			||||||
		| SWI optcond expr
 | 
							| SWI optcond expr
 | 
				
			||||||
			{emit4($1|$2);}
 | 
								{emit4($1|$2|$3.val);}
 | 
				
			||||||
		| ADR REG ',' expr
 | 
							| ADR optcond REG ',' expr
 | 
				
			||||||
			{calcadr($2, $4.val, $4.typ);}
 | 
								{calcadr($2, $3, $5.val, $5.typ);}
 | 
				
			||||||
 | 
							| MUL optcond REG ',' REG ',' REG
 | 
				
			||||||
 | 
								{emit4($1|$2|$3<<16|$5|$7<<8);}
 | 
				
			||||||
 | 
							| MLA optcond REG ',' REG ',' REG ',' REG
 | 
				
			||||||
 | 
								{emit4($1|$2|$3<<16|$5|$7<<8|$9<<12);}
 | 
				
			||||||
		;
 | 
							;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
optlink		: 	{$$=0;}
 | 
					optlink		: 	{$$=0;}
 | 
				
			||||||
| 
						 | 
					@ -64,7 +70,7 @@ operand		: REG optshift
 | 
				
			||||||
 | 
					
 | 
				
			||||||
optshift	: ',' SHIFT shftcnt
 | 
					optshift	: ',' SHIFT shftcnt
 | 
				
			||||||
			{$$ = $2|$3;}
 | 
								{$$ = $2|$3;}
 | 
				
			||||||
		| ',' RXX
 | 
							| ',' RRX
 | 
				
			||||||
			{$$ = $2;}
 | 
								{$$ = $2;}
 | 
				
			||||||
		|
 | 
							|
 | 
				
			||||||
			{$$ = 0;}
 | 
								{$$ = 0;}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					/* $Header: mach5.c, v1.6 3-Nov-88 AJM */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
branch(brtyp, link, val)
 | 
					branch(brtyp, link, val)
 | 
				
			||||||
word_t brtyp;
 | 
					word_t brtyp;
 | 
				
			||||||
word_t link;
 | 
					word_t link;
 | 
				
			||||||
| 
						 | 
					@ -15,7 +17,7 @@ valu_t val;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
data(opc, ins, val, typ)
 | 
					data(opc, ins, val, typ)
 | 
				
			||||||
word_t opc, ins;
 | 
					long opc, ins;
 | 
				
			||||||
valu_t val;
 | 
					valu_t val;
 | 
				
			||||||
short typ;
 | 
					short typ;
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -42,7 +44,8 @@ short typ;
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}	
 | 
						}	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (opc == MOV) {
 | 
						if (opc == MOV && typ != S_ABS)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
		if (small((val & 0xF0000000) == 0xF0000000, 8)){
 | 
							if (small((val & 0xF0000000) == 0xF0000000, 8)){
 | 
				
			||||||
			emit4(0xE51F0004 | (ins & 0xF000));
 | 
								emit4(0xE51F0004 | (ins & 0xF000));
 | 
				
			||||||
			emit4(val);
 | 
								emit4(val);
 | 
				
			||||||
| 
						 | 
					@ -57,7 +60,8 @@ short typ;
 | 
				
			||||||
		DOTVAL += 16;
 | 
							DOTVAL += 16;
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (opc == ADD) {
 | 
						if (opc == ADD && typ != S_ABS)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
		if (small((val & 0xF0000000) == 0xF0000000, 4)){
 | 
							if (small((val & 0xF0000000) == 0xF0000000, 4)){
 | 
				
			||||||
			emit4(0xE51F0004 | (ins & 0xF000));
 | 
								emit4(0xE51F0004 | (ins & 0xF000));
 | 
				
			||||||
			emit4(val);
 | 
								emit4(val);
 | 
				
			||||||
| 
						 | 
					@ -70,10 +74,13 @@ short typ;
 | 
				
			||||||
		emit4(0xE2800000 | (ins&0xFF000) | (ins&0xF000)>>12);
 | 
							emit4(0xE2800000 | (ins&0xFF000) | (ins&0xF000)>>12);
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (pass == PASS_1)
 | 
						/* default: */
 | 
				
			||||||
		DOTVAL += 16;
 | 
							if (pass == PASS_1)
 | 
				
			||||||
	else
 | 
								DOTVAL += 16;
 | 
				
			||||||
		serror("immediate value out of range");
 | 
							else
 | 
				
			||||||
 | 
								serror("immediate value out of range");
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
calcimm(opc,val,typ)
 | 
					calcimm(opc,val,typ)
 | 
				
			||||||
| 
						 | 
					@ -85,61 +92,70 @@ short typ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (typ == S_UND) return 0;
 | 
						if (typ == S_UND) return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((*val & ~0xFF) == 0) return 1;
 | 
						if ((*val & 0xFFFFFF00) == 0) return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((~*val & ~0xFF) == 0){
 | 
						if ((~*val & 0xFFFFFF00) == 0){
 | 
				
			||||||
		if (*opc == AND) {
 | 
							if (*opc == AND)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
			*val = ~*val;
 | 
								*val = ~*val;
 | 
				
			||||||
			*opc = BIC;
 | 
								*opc = BIC;
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
								}
 | 
				
			||||||
		if (*opc == MOV) {
 | 
							if (*opc == MOV)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
			*val = ~*val;
 | 
								*val = ~*val;
 | 
				
			||||||
			*opc = MVN;
 | 
								*opc = MVN;
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
								}
 | 
				
			||||||
		if (*opc == ADC) {
 | 
							if (*opc == ADC)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
			*val = ~*val;
 | 
								*val = ~*val;
 | 
				
			||||||
			*opc = SBC;
 | 
								*opc = SBC;
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}	
 | 
						}	
 | 
				
			||||||
	if ((-1**val & ~0xFF) == 0 ){
 | 
						if ((-1**val & 0xFFFFFF00) == 0 ){
 | 
				
			||||||
		if (*opc == ADD) {
 | 
							if (*opc == ADD)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
			*val *= -1;
 | 
								*val *= -1;
 | 
				
			||||||
			*opc = SUB;
 | 
								*opc = SUB;
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
								}
 | 
				
			||||||
		if (*opc == CMP) {
 | 
							if (*opc == CMP)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
			*val *= -1;
 | 
								*val *= -1;
 | 
				
			||||||
			*opc = CMN;
 | 
								*opc = CMN;
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
								}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	do{
 | 
						do{
 | 
				
			||||||
		rotateleft2(&*val);
 | 
							rotateleft2(&*val);
 | 
				
			||||||
		i++;
 | 
							i++;
 | 
				
			||||||
		if((*val & ~0xFF) == 0){
 | 
							if((*val & 0xFFFFFF00) == 0){
 | 
				
			||||||
			*val = *val|i<<8;
 | 
								*val = *val|i<<8;
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if ((~*val & ~0xFF) == 0){
 | 
							if ((~*val & 0xFFFFFF00) == 0){
 | 
				
			||||||
			if (*opc == AND) {
 | 
								if (*opc == AND)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
				*val = ~*val|i<<8;
 | 
									*val = ~*val|i<<8;
 | 
				
			||||||
				*opc = BIC;
 | 
									*opc = BIC;
 | 
				
			||||||
				return 1;
 | 
									return 1;
 | 
				
			||||||
			}
 | 
									}
 | 
				
			||||||
			if (*opc == MOV) {
 | 
								if (*opc == MOV)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
				*val = ~*val|i<<8;
 | 
									*val = ~*val|i<<8;
 | 
				
			||||||
				*opc = MVN;
 | 
									*opc = MVN;
 | 
				
			||||||
				return 1;
 | 
									return 1;
 | 
				
			||||||
			}
 | 
									}
 | 
				
			||||||
			if (*opc == ADC) {
 | 
								if (*opc == ADC)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
				*val = ~*val|i<<8;
 | 
									*val = ~*val|i<<8;
 | 
				
			||||||
				*opc = SBC;
 | 
									*opc = SBC;
 | 
				
			||||||
				return 1;
 | 
									return 1;
 | 
				
			||||||
			}
 | 
									}
 | 
				
			||||||
		}	
 | 
							}	
 | 
				
			||||||
	}while(i<15);
 | 
						}while(i<15);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -150,17 +166,17 @@ word_t
 | 
				
			||||||
calcoffset(val)
 | 
					calcoffset(val)
 | 
				
			||||||
valu_t val;
 | 
					valu_t val;
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if((val & ~0xFFF) == 0)
 | 
						if((val & 0xFFFFF000) == 0)
 | 
				
			||||||
		return(val|0x00800000);
 | 
							return(val|0x00800000);
 | 
				
			||||||
	val *= -1;
 | 
						val *= -1;
 | 
				
			||||||
	if((val & ~0xFFF) == 0)
 | 
						if((val & 0xFFFFF000) == 0)
 | 
				
			||||||
		return(val);
 | 
							return(val);
 | 
				
			||||||
	serror("offset out of range");
 | 
						serror("offset out of range");
 | 
				
			||||||
	return(0);
 | 
						return(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
word_t
 | 
					word_t
 | 
				
			||||||
calcaddress(val,typ,reg)
 | 
					calcaddress (val,typ,reg)
 | 
				
			||||||
valu_t val;
 | 
					valu_t val;
 | 
				
			||||||
short typ;
 | 
					short typ;
 | 
				
			||||||
word_t reg;
 | 
					word_t reg;
 | 
				
			||||||
| 
						 | 
					@ -172,10 +188,10 @@ word_t reg;
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	tmpval = val - DOTVAL - 8;
 | 
						tmpval = val - DOTVAL - 8;
 | 
				
			||||||
	if(small((tmpval & ~0xFFF) == 0, 8))
 | 
						if(small((tmpval & 0xFFFFF000) == 0, 8))
 | 
				
			||||||
		return(val|0x008F0000);
 | 
							return(val|0x008F0000);
 | 
				
			||||||
	tmpval *= -1;
 | 
						tmpval *= -1;
 | 
				
			||||||
	if(small((tmpval & ~0xFFF) == 0, 8))
 | 
						if(small((tmpval & 0xFFFFF000) == 0, 8))
 | 
				
			||||||
		return(val|0x000F0000);
 | 
							return(val|0x000F0000);
 | 
				
			||||||
	emit4(0xE51F0004 | reg << 12);
 | 
						emit4(0xE51F0004 | reg << 12);
 | 
				
			||||||
	emit4(val | 0xF0000000);
 | 
						emit4(val | 0xF0000000);
 | 
				
			||||||
| 
						 | 
					@ -183,36 +199,44 @@ word_t reg;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
word_t
 | 
					word_t
 | 
				
			||||||
calcadr(reg, val, typ)
 | 
					calcadr(ins, reg, val, typ)
 | 
				
			||||||
word_t reg;
 | 
					word_t ins, reg;
 | 
				
			||||||
valu_t val;
 | 
					valu_t val;
 | 
				
			||||||
short typ;
 | 
					short typ;
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	valu_t tmpval = val;
 | 
						valu_t tmpval = val;
 | 
				
			||||||
 | 
						word_t opc;
 | 
				
			||||||
	int i = 0;
 | 
						int i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((val & 0xFC000000) && (typ != S_UND)){
 | 
					 | 
				
			||||||
		serror("address out of range");
 | 
					 | 
				
			||||||
		return 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (typ != S_ABS){
 | 
						if (typ != S_ABS){
 | 
				
			||||||
		tmpval = val-DOTVAL-8;
 | 
							tmpval = val-DOTVAL-8;
 | 
				
			||||||
		if (small((tmpval & ~0xFF) == 0),12){
 | 
							if (tmpval > 0) {
 | 
				
			||||||
			emit4(0xE2000000|ADD|(long)0xF<<16|reg<<12|tmpval);
 | 
								if (small((tmpval & 0xFFFFFF00) == 0),12){
 | 
				
			||||||
			return 0;
 | 
									emit4(ins|ADD|0x020F0000|reg<<12|tmpval);
 | 
				
			||||||
 | 
									return 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
		tmpval *= -1;
 | 
							tmpval *= -1;
 | 
				
			||||||
		if (small((tmpval & ~0xFF) == 0), 12){
 | 
							if (small((tmpval & 0xFFFFFF00) == 0), 12){
 | 
				
			||||||
			emit4(0xE2000000|SUB|(long)0xF<<16|reg<<12|tmpval);
 | 
								emit4(ins|SUB|0x020F0000|reg<<12|tmpval);
 | 
				
			||||||
			return 0;
 | 
								return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	data(MOV, 0xE2000000||reg<<12, val, typ);
 | 
						tmpval = val;
 | 
				
			||||||
 | 
						opc = MOV;
 | 
				
			||||||
 | 
						if (calcimm(&opc, &tmpval, typ)){
 | 
				
			||||||
 | 
							emit4(ins|opc|0x020F0000|reg<<12|tmpval);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
					/* Failed */
 | 
				
			||||||
 | 
						if (pass == PASS_1)
 | 
				
			||||||
 | 
							DOTVAL += 16;
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							serror("illegal ADR argument");
 | 
				
			||||||
 | 
						return ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -223,7 +247,7 @@ short typ;
 | 
				
			||||||
word_t styp;
 | 
					word_t styp;
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (typ=S_UND) return 0;
 | 
						if (typ=S_UND) return 0;
 | 
				
			||||||
	if (val & ~0x1F) serror("shiftcount out of range");
 | 
						if (val & 0xFFFFFFE0) serror("shiftcount out of range");
 | 
				
			||||||
	if (styp && !val) warning("shiftcount 0");
 | 
						if (styp && !val) warning("shiftcount 0");
 | 
				
			||||||
	return((val & 0x1F)<<7);
 | 
						return((val & 0x1F)<<7);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue