Subversion Repositories HelenOS

Rev

Rev 2767 | Rev 3138 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2767 Rev 3071
Line 104... Line 104...
104
/** Print table of active breakpoints */
104
/** Print table of active breakpoints */
105
int cmd_print_breakpoints(cmd_arg_t *argv __attribute__((unused)))
105
int cmd_print_breakpoints(cmd_arg_t *argv __attribute__((unused)))
106
{
106
{
107
    unsigned int i;
107
    unsigned int i;
108
    char *symbol;
108
    char *symbol;
109
   
109
 
110
    if (sizeof(void *) == 4) {
110
#ifdef __32_BITS__  
111
        printf("#  Count Address    In symbol\n");
111
    printf("#  Count Address    In symbol\n");
112
        printf("-- ----- ---------- ---------\n");
112
    printf("-- ----- ---------- ---------\n");
113
    } else {
113
#endif
-
 
114
 
-
 
115
#ifdef __64_BITS__
114
        printf("#  Count Address            In symbol\n");
116
    printf("#  Count Address            In symbol\n");
115
        printf("-- ----- ------------------ ---------\n");
117
    printf("-- ----- ------------------ ---------\n");
116
    }
118
#endif
117
   
119
   
118
    for (i = 0; i < BKPOINTS_MAX; i++)
120
    for (i = 0; i < BKPOINTS_MAX; i++)
119
        if (breakpoints[i].address) {
121
        if (breakpoints[i].address) {
120
            symbol = get_symtab_entry(breakpoints[i].address);
122
            symbol = get_symtab_entry(breakpoints[i].address);
121
           
123
 
122
            if (sizeof(void *) == 4)
124
#ifdef __32_BITS__
123
                printf("%-2u %-5d %#10zx %s\n", i, breakpoints[i].counter,
125
            printf("%-2u %-5d %#10zx %s\n", i, breakpoints[i].counter,
124
                    breakpoints[i].address, symbol);
126
                breakpoints[i].address, symbol);
125
            else
127
#endif
-
 
128
 
-
 
129
#ifdef __64_BITS__
126
                printf("%-2u %-5d %#18zx %s\n", i, breakpoints[i].counter,
130
            printf("%-2u %-5d %#18zx %s\n", i, breakpoints[i].counter,
127
                    breakpoints[i].address, symbol);
131
                breakpoints[i].address, symbol);
-
 
132
#endif
-
 
133
 
128
        }
134
        }
129
    return 1;
135
    return 1;
130
}
136
}
131
 
137
 
132
/* Setup DR register according to table */
138
/* Setup DR register according to table */
Line 160... Line 166...
160
        dr7 &= ~ (0x3 << (16 + 4*curidx));
166
        dr7 &= ~ (0x3 << (16 + 4*curidx));
161
        dr7 &= ~ (0x3 << (18 + 4*curidx));
167
        dr7 &= ~ (0x3 << (18 + 4*curidx));
162
        if ((flags & BKPOINT_INSTR)) {
168
        if ((flags & BKPOINT_INSTR)) {
163
            ;
169
            ;
164
        } else {
170
        } else {
-
 
171
       
165
            if (sizeof(int) == 4)
172
#ifdef __32_BITS__
166
                dr7 |= ((unative_t) 0x3) << (18 + 4*curidx);
173
            dr7 |= ((unative_t) 0x3) << (18 + 4 * curidx);
-
 
174
#endif
-
 
175
 
167
            else /* 8 */
176
#ifdef __64_BITS__
168
                dr7 |= ((unative_t) 0x2) << (18 + 4*curidx);
177
            dr7 |= ((unative_t) 0x2) << (18 + 4 * curidx);
-
 
178
#endif
169
           
179
           
170
            if ((flags & BKPOINT_WRITE))
180
            if ((flags & BKPOINT_WRITE))
171
                dr7 |= ((unative_t) 0x1) << (16 + 4*curidx);
181
                dr7 |= ((unative_t) 0x1) << (16 + 4 * curidx);
172
            else if ((flags & BKPOINT_READ_WRITE))
182
            else if ((flags & BKPOINT_READ_WRITE))
173
                dr7 |= ((unative_t) 0x3) << (16 + 4*curidx);
183
                dr7 |= ((unative_t) 0x3) << (16 + 4 * curidx);
174
        }
184
        }
175
 
185
 
176
        /* Enable global breakpoint */
186
        /* Enable global breakpoint */
177
        dr7 |= 0x2 << (curidx*2);
187
        dr7 |= 0x2 << (curidx*2);
178
 
188