Commit | Line | Data |
---|---|---|
e750d25e | 1 | /* Target-dependent code for the i387. |
2de139ba MK |
2 | |
3 | Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc. | |
b2450fc5 MK |
4 | |
5 | This file is part of GDB. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 2 of the License, or | |
10 | (at your option) any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program; if not, write to the Free Software | |
19 | Foundation, Inc., 59 Temple Place - Suite 330, | |
20 | Boston, MA 02111-1307, USA. */ | |
21 | ||
e750d25e JT |
22 | #ifndef I387_TDEP_H |
23 | #define I387_TDEP_H | |
b2450fc5 | 24 | |
da3331ec AC |
25 | struct gdbarch; |
26 | struct ui_file; | |
27 | struct frame_info; | |
d532c08f | 28 | struct type; |
da3331ec | 29 | |
61113f8b MK |
30 | /* Print out the i387 floating point state. */ |
31 | ||
32 | extern void i387_print_float_info (struct gdbarch *gdbarch, | |
33 | struct ui_file *file, | |
8e186fd6 AC |
34 | struct frame_info *frame, |
35 | const char *args); | |
61113f8b | 36 | |
d532c08f MK |
37 | /* Read a value of type TYPE from register REGNUM in frame FRAME, and |
38 | return its contents in TO. */ | |
39 | ||
40 | extern void i387_register_to_value (struct frame_info *frame, int regnum, | |
41 | struct type *type, void *to); | |
42 | ||
43 | /* Write the contents FROM of a value of type TYPE into register | |
44 | REGNUM in frame FRAME. */ | |
45 | ||
46 | extern void i387_value_to_register (struct frame_info *frame, int regnum, | |
47 | struct type *type, const void *from); | |
2de139ba MK |
48 | \f |
49 | ||
50 | /* Size of the memory area use by the 'fsave' and 'fxsave' | |
51 | instructions. */ | |
52 | #define I387_SIZEOF_FSAVE 108 | |
53 | #define I387_SIZEOF_FXSAVE 512 | |
d532c08f | 54 | |
ed504bdf | 55 | /* Fill register REGNUM in GDB's register cache with the appropriate |
f31e928c MK |
56 | value from *FSAVE. This function masks off any of the reserved |
57 | bits in *FSAVE. */ | |
58 | ||
ed504bdf | 59 | extern void i387_supply_fsave (const char *fsave, int regnum); |
b2450fc5 | 60 | |
f31e928c | 61 | /* Fill register REGNUM (if it is a floating-point register) in *FSAVE |
ed504bdf | 62 | with the value in GDB's register cache. If REGNUM is -1, do this |
b2450fc5 MK |
63 | for all registers. This function doesn't touch any of the reserved |
64 | bits in *FSAVE. */ | |
65 | ||
f31e928c | 66 | extern void i387_fill_fsave (char *fsave, int regnum); |
e2890f08 | 67 | |
ed504bdf MK |
68 | /* Fill register REGNUM in GDB's register cache with the appropriate |
69 | floating-point or SSE register value from *FXSAVE. This function | |
70 | masks off any of the reserved bits in *FXSAVE. */ | |
e2890f08 | 71 | |
ed504bdf | 72 | extern void i387_supply_fxsave (const char *fxsave, int regnum); |
e2890f08 | 73 | |
f31e928c | 74 | /* Fill register REGNUM (if it is a floating-point or SSE register) in |
ed504bdf | 75 | *FXSAVE with the value in GDB's register cache. If REGNUM is -1, do |
e2890f08 MK |
76 | this for all registers. This function doesn't touch any of the |
77 | reserved bits in *FXSAVE. */ | |
78 | ||
f31e928c | 79 | extern void i387_fill_fxsave (char *fxsave, int regnum); |
b2450fc5 | 80 | |
e750d25e | 81 | #endif /* i387-tdep.h */ |