tests/tcg/s390x: Test LOAD ADDRESS EXTENDED
Add a small test to prevent regressions. Userspace runs in primary mode, so LAE should always set the access register to 0. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Message-ID: <20240111092328.929421-3-iii@linux.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
		
							parent
							
								
									e358a25a97
								
							
						
					
					
						commit
						2bcc91ecea
					
				| @ -44,6 +44,7 @@ TESTS+=clgebr | ||||
| TESTS+=clc | ||||
| TESTS+=laalg | ||||
| TESTS+=add-logical-with-carry | ||||
| TESTS+=lae | ||||
| 
 | ||||
| cdsg: CFLAGS+=-pthread | ||||
| cdsg: LDFLAGS+=-pthread | ||||
|  | ||||
							
								
								
									
										31
									
								
								tests/tcg/s390x/lae.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								tests/tcg/s390x/lae.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| /*
 | ||||
|  * Test the LOAD ADDRESS EXTENDED instruction. | ||||
|  * | ||||
|  * SPDX-License-Identifier: GPL-2.0-or-later | ||||
|  */ | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| 
 | ||||
| int main(void) | ||||
| { | ||||
|     unsigned long long ar = -1, b2 = 100000, r, x2 = 500; | ||||
|     /*
 | ||||
|      * Hardcode the register number, since clang does not allow using %rN in | ||||
|      * place of %aN. | ||||
|      */ | ||||
|     register unsigned long long r2 __asm__("2"); | ||||
|     int tmp; | ||||
| 
 | ||||
|     asm("ear %[tmp],%%a2\n" | ||||
|         "lae %%r2,42(%[x2],%[b2])\n" | ||||
|         "ear %[ar],%%a2\n" | ||||
|         "sar %%a2,%[tmp]" | ||||
|         : [tmp] "=&r" (tmp), "=&r" (r2), [ar] "+r" (ar) | ||||
|         : [b2] "r" (b2), [x2] "r" (x2) | ||||
|         : "memory"); | ||||
|     r = r2; | ||||
|     assert(ar == 0xffffffff00000000ULL); | ||||
|     assert(r == 100542); | ||||
| 
 | ||||
|     return EXIT_SUCCESS; | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Ilya Leoshkevich
						Ilya Leoshkevich