int rtos_create(Jim_GetOptInfo *goi, struct target *target)
{
int x;
- char *cp;
+ const char *cp;
struct Jim_Obj *res;
if (!goi->isconfigure && goi->argc != 0) {
return ERROR_OK;
} else if (packet[0] == 'H') { /* Set current thread ( 'c' for step and continue, 'g' for
* all other operations ) */
- if ((packet[1] == 'g') && (target->rtos != NULL))
+ if ((packet[1] == 'g') && (target->rtos != NULL)) {
sscanf(packet, "Hg%16" SCNx64, &target->rtos->current_threadid);
+ LOG_DEBUG("RTOS: GDB requested to set current thread to 0x%" PRIx64 "\r\n",
+ target->rtos->current_threadid);
+ }
gdb_put_packet(connection, "OK", 2);
return ERROR_OK;
}
((current_threadid != target->rtos->current_thread) ||
(target->smp))) { /* in smp several current thread are possible */
char *hex_reg_list;
+
+ LOG_DEBUG("RTOS: getting register list for thread 0x%" PRIx64
+ ", target->rtos->current_thread=0x%" PRIx64 "\r\n",
+ current_threadid,
+ target->rtos->current_thread);
+
target->rtos->type->get_thread_reg_list(target->rtos,
current_threadid,
&hex_reg_list);
LOG_ERROR("Error reading stack frame from thread");
return retval;
}
+ LOG_DEBUG("RTOS: Read stack frame at 0x%" PRIx32, address);
+
#if 0
LOG_OUTPUT("Stack Data :");
for (i = 0; i < stacking->stack_registers_size; i++)
list_size += stacking->register_offsets[i].width_bits/8;
*hex_reg_list = malloc(list_size*2 + 1);
tmp_str_ptr = *hex_reg_list;
- new_stack_ptr = stack_ptr - stacking->stack_growth_direction *
- stacking->stack_registers_size;
- if (stacking->stack_alignment != 0) {
- /* Align new stack pointer to x byte boundary */
- new_stack_ptr =
- (new_stack_ptr & (~((int64_t) stacking->stack_alignment - 1))) +
- ((stacking->stack_growth_direction == -1) ? stacking->stack_alignment : 0);
+ if (stacking->calculate_process_stack != NULL) {
+ new_stack_ptr = stacking->calculate_process_stack(target,
+ stack_data, stacking, stack_ptr);
+ } else {
+ new_stack_ptr = stack_ptr - stacking->stack_growth_direction *
+ stacking->stack_registers_size;
}
for (i = 0; i < stacking->num_output_registers; i++) {
int j;