Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Side by Side Diff: gdb/i386-nat.h

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/i386-linux-tdep.c ('k') | gdb/i386-nat.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Native-dependent code for the i386. 1 /* Native-dependent code for the i386.
2 2
3 Low level functions to implement Oeprating System specific 3 Low level functions to implement Oeprating System specific
4 code to manipulate I386 debug registers. 4 code to manipulate I386 debug registers.
5 5
6 Copyright (C) 2009-2012 Free Software Foundation, Inc. 6 Copyright (C) 2009-2012 Free Software Foundation, Inc.
7 7
8 This file is part of GDB. 8 This file is part of GDB.
9 9
10 This program is free software; you can redistribute it and/or modify 10 This program is free software; you can redistribute it and/or modify
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 that will be called to insert watchpoints and hardware breakpoints 46 that will be called to insert watchpoints and hardware breakpoints
47 into the inferior, remove them, and check their status. These 47 into the inferior, remove them, and check their status. These
48 functions are: 48 functions are:
49 49
50 set_control -- set the debug control (DR7) 50 set_control -- set the debug control (DR7)
51 register to a given value for all LWPs 51 register to a given value for all LWPs
52 52
53 set_addr -- put an address into one debug 53 set_addr -- put an address into one debug
54 register for all LWPs 54 register for all LWPs
55 55
56 reset_addr -- reset the address stored in 56 get_addr -- return the address in a given debug
57 » » » » one debug register for all LWPs 57 » » » » register of the current LWP
58 58
59 get_status -- return the value of the debug 59 get_status -- return the value of the debug
60 status (DR6) register for current LWP 60 status (DR6) register for current LWP
61 61
62 unset_status -- unset the specified bits of the debug 62 get_control -- return the value of the debug
63 » » » » status (DR6) register for all LWPs 63 » » » » control (DR7) register for current LWP
64 64
65 Additionally, the native file should set the debug_register_length 65 Additionally, the native file should set the debug_register_length
66 field to 4 or 8 depending on the number of bytes used for 66 field to 4 or 8 depending on the number of bytes used for
67 deubg registers. */ 67 deubg registers. */
68 68
69 struct i386_dr_low_type 69 struct i386_dr_low_type
70 { 70 {
71 void (*set_control) (unsigned long); 71 void (*set_control) (unsigned long);
72 void (*set_addr) (int, CORE_ADDR); 72 void (*set_addr) (int, CORE_ADDR);
73 void (*reset_addr) (int); 73 CORE_ADDR (*get_addr) (int);
74 unsigned long (*get_status) (void); 74 unsigned long (*get_status) (void);
75 void (*unset_status) (unsigned long); 75 unsigned long (*get_control) (void);
76 int debug_register_length; 76 int debug_register_length;
77 }; 77 };
78 78
79 extern struct i386_dr_low_type i386_dr_low; 79 extern struct i386_dr_low_type i386_dr_low;
80 80
81 /* Debug registers' indices. */
82 #define DR_FIRSTADDR 0
83 #define DR_LASTADDR 3
84 #define DR_NADDR 4 /* The number of debug address registers. */
85 #define DR_STATUS 6 /* Index of debug status register (DR6). */
86 #define DR_CONTROL 7 /* Index of debug control register (DR7). */
87
88 /* Global state needed to track h/w watchpoints. */
89
90 struct i386_debug_reg_state
91 {
92 /* Mirror the inferior's DRi registers. We keep the status and
93 control registers separated because they don't hold addresses.
94 Note that since we can change these mirrors while threads are
95 running, we never trust them to explain a cause of a trap.
96 For that, we need to peek directly in the inferior registers. */
97 CORE_ADDR dr_mirror[DR_NADDR];
98 unsigned dr_status_mirror, dr_control_mirror;
99
100 /* Reference counts for each debug register. */
101 int dr_ref_count[DR_NADDR];
102 };
103
81 /* Use this function to set i386_dr_low debug_register_length field 104 /* Use this function to set i386_dr_low debug_register_length field
82 rather than setting it directly to check that the length is only 105 rather than setting it directly to check that the length is only
83 set once. It also enables the 'maint set/show show-debug-regs' 106 set once. It also enables the 'maint set/show show-debug-regs'
84 command. */ 107 command. */
85 108
86 extern void i386_set_debug_register_length (int len); 109 extern void i386_set_debug_register_length (int len);
87 110
88 /* Use this function to reset the i386-nat.c debug register state. */ 111 /* Use this function to reset the i386-nat.c debug register state. */
89 112
90 extern void i386_cleanup_dregs (void); 113 extern void i386_cleanup_dregs (void);
91 114
115 /* Return a pointer to the the local mirror of the inferior's debug
116 registers. */
117
118 extern struct i386_debug_reg_state *i386_debug_reg_state (void);
119
92 #endif /* I386_NAT_H */ 120 #endif /* I386_NAT_H */
OLDNEW
« no previous file with comments | « gdb/i386-linux-tdep.c ('k') | gdb/i386-nat.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698