tcg-s390: new TCG Target
Original patch from Ulrich Hecht, further work from Alexander Graf and Richard Henderson. Cc: Ulrich Hecht <uli@suse.de> Cc: Alexander Graf <agraf@suse.de> Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
		
							parent
							
								
									b9e946c781
								
							
						
					
					
						commit
						48bb3750e1
					
				
							
								
								
									
										2
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @ -733,10 +733,12 @@ case "$cpu" in | ||||
|     s390) | ||||
|            QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS" | ||||
|            LDFLAGS="-m31 $LDFLAGS" | ||||
|            host_guest_base="yes" | ||||
|            ;; | ||||
|     s390x) | ||||
|            QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS" | ||||
|            LDFLAGS="-m64 $LDFLAGS" | ||||
|            host_guest_base="yes" | ||||
|            ;; | ||||
|     i386) | ||||
|            QEMU_CFLAGS="-m32 $QEMU_CFLAGS" | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -23,10 +23,15 @@ | ||||
|  */ | ||||
| #define TCG_TARGET_S390 1 | ||||
| 
 | ||||
| #ifdef __s390x__ | ||||
| #define TCG_TARGET_REG_BITS 64 | ||||
| #else | ||||
| #define TCG_TARGET_REG_BITS 32 | ||||
| #endif | ||||
| 
 | ||||
| #define TCG_TARGET_WORDS_BIGENDIAN | ||||
| 
 | ||||
| enum { | ||||
| typedef enum TCGReg { | ||||
|     TCG_REG_R0 = 0, | ||||
|     TCG_REG_R1, | ||||
|     TCG_REG_R2, | ||||
| @ -43,44 +48,49 @@ enum { | ||||
|     TCG_REG_R13, | ||||
|     TCG_REG_R14, | ||||
|     TCG_REG_R15 | ||||
| }; | ||||
| } TCGReg; | ||||
| 
 | ||||
| #define TCG_TARGET_NB_REGS 16 | ||||
| 
 | ||||
| /* optional instructions */ | ||||
| // #define TCG_TARGET_HAS_div_i32
 | ||||
| // #define TCG_TARGET_HAS_rot_i32
 | ||||
| // #define TCG_TARGET_HAS_ext8s_i32
 | ||||
| // #define TCG_TARGET_HAS_ext16s_i32
 | ||||
| // #define TCG_TARGET_HAS_ext8u_i32
 | ||||
| // #define TCG_TARGET_HAS_ext16u_i32
 | ||||
| // #define TCG_TARGET_HAS_bswap16_i32
 | ||||
| // #define TCG_TARGET_HAS_bswap32_i32
 | ||||
| #define TCG_TARGET_HAS_div2_i32 | ||||
| #define TCG_TARGET_HAS_rot_i32 | ||||
| #define TCG_TARGET_HAS_ext8s_i32 | ||||
| #define TCG_TARGET_HAS_ext16s_i32 | ||||
| #define TCG_TARGET_HAS_ext8u_i32 | ||||
| #define TCG_TARGET_HAS_ext16u_i32 | ||||
| #define TCG_TARGET_HAS_bswap16_i32 | ||||
| #define TCG_TARGET_HAS_bswap32_i32 | ||||
| // #define TCG_TARGET_HAS_not_i32
 | ||||
| // #define TCG_TARGET_HAS_neg_i32
 | ||||
| #define TCG_TARGET_HAS_neg_i32 | ||||
| // #define TCG_TARGET_HAS_andc_i32
 | ||||
| // #define TCG_TARGET_HAS_orc_i32
 | ||||
| // #define TCG_TARGET_HAS_eqv_i32
 | ||||
| // #define TCG_TARGET_HAS_nand_i32
 | ||||
| // #define TCG_TARGET_HAS_nor_i32
 | ||||
| 
 | ||||
| // #define TCG_TARGET_HAS_div_i64
 | ||||
| // #define TCG_TARGET_HAS_rot_i64
 | ||||
| // #define TCG_TARGET_HAS_ext8s_i64
 | ||||
| // #define TCG_TARGET_HAS_ext16s_i64
 | ||||
| // #define TCG_TARGET_HAS_ext32s_i64
 | ||||
| // #define TCG_TARGET_HAS_ext8u_i64
 | ||||
| // #define TCG_TARGET_HAS_ext16u_i64
 | ||||
| // #define TCG_TARGET_HAS_ext32u_i64
 | ||||
| // #define TCG_TARGET_HAS_bswap16_i64
 | ||||
| // #define TCG_TARGET_HAS_bswap32_i64
 | ||||
| // #define TCG_TARGET_HAS_bswap64_i64
 | ||||
| #if TCG_TARGET_REG_BITS == 64 | ||||
| #define TCG_TARGET_HAS_div2_i64 | ||||
| #define TCG_TARGET_HAS_rot_i64 | ||||
| #define TCG_TARGET_HAS_ext8s_i64 | ||||
| #define TCG_TARGET_HAS_ext16s_i64 | ||||
| #define TCG_TARGET_HAS_ext32s_i64 | ||||
| #define TCG_TARGET_HAS_ext8u_i64 | ||||
| #define TCG_TARGET_HAS_ext16u_i64 | ||||
| #define TCG_TARGET_HAS_ext32u_i64 | ||||
| #define TCG_TARGET_HAS_bswap16_i64 | ||||
| #define TCG_TARGET_HAS_bswap32_i64 | ||||
| #define TCG_TARGET_HAS_bswap64_i64 | ||||
| // #define TCG_TARGET_HAS_not_i64
 | ||||
| // #define TCG_TARGET_HAS_neg_i64
 | ||||
| #define TCG_TARGET_HAS_neg_i64 | ||||
| // #define TCG_TARGET_HAS_andc_i64
 | ||||
| // #define TCG_TARGET_HAS_orc_i64
 | ||||
| // #define TCG_TARGET_HAS_eqv_i64
 | ||||
| // #define TCG_TARGET_HAS_nand_i64
 | ||||
| // #define TCG_TARGET_HAS_nor_i64
 | ||||
| #endif | ||||
| 
 | ||||
| #define TCG_TARGET_HAS_GUEST_BASE | ||||
| 
 | ||||
| /* used for function call generation */ | ||||
| #define TCG_REG_CALL_STACK		TCG_REG_R15 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Richard Henderson
						Richard Henderson