 c09015dd04
			
		
	
	
		c09015dd04
		
	
	
	
	
		
			
			Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
		
			
				
	
	
		
			45 lines
		
	
	
		
			965 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			965 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <stdint.h>
 | |
| #include "sys.h"
 | |
| #include "crisutils.h"
 | |
| 
 | |
| /* this would be better to do in asm, it's an orgy in GCC inline asm now.  */
 | |
| 
 | |
| /* ACR will be clobbered.  */
 | |
| #define cris_addoq(o, v) \
 | |
| 	asm volatile ("addoq\t%1, %0, $acr\n" : : "r" (v), "i" (o) : "acr");
 | |
| 
 | |
| 
 | |
| int main(void)
 | |
| {
 | |
| 	int x[3] = {0x55aa77ff, 0xccff2244, 0x88ccee19};
 | |
| 	int *p, *t = x + 1;
 | |
| 
 | |
| 	cris_tst_cc_init();
 | |
| 	asm volatile ("setf\tzvnc\n");
 | |
| 	cris_addoq(0, t);
 | |
| 	cris_tst_cc(1, 1, 1, 1);
 | |
| 	asm volatile ("move.d\t$acr, %0\n" : "=r" (p));
 | |
| 	if (*p != 0xccff2244)
 | |
| 		err();
 | |
| 
 | |
| 	cris_tst_cc_init();
 | |
| 	asm volatile ("setf\tzvnc\n");
 | |
| 	cris_addoq(4, t);
 | |
| 	cris_tst_cc(0, 0, 0, 0);
 | |
| 	asm volatile ("move.d\t$acr, %0\n" : "=r" (p));
 | |
| 	if (*p != 0x88ccee19)
 | |
| 		err();
 | |
| 
 | |
| 	cris_tst_cc_init();
 | |
| 	asm volatile ("clearf\tzvnc\n");
 | |
| 	cris_addoq(-8, t + 1);
 | |
| 	cris_tst_cc(0, 0, 0, 0);
 | |
| 	asm volatile ("move.d\t$acr, %0\n" : "=r" (p));
 | |
| 	if (*p != 0x55aa77ff)
 | |
| 		err();
 | |
| 	pass();
 | |
| 	return 0;
 | |
| }
 |