Most machines had undefined valu_t and redefined it to a different type. Edit mach/*/as/mach0.c to remove such redefinitions, so the next change to valu_t will affect all machines. Edit mach/proto/as/comm0.h to change valu_t to int64_t, and add uvalu_t and uint64_t. Remove int64_t y_valu8 from the yacc %union, now that valu_t y_valu can hold 64 bits. Replace y_valu8 with y_valu. The .data8 pseudo becomes less special; it now accepts absolute expressions. This change simplifies the assembler and seems to have no effect on the assembled output. Among the files in share/ack/examples, the only changes are in hilo_bas.* and startrek_c.linuxppc, but those files seem to change whenever I rebuild them.
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			796 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			796 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Header; mach0.c, v1.2 06-Mar-89 AJM */
 | |
| 
 | |
| #define LISTING
 | |
| #define ASLD
 | |
| #define THREE_PASS
 | |
| #define DEBUG 0
 | |
| /*
 | |
| #define WORDS_REVERSED
 | |
| #define BYTES_REVERSED
 | |
| */
 | |
| #undef ADDR_T
 | |
| #define ADDR_T long
 | |
| 
 | |
| #undef word_t
 | |
| #define word_t	long
 | |
| 
 | |
| #undef ALIGNWORD
 | |
| #define ALIGNWORD	4
 | |
| 
 | |
| #undef ALIGNSECT
 | |
| #define ALIGNSECT	4
 | |
| 
 | |
| #undef VALWIDTH
 | |
| #define VALWIDTH	8
 | |
| 
 | |
| #define S_REG		0xF
 | |
| #define S_NUM		0x8
 | |
| 
 | |
| #define	ADC	0x00A00000
 | |
| #define	ADD	0x00800000
 | |
| #define	AND	0x00000000
 | |
| #define	BIC	0x01C00000
 | |
| #define	EOR	0x00200000
 | |
| #define	ORR	0x01800000
 | |
| #define	RSB	0x00600000
 | |
| #define	RSC	0x00E00000
 | |
| #define	SBC	0x00C00000
 | |
| #define	SUB	0x00400000
 | |
| #define	MOV	0x01A00000
 | |
| #define	MVN	0x01E00000
 | |
| #define	CMN	0x01700000
 | |
| #define	CMP	0x01500000
 | |
| #define	TEQ	0x01300000
 | |
| #define	TST	0x01100000
 | |
| #define LDR	0x04100000
 | |
| #define STR	0x04000000
 | |
| 
 |