Loader ====== Generates loader assembly code for initializing the test runtime environment. Boots at ``_start`` in machine mode, initializes registers (integer, floating-point, vector if supported) and CSRs, sets up paging and interrupts, and hands control to the scheduler. Configuration ------------- - ``priv_mode``: Target privilege mode - ``paging_mode``: Paging mode to enable (SV39, SV48, SV57) - ``bringup_pagetables``: Skip scheduler and jump directly to first test - ``linux_mode``: Enable Linux loader mode - ``wysiwyg``: Minimal loader without runtime setup - ``big_endian``: Enable big-endian mode - ``csr_init``: List of CSRs to initialize (format: ``csr=value``) - ``csr_init_mask``: List of CSRs to initialize with mask (format: ``csr=mask=value``) - ``counter_event_path``: Path to event file for enabling performance counters - ``disable_wfi_wait``: Disable WFI waiting - ``needs_pma``: Setup PMA regions - ``setup_pmp``: Setup PMP regions - ``secure_mode``: Enable secure mode - ``setup_stateen``: Setup mstateen registers - ``env``: Test environment (TEST_ENV_VIRTUALIZED or standard) - ``senvcfg``: Value to write to senvcfg - ``trap_handler_label``: Label for trap handler entry point - ``interrupts_enabled``: Enable interrupts - ``deleg_excp_to``: Delegate exceptions to privilege level - ``pbmt_ncio``: Enable SVPBMT NCIO - ``svadu``: Enable SVADU extension - ``menvcfg``: Value to OR with default menvcfg - ``medeleg``: Custom medeleg value - ``user_interrupt_table``: Use user-defined interrupt table