--- BasiliskII/src/uae_cpu/gencpu.c 1999/10/28 16:00:23 1.7 +++ BasiliskII/src/uae_cpu/gencpu.c 1999/10/28 16:52:28 1.8 @@ -723,16 +723,52 @@ static void genflags (flagtypes type, wo switch(size) { case sz_byte: - printf("\t%s = sparc_v8_flag_add_8(M68K_FLAGS_ADDR, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); + printf("\t%s = sparc_v8_flag_add_8(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); break; case sz_word: - printf("\t%s = sparc_v8_flag_add_16(M68K_FLAGS_ADDR, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); + printf("\t%s = sparc_v8_flag_add_16(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); break; case sz_long: - printf("\t%s = sparc_v8_flag_add_32(M68K_FLAGS_ADDR, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); + printf("\t%s = sparc_v8_flag_add_32(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); break; } return; + + case flag_sub: + start_brace(); + printf("\tuae_u32 %s;\n", value); + switch(size) + { + case sz_byte: + printf("\t%s = sparc_v8_flag_sub_8(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); + break; + case sz_word: + printf("\t%s = sparc_v8_flag_sub_16(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); + break; + case sz_long: + printf("\t%s = sparc_v8_flag_sub_32(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", value, src, dst); + break; + } + return; + + case flag_cmp: + switch(size) + { + case sz_byte: +// printf("\tsparc_v8_flag_cmp_8(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", src, dst); + break; + case sz_word: +// printf("\tsparc_v8_flag_cmp_16(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", src, dst); + break; + case sz_long: +#if 1 + printf("\tsparc_v8_flag_cmp_32(®flags, (uae_u32)(%s), (uae_u32)(%s));\n", src, dst); + return; +#endif + break; + } +// return; + break; } #elif defined(SPARC_V9_ASSEMBLY) switch(type)