The probe stands in for Broadway with StarOS's own bench loader code, so that StarOS's H-1A bench (docs/architecture/h-1a.md, D-H1A-7) runs whole: its Starlet image on the ARM core, its Broadway side from StarOS's boot/wii/loader hw0c.c, hw0d.c and h1a.c, vendored unchanged in Tools/StarletBootstrapProbe/StarOSLoader (StarOS 480119d, stored -text so their bytes stay StarOS's) with their contract headers, and built over a host HAL in BroadwayHAL/. CMake computes the nine files' SHA-256s at configure; the probe prints them when the mode starts. As StarOS's loader around the jump: hw0c_setup() before the Starlet's first instruction, one hw0c_step() between each two slices, the timebase 243 MHz / 4 from the Starlet's cycles, until it says 1; once the image's trace is terminal and the bench is done, the trace, then the report between main.c's status and END lines on stdout. If the budget runs out, the report under SBL:TIMEOUT, and the run fails. The client reaches PPC memory only in the bench window 0x13500000..0x13510000, by whole words: the first access outside fails the run, and is not made. Dolphin's memory is coherent: the run rehearses the protocol, the capture and the judge, not the console's caches. --cycles may reach 2^34 in this mode only (MAX_CLIENT_CYCLES), 2^30 as before otherwise. --broadway-h1a takes neither --ipc-script nor --stage-spk, whose behaviour is unchanged. StarletProbeBroadwayTest: the window's bounds, the clock, Gecko's number formats, the budgets, the built-in sources; and, each in a death test's own process (the loader's state is global), the real loader code against a scripted Starlet: 3000 rounds and a COHERENT record, no READY, no Starlet END, a budget too short; a second client refused. Co-Authored-By: Claude Opus 5.5 <[email protected]>
21 lines
717 B
C
21 lines
717 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* HW-M4-0D's diagnostic on Broadway (tests/hardware-wii/hw-m4-0d.md), built
|
|
* into the bench's loader only with -DSTAROS_HW0C -DSTAROS_HW0D.
|
|
* crates/hw-bench's diag::Probe is the reference its events follow; the
|
|
* HW-M4-0C loader and the default loader do not contain it.
|
|
*/
|
|
#ifndef STAROS_LOADER_HW0D_H
|
|
#define STAROS_LOADER_HW0D_H
|
|
|
|
#include <stdint.h>
|
|
|
|
/* In hw0c_setup, before the header: clear the diagnostic area. */
|
|
void hw0d_clear(void);
|
|
/* One of Broadway's events (STAROS_HW0D_E_B_*), stamped with its timebase. */
|
|
void hw0d_mark(uint32_t kind, uint32_t a, uint32_t b);
|
|
/* At the end of hw0c_report: the SBL:HW0D lines. */
|
|
void hw0d_report(void);
|
|
|
|
#endif
|