symbian-qemu-0.9.1-12/qemu-symbian-svp/tests/cris/crisutils.h
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 static char *tst_cc_loc = NULL;
       
     2 
       
     3 #define cris_tst_cc_init() \
       
     4 do { tst_cc_loc = "test_cc failed at " CURRENT_LOCATION; } while(0)
       
     5 
       
     6 /* We need a real symbol to signal error.  */
       
     7 void _err(void) {
       
     8 	if (!tst_cc_loc)
       
     9 		tst_cc_loc = "tst_cc_failed\n";
       
    10 	_fail(tst_cc_loc);
       
    11 }
       
    12 
       
    13 extern inline void cris_tst_cc_n1(void)
       
    14 {
       
    15 	asm volatile ("bpl _err\n"
       
    16 		      "nop\n");
       
    17 }
       
    18 extern inline void cris_tst_cc_n0(void)
       
    19 {
       
    20 	asm volatile ("bmi _err\n"
       
    21 		      "nop\n");
       
    22 }
       
    23 
       
    24 extern inline void cris_tst_cc_z1(void)
       
    25 {
       
    26 	asm volatile ("bne _err\n"
       
    27 		      "nop\n");
       
    28 }
       
    29 extern inline void cris_tst_cc_z0(void)
       
    30 {
       
    31 	asm volatile ("beq _err\n"
       
    32 		      "nop\n");
       
    33 }
       
    34 extern inline void cris_tst_cc_v1(void)
       
    35 {
       
    36 	asm volatile ("bvc _err\n"
       
    37 		      "nop\n");
       
    38 }
       
    39 extern inline void cris_tst_cc_v0(void)
       
    40 {
       
    41 	asm volatile ("bvs _err\n"
       
    42 		      "nop\n");
       
    43 }
       
    44 
       
    45 extern inline void cris_tst_cc_c1(void)
       
    46 {
       
    47 	asm volatile ("bcc _err\n"
       
    48 		      "nop\n");
       
    49 }
       
    50 extern inline void cris_tst_cc_c0(void)
       
    51 {
       
    52 	asm volatile ("bcs _err\n"
       
    53 		      "nop\n");
       
    54 }
       
    55 
       
    56 extern inline void cris_tst_mov_cc(int n, int z)
       
    57 {
       
    58 	if (n) cris_tst_cc_n1(); else cris_tst_cc_n0();
       
    59 	if (z) cris_tst_cc_z1(); else cris_tst_cc_z0();
       
    60 	asm volatile ("" : : "g" (_err));
       
    61 }
       
    62 
       
    63 extern inline void cris_tst_cc(const int n, const int z,
       
    64 			       const int v, const int c)
       
    65 {
       
    66 	if (n) cris_tst_cc_n1(); else cris_tst_cc_n0();
       
    67 	if (z) cris_tst_cc_z1(); else cris_tst_cc_z0();
       
    68 	if (v) cris_tst_cc_v1(); else cris_tst_cc_v0();
       
    69 	if (c) cris_tst_cc_c1(); else cris_tst_cc_c0();
       
    70 	asm volatile ("" : : "g" (_err));
       
    71 }