346 #ifndef TARGET_ONLINE_DEBUG_DISABLE |
346 #ifndef TARGET_ONLINE_DEBUG_DISABLE |
347 |
347 |
348 #define TRACE_LIST_OVERFLOW 1 |
348 #define TRACE_LIST_OVERFLOW 1 |
349 #define FORCE_LIST_OVERFLOW 2 |
349 #define FORCE_LIST_OVERFLOW 2 |
350 #define FORCE_BUFFER_OVERFLOW 3 |
350 #define FORCE_BUFFER_OVERFLOW 3 |
|
351 #define FORCE_INVALID 4 |
|
352 |
|
353 #define __ForceVariable_checksize(TYPENAME) \ |
|
354 if(sizeof(TYPENAME) != force_size) { \ |
|
355 error_code = FORCE_BUFFER_OVERFLOW; \ |
|
356 goto error_cleanup; \ |
|
357 } |
351 |
358 |
352 #define __ForceVariable_case_t(TYPENAME) \ |
359 #define __ForceVariable_case_t(TYPENAME) \ |
353 case TYPENAME##_ENUM : \ |
360 case TYPENAME##_ENUM : \ |
|
361 __ForceVariable_checksize(TYPENAME) \ |
354 /* add to force_list*/ \ |
362 /* add to force_list*/ \ |
355 force_list_addvar_cursor->dbgvardsc_index = idx; \ |
363 force_list_addvar_cursor->dbgvardsc_index = idx; \ |
356 ((__IEC_##TYPENAME##_t *)varp)->flags |= __IEC_FORCE_FLAG; \ |
364 ((__IEC_##TYPENAME##_t *)varp)->flags |= __IEC_FORCE_FLAG; \ |
357 ((__IEC_##TYPENAME##_t *)varp)->value = *((TYPENAME *)force); \ |
365 ((__IEC_##TYPENAME##_t *)varp)->value = *((TYPENAME *)force); \ |
358 break; |
366 break; |
359 #define __ForceVariable_case_p(TYPENAME) \ |
367 #define __ForceVariable_case_p(TYPENAME) \ |
360 case TYPENAME##_P_ENUM : \ |
368 case TYPENAME##_P_ENUM : \ |
361 case TYPENAME##_O_ENUM : \ |
369 case TYPENAME##_O_ENUM : \ |
|
370 __ForceVariable_checksize(TYPENAME) \ |
362 { \ |
371 { \ |
363 char *next_cursor = force_buffer_cursor + sizeof(TYPENAME); \ |
372 char *next_cursor = force_buffer_cursor + sizeof(TYPENAME); \ |
364 if(next_cursor <= force_buffer_end ){ \ |
373 if(next_cursor <= force_buffer_end ){ \ |
365 /* add to force_list*/ \ |
374 /* add to force_list*/ \ |
366 force_list_addvar_cursor->dbgvardsc_index = idx; \ |
375 force_list_addvar_cursor->dbgvardsc_index = idx; \ |
387 break; |
396 break; |
388 |
397 |
389 |
398 |
390 void ResetDebugVariables(void); |
399 void ResetDebugVariables(void); |
391 |
400 |
392 int RegisterDebugVariable(dbgvardsc_index_t idx, void* force) |
401 int RegisterDebugVariable(dbgvardsc_index_t idx, void* force, size_t force_size) |
393 { |
402 { |
394 int error_code = 0; |
403 int error_code = 0; |
395 if(idx < sizeof(dbgvardsc)/sizeof(dbgvardsc_t)){ |
404 if(idx < sizeof(dbgvardsc)/sizeof(dbgvardsc_t)){ |
396 /* add to trace_list, inc trace_list_addvar_cursor*/ |
405 /* add to trace_list, inc trace_list_addvar_cursor*/ |
397 if(trace_list_addvar_cursor <= trace_list_end){ |
406 if(trace_list_addvar_cursor <= trace_list_end){ |