static int wait_instruction_complete(void *h, enum mcs_op opc) { int status; cycles_t start_time = get_cycles(); while (1) { cpu_relax(); status = GET_MSEG_HANDLE_STATUS(h); if (status != CCHSTATUS_ACTIVE) break; if (GRU_OPERATION_TIMEOUT < (get_cycles() - start_time)) panic("GRU %p is malfunctioning\n", h); } if (gru_options & OPT_STATS) update_mcs_stats(opc, get_cycles() - start_time); return status; }
static int wait_instruction_complete(void *h, enum mcs_op opc) { int status; unsigned long start_time = get_cycles(); while (1) { cpu_relax(); status = GET_MSEG_HANDLE_STATUS(h); if (status != CCHSTATUS_ACTIVE) break; if (GRU_OPERATION_TIMEOUT < (get_cycles() - start_time)) { report_instruction_timeout(h); start_time = get_cycles(); } } if (gru_options & OPT_STATS) update_mcs_stats(opc, get_cycles() - start_time); return status; }