static int cell_spu_pc_collection(int cpu) { u32 trace_addr; int entry; /* process the collected SPU PC for the node */ entry = 0; trace_addr = cbe_read_pm(cpu, trace_address); while (!(trace_addr & CBE_PM_TRACE_BUF_EMPTY)) { /* there is data in the trace buffer to process */ spu_pc_extract(cpu, entry); entry++; if (entry >= TRACE_ARRAY_SIZE) /* spu_samples is full */ break; trace_addr = cbe_read_pm(cpu, trace_address); } return entry; }
static int cell_spu_pc_collection(int cpu) { u32 trace_addr; int entry; entry = 0; trace_addr = cbe_read_pm(cpu, trace_address); while (!(trace_addr & CBE_PM_TRACE_BUF_EMPTY)) { spu_pc_extract(cpu, entry); entry++; if (entry >= TRACE_ARRAY_SIZE) break; trace_addr = cbe_read_pm(cpu, trace_address); } return entry; }