Dummy GDB architecture specifics.
This file is included only if the architecture does not provide its own version of this file.
Definition in file gdbmach.h.
| int gdbmach_set_breakpoint |
( |
int | type, |
|
|
unsigned long | addr, |
|
|
size_t | len, |
|
|
int | enable ) |
|
extern |
Set hardware breakpoint.
- Parameters
-
| type | GDB breakpoint type |
| addr | Virtual address |
| len | Length |
| enable | Enable (not disable) breakpoint |
- Return values
-
Definition at line 134 of file gdbmach.c.
135 {
136 unsigned int rwlen;
137 unsigned long mask;
139
140
144 break;
147 break;
148 default:
150 }
151
152
154 case 1:
156 break;
157 case 2:
159 break;
160 case 4:
162 break;
163 case 8:
165 break;
166 default:
168 }
169
170
172 addr = virt_to_phys ( (
void * )
addr );
173
174
177 return ( enable ? -
ENOBUFS : 0 );
178
179
180 DBGC ( &
dr[0],
"GDB bp %d at %p+%zx type %d (%sabled)\n",
181 bp, ( (
void * )
addr ),
len,
type, ( enable ?
"en" :
"dis" ) );
184 dr7 = ( (
dr7 & ~mask ) | ( rwlen & mask ) );
187 if ( enable )
189
190
192
193 return 0;
194}
uint32_t addr
Buffer address.
uint32_t type
Operating system type.
static void gdbmach_update(void)
Update debug registers.
#define DR7_RWLEN_2
Debug register 7: Two-byte length.
static int gdbmach_find(unsigned long addr, unsigned int rwlen)
Find reusable or available hardware breakpoint.
static unsigned long dr7
Active value of debug register 7.
static unsigned long dr[NUM_HWBP]
Hardware breakpoint addresses (debug registers 0-3)
#define DR7_RWLEN_4
Debug register 7: Four-byte length.
#define DR7_RWLEN_1
Debug register 7: One-byte length.
#define DR7_G(bp)
Debug register 7: Global breakpoint enable.
#define DR7_RWLEN_8
Debug register 7: Eight-byte length.
#define DR7_RWLEN_ACCESS
Debug register 7: Break on data access.
#define DR7_RWLEN_MASK(bp)
Debug register 7: Breakpoint R/W and length mask.
#define DR7_RWLEN_WRITE
Debug register 7: Break on data writes.
#define ENOTSUP
Operation not supported.
#define ENOBUFS
No buffer space available.
References addr, bp, DBGC, dr, dr7, DR7_G, DR7_RWLEN_1, DR7_RWLEN_2, DR7_RWLEN_4, DR7_RWLEN_8, DR7_RWLEN_ACCESS, DR7_RWLEN_MASK, DR7_RWLEN_WRITE, ENOBUFS, ENOTSUP, GDBMACH_AWATCH, gdbmach_find(), gdbmach_update(), GDBMACH_WATCH, len, and type.
Referenced by gdbstub_breakpoint().