psx.wiki

CPU Bus Gaps and Cache Isolation: Difference between revisions

Revision as of 04:48, 23 October 2026
RemmyLee
(Main page: drop the Hardware Tests lede)
Revision as of 05:11, 23 October 2026
RemmyLee
(Hardware tests: 72 more test pages, listed on the main page by area; RUN.toml no longer published)
Line 1:Line 1:
+---
+title: CPU Bus Gaps and Cache Isolation
+type: test
+summary: Measures which unused addresses raise a bus error and how loads and stores behave with the data cache isolated.
+category: Hardware tests
+info: Machine = SCPH-5501
+info: Program = cpu_core BUG and ISO groups
+---
+
+## Overview
+
+The program loads a word, a halfword and a byte from addresses in the first 512MB where the [memory map](/hardware/memory-map/) names no device. It covers the region past the 8MB RAM window, expansion 1 with no cartridge, a gap in the I/O ports, expansion 3, the region past the 512KB BIOS ROM, the same RAM-window gap in KSEG1, and KSEG2 away from its cache control port.[^runh]
+
+Each load first fills its target register with 5A5A5A5Ah, so a load that the exception handler skipped leaves that value. The program then repeats each access followed by 16 ADDIU instructions that count by one, to find where the bus error is taken.[^runh]
+
+A second group sets SR bit 16, which isolates the cache, and reads and writes a RAM word holding 11111111h from uncached code.[^runh]
+
+## Results
+
+### Unused Addresses
+
+Expansion 1 and expansion 3 answer without a cartridge. Reads there return all ones and raise no exception. Every other unused address raises a data bus error (exception code 7) on a load of any width, and the register keeps 5A5A5A5Ah.[^runh]
+
+Table: Loads from unused addresses
+
+| Address | Region | Result |
+| --- | --- | --- |
+| 00800000h | past the 8MB RAM window | bus error |
+| 10000000h | between RAM and expansion 1 | bus error |
+| 1F000000h | expansion 1, no cartridge | FFFFFFFFh, FFFFh or FFh |
+| 1F801024h | memory control, past the last register | bus error |
+| 1F801030h | gap in the I/O ports | bus error |
+| 1F801064h | past RAM_SIZE | bus error |
+| 1F800400h | past the 1KB scratchpad | bus error |
+| 1FA00000h | expansion 3 | FFFFFFFFh, FFFFh or FFh |
+| 1FC80000h | past the 512KB BIOS ROM | bus error |
+| BFC80100h | past the BIOS ROM in KSEG1 | bus error |
+| A0800000h | past the RAM window in KSEG1 | bus error |
+| C0000000h | KSEG2 | bus error |
+
+A store to any of the bus error addresses raises the same exception. The bus error does not change BadVaddr.[^runh]
+
+The bus error arrives a few instructions after the access. In every run 15 of the 16 ADDIU instructions ran. EPC pointed between two and four instructions past the load or store, and the distance changed from run to run.[^runs]
+
+### Cache Isolation
+
+With the cache isolated, a load reads the cache and not memory, and a store writes the cache and not memory. An isolated store of 22222222h followed by an isolated load read 22222222h back, while the RAM word still held 11111111h afterwards.[^runh]
+
+An isolated load before any isolated store returned whatever the cache line held, a value that differed between runs (00002021h, 10400026h, 8FA40254h).[^runs]
+
+The same steps run from cached code hung the console, so the program leaves them out.[^runh]
+
+## Runs
+
+### 27 September 2026 (card-1)
+
+[00RUN.txt](/tests/raw/20260927T0000Z-5501a-card-1/cpurisk/00RUN.txt):
+
+```
+===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+2 tests
+A chain program, linked at 80100000
+Saved on the card in slot 2, from image 1
+COP0 at start: BPC 00000000 BDA 80025AE0 TAR BFC02BAC DCIC 00000000 BadVaddr 1F801DAA BDAM FFFFFFFF
+BPCM 00000000 SR 70000000 Cause 00000020 EPC 800223D4 PRId 00000002
+```
+
+[01ISO.txt](/tests/raw/20260927T0000Z-5501a-card-1/cpurisk/01ISO.txt):
+
+```
+===== 01 ISO CPU CACHE ISOLATE | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 1F801DAA
+
+cpu/cache isolation: SR bit 16 set, memory holds 11111111
+1 isolate and restore, uncached code: cache word before DEADBEEF, read DEADBEEF, memory after 11111111
+2 isolated lw, uncached code: cache word before DEADBEEF, read 00002021, memory after 11111111
+3 isolated lw, sw 22222222, lw, sw back, uncached code: cache word before 00002021, read 22222222, memory after 11111111
+Done.
+```
+
+[02BUG.txt](/tests/raw/20260927T0000Z-5501a-card-1/cpurisk/02BUG.txt):
+
+```
+===== 02 BUG CPU BUS GAPS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 1F801DAA
+
+cpu/bus gaps
+lw 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F000000: none, reg FFFFFFFF, badvaddr 1F801DAA to 1F801DAA
+lhu 1F000000: none, reg 0000FFFF, badvaddr 1F801DAA to 1F801DAA
+lbu 1F000000: none, reg 000000FF, badvaddr 1F801DAA to 1F801DAA
+lw 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1FA00000: none, reg FFFFFFFF, badvaddr 1F801DAA to 1F801DAA
+lhu 1FA00000: none, reg 0000FFFF, badvaddr 1F801DAA to 1F801DAA
+lbu 1FA00000: none, reg 000000FF, badvaddr 1F801DAA to 1F801DAA
+lw 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 00800000 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw 00800000 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw 10000000 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw 10000000 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw 1F801030 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw 1F801030 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw 1FC80000 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw 1FC80000 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw A0800000 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw A0800000 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw C0000000 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw C0000000 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw 1F800400 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw 1F800400 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw BFC80100 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw BFC80100 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw 1F801024 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw 1F801024 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+lw 1F801064 then 16 addiu: n 1 code 7 bd 0 epc 80105548 at 80105540 badvaddr 1F801DAA reg 0000000F
+sw 1F801064 then 16 addiu: n 1 code 7 bd 0 epc 801055F8 at 801055F0 badvaddr 1F801DAA reg 0000000F
+Done.
+```
+
+### 27 September 2026 (card-2)
+
+[00RUN.txt](/tests/raw/20260927T0000Z-5501a-card-2/cpurisk/00RUN.txt):
+
+```
+===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+2 tests
+A chain program, linked at 80100000
+Saved on the card in slot 2, from image 1
+COP0 at start: BPC 00000000 BDA 80024F50 TAR BFC02BAC DCIC 00000000 BadVaddr 1F801DAA BDAM FFFFFFFF
+BPCM 00000000 SR 70000000 Cause 00000020 EPC 80022438 PRId 00000002
+```
+
+[02BUG.txt](/tests/raw/20260927T0000Z-5501a-card-2/cpurisk/02BUG.txt):
+
+```
+===== 02 BUG CPU BUS GAPS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 1F801DAA
+
+cpu/bus gaps
+lw 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F000000: none, reg FFFFFFFF, badvaddr 1F801DAA to 1F801DAA
+lhu 1F000000: none, reg 0000FFFF, badvaddr 1F801DAA to 1F801DAA
+lbu 1F000000: none, reg 000000FF, badvaddr 1F801DAA to 1F801DAA
+lw 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1FA00000: none, reg FFFFFFFF, badvaddr 1F801DAA to 1F801DAA
+lhu 1FA00000: none, reg 0000FFFF, badvaddr 1F801DAA to 1F801DAA
+lbu 1FA00000: none, reg 000000FF, badvaddr 1F801DAA to 1F801DAA
+lw 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 00800000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw 00800000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw 10000000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw 10000000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw 1F801030 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw 1F801030 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw 1FC80000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw 1FC80000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw A0800000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw A0800000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw C0000000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw C0000000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw 1F800400 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw 1F800400 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw BFC80100 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw BFC80100 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw 1F801024 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw 1F801024 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+lw 1F801064 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 1F801DAA reg 0000000F
+sw 1F801064 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 1F801DAA reg 0000000F
+Done.
+```
+
+Output files that match an earlier run: [01ISO.txt](/tests/raw/20260927T0000Z-5501a-card-2/cpurisk/01ISO.txt) (as run 20260927T0000Z-5501a-card-1).
+
+### 27 September 2026 (card-d)
+
+[00RUN.txt](/tests/raw/20260927T0000Z-5501a-card-d/cpurisk/00RUN.txt):
+
+```
+===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+2 tests
+A chain program, linked at 80100000
+Saved on the card in slot 2, from image 1
+COP0 at start: BPC 00000000 BDA 80024F50 TAR BFC02BAC DCIC 00000000 BadVaddr 800154CE BDAM FFFFFFFF
+BPCM 00000000 SR 40000000 Cause 00000020 EPC 80021B7C PRId 00000002
+```
+
+[01ISO.txt](/tests/raw/20260927T0000Z-5501a-card-d/cpurisk/01ISO.txt):
+
+```
+===== 01 ISO CPU CACHE ISOLATE | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 800154CE
+
+cpu/cache isolation: SR bit 16 set, memory holds 11111111
+1 isolate and restore, uncached code: cache word before DEADBEEF, read DEADBEEF, memory after 11111111
+2 isolated lw, uncached code: cache word before DEADBEEF, read 00002021, memory after 11111111
+3 isolated lw, sw 22222222, lw, sw back, uncached code: cache word before 00002021, read 22222222, memory after 11111111
+Done.
+```
+
+[02BUG.txt](/tests/raw/20260927T0000Z-5501a-card-d/cpurisk/02BUG.txt):
+
+```
+===== 02 BUG CPU BUS GAPS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 800154CE
+
+cpu/bus gaps
+lw 00800000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu 00800000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu 00800000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw 10000000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu 10000000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu 10000000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw 1F000000: none, reg FFFFFFFF, badvaddr 800154CE to 800154CE
+lhu 1F000000: none, reg 0000FFFF, badvaddr 800154CE to 800154CE
+lbu 1F000000: none, reg 000000FF, badvaddr 800154CE to 800154CE
+lw 1F801030: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu 1F801030: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu 1F801030: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw 1FA00000: none, reg FFFFFFFF, badvaddr 800154CE to 800154CE
+lhu 1FA00000: none, reg 0000FFFF, badvaddr 800154CE to 800154CE
+lbu 1FA00000: none, reg 000000FF, badvaddr 800154CE to 800154CE
+lw 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw A0800000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu A0800000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu A0800000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw C0000000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu C0000000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu C0000000: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw 1F800400: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu 1F800400: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu 1F800400: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw BFC80100: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu BFC80100: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu BFC80100: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw 1F801024: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu 1F801024: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu 1F801024: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw 1F801064: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lhu 1F801064: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lbu 1F801064: exception 7, reg 5A5A5A5A, badvaddr 800154CE to 800154CE
+lw 00800000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw 00800000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw 10000000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw 10000000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw 1F801030 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw 1F801030 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw 1FC80000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw 1FC80000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw A0800000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw A0800000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw C0000000 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw C0000000 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw 1F800400 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw 1F800400 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw BFC80100 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw BFC80100 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw 1F801024 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw 1F801024 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+lw 1F801064 then 16 addiu: n 1 code 7 bd 0 epc 80105568 at 80105560 badvaddr 800154CE reg 0000000F
+sw 1F801064 then 16 addiu: n 1 code 7 bd 0 epc 80105618 at 80105610 badvaddr 800154CE reg 0000000F
+Done.
+```
+
+### 28 September 2026 (card-h)
+
+[00RUN.txt](/tests/raw/20260928T0000Z-5501a-card-h/cpurisk_bug/00RUN.txt):
+
+```
+===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+1 tests
+A chain program, linked at 80010000
+Saved on the card in slot 2, from image 1
+COP0 at start: BPC 00000000 BDA 80024F50 TAR BFC02BAC DCIC 00000000 BadVaddr 1F801DAA BDAM FFFFFFFF
+BPCM 00000000 SR 70000000 Cause 00000020 EPC 80111E18 PRId 00000002
+```
+
+[01BUG.txt](/tests/raw/20260928T0000Z-5501a-card-h/cpurisk_bug/01BUG.txt):
+
+```
+===== 01 BUG CPU BUS GAPS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 1F801DAA
+
+cpu/bus gaps
+lw 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 00800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 10000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F000000: none, reg FFFFFFFF, badvaddr 1F801DAA to 1F801DAA
+lhu 1F000000: none, reg 0000FFFF, badvaddr 1F801DAA to 1F801DAA
+lbu 1F000000: none, reg 000000FF, badvaddr 1F801DAA to 1F801DAA
+lw 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801030: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1FA00000: none, reg FFFFFFFF, badvaddr 1F801DAA to 1F801DAA
+lhu 1FA00000: none, reg 0000FFFF, badvaddr 1F801DAA to 1F801DAA
+lbu 1FA00000: none, reg 000000FF, badvaddr 1F801DAA to 1F801DAA
+lw 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1FC80000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu A0800000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu C0000000: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F800400: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu BFC80100: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801024: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lhu 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lbu 1F801064: exception 7, reg 5A5A5A5A, badvaddr 1F801DAA to 1F801DAA
+lw 00800000 then 16 addiu: n 1 code 7 bd 0 epc 80015548 at 80015538 badvaddr 1F801DAA reg 0000000F
+sw 00800000 then 16 addiu: n 1 code 7 bd 0 epc 800155F8 at 800155E8 badvaddr 1F801DAA reg 0000000F
+lw 10000000 then 16 addiu: n 1 code 7 bd 0 epc 80015548 at 80015538 badvaddr 1F801DAA reg 0000000F
+sw 10000000 then 16 addiu: n 1 code 7 bd 0 epc 800155F8 at 800155E8 badvaddr 1F801DAA reg 0000000F
+lw 1F801030 then 16 addiu: n 1 code 7 bd 0 epc 80015548 at 80015538 badvaddr 1F801DAA reg 0000000F
+sw 1F801030 then 16 addiu: n 1 code 7 bd 0 epc 800155F8 at 800155E8 badvaddr 1F801DAA reg 0000000F
+lw 1FC80000 then 16 addiu: n 1 code 7 bd 0 epc 80015548 at 80015538 badvaddr 1F801DAA reg 0000000F
+sw 1FC80000 then 16 addiu: n 1 code 7 bd 0 epc 800155F8 at 800155E8 badvaddr 1F801DAA reg 0000000F
+lw A0800000 then 16 addiu: n 1 code 7 bd 0 epc 80015548 at 80015538 badvaddr 1F801DAA reg 0000000F
+sw A0800000 then 16 addiu: n 1 code 7 bd 0 epc 800155F8 at 800155E8 badvaddr 1F801DAA reg 0000000F
+lw C0000000 then 16 addiu:
+```
+
+### 28 September 2026 (card-h)
+
+[00RUN.txt](/tests/raw/20260928T0000Z-5501a-card-h/cpurisk_iso/00RUN.txt):
+
+```
+===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+1 tests
+A chain program, linked at 80100000
+Saved on the card in slot 2, from image 1
+COP0 at start: BPC 00000000 BDA 80024F50 TAR 8001D544 DCIC 00000000 BadVaddr 1F801DAA BDAM FFFFFFFF
+BPCM 00000000 SR 70000000 Cause 00000020 EPC 8001E0F8 PRId 00000002
+```
+
+[01ISO.txt](/tests/raw/20260928T0000Z-5501a-card-h/cpurisk_iso/01ISO.txt):
+
+```
+===== 01 ISO CPU CACHE ISOLATE | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 1F801DAA
+
+cpu/cache isolation: SR bit 16 set, memory holds 11111111
+1 isolate and restore, uncached code: cache word before DEADBEEF, read DEADBEEF, memory after 11111111
+2 isolated lw, uncached code: cache word before DEADBEEF, read 8FA40254, memory after 11111111
+3 isolated lw, sw 22222222, lw, sw back, uncached code: cache word before 8FA40254, read 22222222, memory after 11111111
+Done.
+```
+
+## References
+
+[^runh]: Hardware test run 20260928T0000Z-5501a-card-h on the SCPH-5501: [01BUG.txt](/tests/raw/20260928T0000Z-5501a-card-h/cpurisk_bug/01BUG.txt) · [01ISO.txt](/tests/raw/20260928T0000Z-5501a-card-h/cpurisk_iso/01ISO.txt).
+[^runs]: Hardware test runs on the SCPH-5501: [20260927T0000Z-5501a-card-1 01ISO.txt](/tests/raw/20260927T0000Z-5501a-card-1/cpurisk/01ISO.txt) · [20260927T0000Z-5501a-card-1 02BUG.txt](/tests/raw/20260927T0000Z-5501a-card-1/cpurisk/02BUG.txt) · [20260927T0000Z-5501a-card-2 01ISO.txt](/tests/raw/20260927T0000Z-5501a-card-2/cpurisk/01ISO.txt) · [20260927T0000Z-5501a-card-2 02BUG.txt](/tests/raw/20260927T0000Z-5501a-card-2/cpurisk/02BUG.txt) · [20260927T0000Z-5501a-card-d 01ISO.txt](/tests/raw/20260927T0000Z-5501a-card-d/cpurisk/01ISO.txt) · [20260927T0000Z-5501a-card-d 02BUG.txt](/tests/raw/20260927T0000Z-5501a-card-d/cpurisk/02BUG.txt) · [20260928T0000Z-5501a-card-h 01BUG.txt](/tests/raw/20260928T0000Z-5501a-card-h/cpurisk_bug/01BUG.txt) · [20260928T0000Z-5501a-card-h 01ISO.txt](/tests/raw/20260928T0000Z-5501a-card-h/cpurisk_iso/01ISO.txt) · [20260926T0000Z-5501a-card-cpu-3 13BUG.txt](/tests/raw/20260926T0000Z-5501a-card-cpu-3/cpu/13BUG.txt) · [20260926T0000Z-5501a-card-cpu-3 14ISO.txt](/tests/raw/20260926T0000Z-5501a-card-cpu-3/cpu/14ISO.txt).