11 struct watch_point *watch_arr = NULL;
12 int watch_count = 0, watch_capacity = 0;
15 watch_point_t mem_new_watch( uint32_t start, uint32_t end, int flags )
18 if( watch_arr == NULL ) {
20 watch_arr = calloc( sizeof(struct watch_point), watch_capacity );
22 } else if( watch_count == watch_capacity ) {
23 struct watch_point *tmp = realloc( watch_arr, sizeof(struct watch_point) * watch_capacity * 2 );
27 memset( &watch_arr[watch_capacity], 0, sizeof( struct watch_point ) * watch_capacity );
31 for( num=0; num<watch_capacity; num++ ) {
32 if( watch_arr[num].flags == 0 )
36 watch_arr[num].start = start & 0x1FFFFFFF;
37 watch_arr[num].end = end & 0x1FFFFFFF;
38 watch_arr[num].flags = flags;
40 return &watch_arr[num];
43 void mem_delete_watch( watch_point_t watch )
45 if( watch_arr == NULL )
47 int num = watch - watch_arr;
48 if( num < 0 || num >= watch_capacity )
50 watch->start = watch->end = 0;
56 watch_point_t mem_is_watched( uint32_t addr, int size, int op )
60 for( i=0, count=0; count< watch_count; i++ ) {
61 if( watch_arr[i].flags == 0 )
64 if( watch_arr[i].flags & op &&
65 watch_arr[i].start < addr+size &&
66 watch_arr[i].end >= addr ) {
.