--- ./gdb/gdb/i387-tdep.c 2010-01-01 08:02:26.254489281 +0100 +++ ./gdb-7.0/gdb/i387-tdep.c 2010-01-01 08:06:55.930299150 +0100 @@ -112,86 +112,86 @@ print_i387_ext (struct gdbarch *gdbarch, fputs_filtered (" Unsupported", file); } -/* Print the status word STATUS. */ - -static void -print_i387_status_word (unsigned int status, struct ui_file *file) +/* print the status word */ +static void print_i387_status_word (unsigned int status, struct ui_file *file) { - fprintf_filtered (file, "Status Word: %s", - hex_string_custom (status, 4)); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (status & 0x0001) ? "IE" : " "); - fprintf_filtered (file, " %s", (status & 0x0002) ? "DE" : " "); - fprintf_filtered (file, " %s", (status & 0x0004) ? "ZE" : " "); - fprintf_filtered (file, " %s", (status & 0x0008) ? "OE" : " "); - fprintf_filtered (file, " %s", (status & 0x0010) ? "UE" : " "); - fprintf_filtered (file, " %s", (status & 0x0020) ? "PE" : " "); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (status & 0x0080) ? "ES" : " "); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (status & 0x0040) ? "SF" : " "); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (status & 0x0100) ? "C0" : " "); - fprintf_filtered (file, " %s", (status & 0x0200) ? "C1" : " "); - fprintf_filtered (file, " %s", (status & 0x0400) ? "C2" : " "); - fprintf_filtered (file, " %s", (status & 0x4000) ? "C3" : " "); + fprintf_filtered (file, "status word : %s\n", hex_string_custom(status, 4)); - fputs_filtered ("\n", file); + fprintf_filtered (file, " exception flags : "); - fprintf_filtered (file, - " TOP: %d\n", ((status >> 11) & 7)); -} + fprintf_filtered (file, "%s ", (status & 0x0001) ? "IE" : " "); /* invalid operation */ + fprintf_filtered (file, "%s ", (status & 0x0002) ? "DE" : " "); /* denormalized operand */ + fprintf_filtered (file, "%s ", (status & 0x0004) ? "ZE" : " "); /* zero device */ + fprintf_filtered (file, "%s ", (status & 0x0008) ? "OE" : " "); /* overflow */ + fprintf_filtered (file, "%s ", (status & 0x0010) ? "UE" : " "); /* underflow */ + fprintf_filtered (file, "%s ", (status & 0x0020) ? "PE" : " "); /* precision */ + fprintf_filtered (file, "\n"); + + fprintf_filtered (file, " stack fault : %s\n", (status & 0x0040) ? "SF" : " "); + fprintf_filtered (file, " error summary status : %s\n", (status & 0x0080) ? "ES" : " "); -/* Print the control word CONTROL. */ + fprintf_filtered (file, " condition code : "); -static void -print_i387_control_word (unsigned int control, struct ui_file *file) + fprintf_filtered (file, "%s ", (status & 0x0100) ? "C0" : " "); + fprintf_filtered (file, "%s ", (status & 0x0200) ? "C1" : " "); + fprintf_filtered (file, "%s ", (status & 0x0400) ? "C2" : " "); + fprintf_filtered (file, "%s ", (status & 0x4000) ? "C3" : " "); + fprintf_filtered (file, "\n"); + + fprintf_filtered (file, " top of stack (TOP) : %d\n", ((status >> 11) & 7)); +} + +/* print the control word */ +static void print_i387_control_word (unsigned int control, struct ui_file *file) { - fprintf_filtered (file, "Control Word: %s", - hex_string_custom (control, 4)); - fputs_filtered (" ", file); - fprintf_filtered (file, " %s", (control & 0x0001) ? "IM" : " "); - fprintf_filtered (file, " %s", (control & 0x0002) ? "DM" : " "); - fprintf_filtered (file, " %s", (control & 0x0004) ? "ZM" : " "); - fprintf_filtered (file, " %s", (control & 0x0008) ? "OM" : " "); - fprintf_filtered (file, " %s", (control & 0x0010) ? "UM" : " "); - fprintf_filtered (file, " %s", (control & 0x0020) ? "PM" : " "); + fprintf_filtered(file, "control word : %s\n", hex_string_custom(control, 4)); - fputs_filtered ("\n", file); + fprintf_filtered(file, " exception masks : "); - fputs_filtered (" PC: ", file); + fprintf_filtered (file, "%s ", (control & 0x0020) ? "PM" : " "); /* invalid operation */ + fprintf_filtered (file, "%s ", (control & 0x0010) ? "UM" : " "); /* denormalized operand */ + fprintf_filtered (file, "%s ", (control & 0x0008) ? "OM" : " "); /* zero divide */ + fprintf_filtered (file, "%s ", (control & 0x0004) ? "ZM" : " "); /* overflow */ + fprintf_filtered (file, "%s ", (control & 0x0002) ? "DM" : " "); /* underflow */ + fprintf_filtered (file, "%s ", (control & 0x0001) ? "IM" : " "); /* precision */ + + fprintf_filtered (file, "\n"); + + fprintf_filtered (file, " precision control (PC) : "); + switch ((control >> 8) & 3) - { + { case 0: - fputs_filtered ("Single Precision (24-bits)\n", file); + fprintf_filtered (file, "24-bits (single precision)\n"); break; case 1: - fputs_filtered ("Reserved\n", file); + fprintf_filtered (file, "(reserved)\n"); break; case 2: - fputs_filtered ("Double Precision (53-bits)\n", file); + fprintf_filtered (file, "53-bits (double precision)\n"); break; case 3: - fputs_filtered ("Extended Precision (64-bits)\n", file); + fprintf_filtered (file, "64-bits (extended precision)\n"); break; - } + } - fputs_filtered (" RC: ", file); + fprintf_filtered (file, " rounding control (RC) : "); + switch ((control >> 10) & 3) - { + { case 0: - fputs_filtered ("Round to nearest\n", file); + fprintf_filtered (file, "round to nearest or even\n"); break; case 1: - fputs_filtered ("Round down\n", file); + fprintf_filtered (file, "round down (towards -inf)\n"); break; case 2: - fputs_filtered ("Round up\n", file); + fprintf_filtered (file, "round up (toward +inf)\n"); break; case 3: - fputs_filtered ("Round toward zero\n", file); + fprintf_filtered (file, "chop (truncate toward zero)\n"); break; - } + } } /* Print out the i387 floating point state. Note that we ignore FRAME