define peedi_ecos_cortexm # As is obvious, if the eCos HAL_SavedRegister structure changes, this macro may need to be updated. printf "[OS_ARM_ECOS_v2]\r\n" printf "ITEM = int32_abs, BASE, Cyg_Scheduler_Base::current_thread, 0\r\n" printf "ITEM = int32, NEXT, 0x%X\r\n", &((Cyg_Thread*)0)->list_next printf "ITEM = int32, PID, 0x%X\r\n", &((Cyg_Thread*)0)->unique_id printf "ITEM = str32, NAME, 0x%X, 0\r\n", &((Cyg_Thread*)0)->name printf "ITEM = reg32, R0, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[0] printf "ITEM = reg32, R1, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[1] printf "ITEM = reg32, R2, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[2] printf "ITEM = reg32, R3, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[3] printf "ITEM = reg32, R4, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[4] printf "ITEM = reg32, R5, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[5] printf "ITEM = reg32, R6, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[6] printf "ITEM = reg32, R7, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[7] printf "ITEM = reg32, R8, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[8] printf "ITEM = reg32, R9, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[9] printf "ITEM = reg32, R10,0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[10] printf "ITEM = reg32, R11,0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[11] printf "ITEM = reg32, R12,0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.r[12] printf "ITEM = reg32, sp, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.sp printf "ITEM = reg32, lr, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.pc printf "ITEM = reg32, pc, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.pc # If r0 doesn't follow sp then there are FP regs: if (&((HAL_SavedRegisters*)0)->u.thread.r[0] - &((HAL_SavedRegisters*)0)->u.thread.sp > 1) printf "ITEM = reg32, fpscr, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpscr printf "ITEM = reg2x32, D0, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[0] printf "ITEM = reg2x32, D1, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[1] printf "ITEM = reg2x32, D2, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[2] printf "ITEM = reg2x32, D3, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[3] printf "ITEM = reg2x32, D4, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[4] printf "ITEM = reg2x32, D5, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[5] printf "ITEM = reg2x32, D6, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[6] printf "ITEM = reg2x32, D7, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[7] printf "ITEM = reg2x32, D8, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[8] printf "ITEM = reg2x32, D9, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[9] printf "ITEM = reg2x32, D10, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[10] printf "ITEM = reg2x32, D11, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[11] printf "ITEM = reg2x32, D12, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[12] printf "ITEM = reg2x32, D13, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[13] printf "ITEM = reg2x32, D14, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[14] printf "ITEM = reg2x32, D15, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.fpregs.d[15] end # If pc isn't the end, then there's a fake XPSR for us to use: if (sizeof(((HAL_SavedRegisters*)0)->u.thread) - (int)&((HAL_SavedRegisters*)0)->u.thread.pc > 4) printf "ITEM = reg32, xpsr, 0x%X, 0x%X\r\n", &((Cyg_Thread*)0)->stack_ptr,&((HAL_SavedRegisters*)0)->u.thread.xpsr end end