• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/contrib/octeon-sdk/

Lines Matching refs:context

293 static inline void cvmx_debug_save_core_context(volatile cvmx_debug_core_context_t *context, uint64_t hi, uint64_t lo);
484 static volatile uint64_t *cvmx_debug_regnum_to_context_ref(int regnum, volatile cvmx_debug_core_context_t *context)
488 return &context->regs[regnum];
491 case 32: return &context->cop0.status;
492 case 33: return &context->lo;
493 case 34: return &context->hi;
494 case 35: return &context->cop0.badvaddr;
495 case 36: return &context->cop0.cause;
496 case 37: return &context->cop0.depc;
597 static void cvmx_debug_set_perf_control_reg (volatile cvmx_debug_core_context_t *context, int perf_event, int perf_counter)
610 context->cop0.perfctrl[perf_counter] = control.u32;
721 volatile cvmx_debug_core_context_t *context = cvmx_debug_core_context();
733 reg = cvmx_debug_regnum_to_context_ref(regno, context);
746 volatile cvmx_debug_core_context_t *context = cvmx_debug_core_context();
761 reg = cvmx_debug_regnum_to_context_ref(regno, context);
853 volatile cvmx_debug_core_context_t *context = cvmx_debug_core_context();
864 context->cop0.perfval[counter] = 0;
865 cvmx_debug_set_perf_control_reg(context, perf_event, counter);
876 c.u32 = context->cop0.perfctrl[counter];
877 cvmx_debug_int64_to_strhex(outpacket, context->cop0.perfval[counter]);
929 volatile cvmx_debug_core_context_t *context = cvmx_debug_core_context();
948 context->hw_ibp.address[num] = addr;
949 context->hw_ibp.address_mask[num] = 0;
950 context->hw_ibp.asid[num] = 0;
951 context->hw_ibp.control[num] = BE | TE;
971 context->hw_dbp.address[num] = addr;
972 context->hw_dbp.asid[num] = 0;
980 context->hw_dbp.address_mask[num] = dbm;
981 context->hw_dbp.control[num] = dbc;
996 volatile cvmx_debug_core_context_t *context = cvmx_debug_core_context();
1007 context->hw_ibp.address[num] = 0;
1008 context->hw_ibp.address_mask[num] = 0;
1009 context->hw_ibp.asid[num] = 0;
1010 context->hw_ibp.control[num] = 0;
1013 context->hw_dbp.address[num] = 0;
1014 context->hw_dbp.address_mask[num] = 0;
1015 context->hw_dbp.asid[num] = 0;
1016 context->hw_dbp.control[num] = 0;
1112 static void cvmx_debug_send_stop_reason(cvmx_debug_register_t *debug_reg, volatile cvmx_debug_core_context_t *context)
1116 cvmx_debug_putpacket_hexint("T8:", (int) context->hw_dbp.status);
1122 static void cvmx_debug_clear_status(volatile cvmx_debug_core_context_t *context)
1126 context->hw_dbp.status &= ~0x3fff;
1129 context->cop0.multicoredebug |= 1;
1187 static int cvmx_debug_perform_proxy(cvmx_debug_register_t *debug_reg, volatile cvmx_debug_core_context_t *context)
1202 if (!state.step_isr && (cvmx_interrupt_in_isr || (context->cop0.status & 0x2ULL)) && single_stepped_exc_only)
1211 cvmx_debug_printf ("Core #%u stopped focus stealing at 0x%llx\n", core, (unsigned long long)context->cop0.depc);
1216 if (*(uint32_t*)((__SIZE_TYPE__)context->cop0.depc) == ERET_INSN && core == state.focus_core)
1218 cvmx_debug_printf ("Core #%u resumed focus stealing at 0x%llx\n", core, (unsigned long long)context->cop0.depc);
1231 cvmx_debug_delay_isr_core (core, context->cop0.depc, single_stepped_exc_only, state);
1251 cvmx_debug_send_stop_reason(debug_reg, context);
1263 cvmx_debug_send_stop_reason(debug_reg, context);
1316 static void cvmx_debug_save_core_context(volatile cvmx_debug_core_context_t *context, uint64_t hi, uint64_t lo)
1319 cvmx_debug_memcpy_align ((char *) context->regs, __cvmx_debug_save_regs_area, sizeof(context->regs));
1320 context->lo = lo;
1321 context->hi = hi;
1322 CVMX_MF_COP0(context->cop0.index, COP0_INDEX);
1323 CVMX_MF_COP0(context->cop0.entrylo[0], COP0_ENTRYLO0);
1324 CVMX_MF_COP0(context->cop0.entrylo[1], COP0_ENTRYLO1);
1325 CVMX_MF_COP0(context->cop0.entryhi, COP0_ENTRYHI);
1326 CVMX_MF_COP0(context->cop0.pagemask, COP0_PAGEMASK);
1327 CVMX_MF_COP0(context->cop0.status, COP0_STATUS);
1328 CVMX_MF_COP0(context->cop0.cause, COP0_CAUSE);
1329 CVMX_MF_COP0(context->cop0.debug, COP0_DEBUG);
1330 CVMX_MF_COP0(context->cop0.multicoredebug, COP0_MULTICOREDEBUG);
1331 CVMX_MF_COP0(context->cop0.perfval[0], COP0_PERFVALUE0);
1332 CVMX_MF_COP0(context->cop0.perfval[1], COP0_PERFVALUE1);
1333 CVMX_MF_COP0(context->cop0.perfctrl[0], COP0_PERFCONTROL0);
1334 CVMX_MF_COP0(context->cop0.perfctrl[1], COP0_PERFCONTROL1);
1337 CVMX_MF_COP0(context->cop0.depc, COP0_DEPC);
1338 CVMX_MF_COP0(context->cop0.desave, COP0_DESAVE);
1340 context->hw_ibp.status = cvmx_read_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_STATUS);
1343 context->hw_ibp.address[i] = cvmx_read_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_ADDRESS(i));
1344 context->hw_ibp.address_mask[i] = cvmx_read_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_ADDRESS_MASK(i));
1345 context->hw_ibp.asid[i] = cvmx_read_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_ASID(i));
1346 context->hw_ibp.control[i] = cvmx_read_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_CONTROL(i));
1349 context->hw_dbp.status = cvmx_read_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_STATUS);
1352 context->hw_dbp.address[i] = cvmx_read_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_ADDRESS(i));
1353 context->hw_dbp.address_mask[i] = cvmx_read_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_ADDRESS_MASK(i));
1354 context->hw_dbp.asid[i] = cvmx_read_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_ASID(i));
1355 context->hw_dbp.control[i] = cvmx_read_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_CONTROL(i));
1362 CVMX_MF_COP0(context->tlbs[i].entrylo[0], COP0_ENTRYLO0);
1363 CVMX_MF_COP0(context->tlbs[i].entrylo[1], COP0_ENTRYLO1);
1364 CVMX_MF_COP0(context->tlbs[i].entryhi, COP0_ENTRYHI);
1365 CVMX_MF_COP0(context->tlbs[i].pagemask, COP0_PAGEMASK);
1370 static void cvmx_debug_restore_core_context(volatile cvmx_debug_core_context_t *context)
1374 cvmx_debug_memcpy_align (__cvmx_debug_save_regs_area, (char *) context->regs, sizeof(context->regs));
1376 cvmx_write_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_STATUS, context->hw_dbp.status);
1379 cvmx_write_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_ADDRESS(i), context->hw_dbp.address[i]);
1380 cvmx_write_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_ADDRESS_MASK(i), context->hw_dbp.address_mask[i]);
1381 cvmx_write_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_ASID(i), context->hw_dbp.asid[i]);
1382 cvmx_write_csr(CVMX_DEBUG_HW_DATA_BREAKPOINT_CONTROL(i), context->hw_dbp.control[i]);
1384 cvmx_write_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_STATUS, context->hw_ibp.status);
1387 cvmx_write_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_ADDRESS(i), context->hw_ibp.address[i]);
1388 cvmx_write_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_ADDRESS_MASK(i), context->hw_ibp.address_mask[i]);
1389 cvmx_write_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_ASID(i), context->hw_ibp.asid[i]);
1390 cvmx_write_csr(CVMX_DEBUG_HW_INSTRUCTION_BREAKPOINT_CONTROL(i), context->hw_ibp.control[i]);
1392 CVMX_MT_COP0(context->cop0.index, COP0_INDEX);
1393 CVMX_MT_COP0(context->cop0.entrylo[0], COP0_ENTRYLO0);
1394 CVMX_MT_COP0(context->cop0.entrylo[1], COP0_ENTRYLO1);
1395 CVMX_MT_COP0(context->cop0.entryhi, COP0_ENTRYHI);
1396 CVMX_MT_COP0(context->cop0.pagemask, COP0_PAGEMASK);
1397 CVMX_MT_COP0(context->cop0.status, COP0_STATUS);
1398 CVMX_MT_COP0(context->cop0.cause, COP0_CAUSE);
1399 CVMX_MT_COP0(context->cop0.debug, COP0_DEBUG);
1400 CVMX_MT_COP0(context->cop0.multicoredebug, COP0_MULTICOREDEBUG);
1401 CVMX_MT_COP0(context->cop0.perfval[0], COP0_PERFVALUE0);
1402 CVMX_MT_COP0(context->cop0.perfval[1], COP0_PERFVALUE1);
1403 CVMX_MT_COP0(context->cop0.perfctrl[0], COP0_PERFCONTROL0);
1404 CVMX_MT_COP0(context->cop0.perfctrl[1], COP0_PERFCONTROL1);
1405 CVMX_MT_COP0(context->cop0.depc, COP0_DEPC);
1406 CVMX_MT_COP0(context->cop0.desave, COP0_DESAVE);
1407 lo = context->lo;
1408 hi = context->hi;
1413 static inline void cvmx_debug_print_cause(volatile cvmx_debug_core_context_t *context)
1417 if (context->cop0.multicoredebug & 1)
1419 if (context->cop0.multicoredebug & (1 << 16))
1420 cvmx_dprintf("Exception %lld in Debug Mode\n", (long long)((context->cop0.debug >> 10) & 0x1f));
1421 if (context->cop0.debug & (1 << 19))
1423 if (context->cop0.debug & (1 << 18))
1425 if (context->cop0.debug & (1 << 5))
1427 if (context->cop0.debug & (1 << 4))
1429 if (context->cop0.debug & (1 << 3))
1431 if (context->cop0.debug & (1 << 2))
1433 if (context->cop0.debug & (1 << 1))
1435 if (context->cop0.debug & (1 << 0))
1441 volatile cvmx_debug_core_context_t *context;
1458 context = cvmx_debug_core_context();
1459 cvmx_debug_save_core_context(context, hi, lo);
1469 cvmx_debug_print_cause(context);
1501 debug_reg.u64 = context->cop0.debug;
1507 context->cop0.debug = debug_reg.u64;
1515 debug_reg.u64 = context->cop0.debug;
1517 comms_changed = cvmx_debug_perform_proxy(&debug_reg, context);
1518 context->cop0.debug = debug_reg.u64;
1523 cvmx_debug_comms[cvmx_debug_globals->comm_type]->wait_for_resume(context, cvmx_debug_get_state());
1527 cvmx_debug_clear_status(context);
1529 cvmx_debug_restore_core_context(context);