10 struct watch_point *watch_arr = NULL;
11 int watch_count = 0, watch_capacity = 0;
14 watch_point_t mem_new_watch( uint32_t start, uint32_t end, int flags )
17 if( watch_arr == NULL ) {
19 watch_arr = calloc( sizeof(struct watch_point), watch_capacity );
21 } else if( watch_count == watch_capacity ) {
22 struct watch_point *tmp = realloc( watch_arr, sizeof(struct watch_point) * watch_capacity * 2 );
26 memset( &watch_arr[watch_capacity], 0, sizeof( struct watch_point ) * watch_capacity );
30 for( num=0; num<watch_capacity; num++ ) {
31 if( watch_arr[num].flags == 0 )
35 watch_arr[num].start = start & 0x1FFFFFFF;
36 watch_arr[num].end = end & 0x1FFFFFFF;
37 watch_arr[num].flags = flags;
39 return &watch_arr[num];
42 void mem_delete_watch( watch_point_t watch )
44 if( watch_arr == NULL )
46 int num = watch - watch_arr;
47 if( num < 0 || num >= watch_capacity )
49 watch->start = watch->end = 0;
55 watch_point_t mem_is_watched( uint32_t addr, int size, int op )
59 for( i=0, count=0; count< watch_count; i++ ) {
60 if( watch_arr[i].flags == 0 )
63 if( watch_arr[i].flags & op &&
64 watch_arr[i].start < addr+size &&
65 watch_arr[i].end >= addr ) {
.