ASELSANMicrokernel
S43 · SOURCE-BOUND GATE EVIDENCE

RPi5 G8a PSCI CPU1 bring-up paketi hazırlandı; fiziksel BOOT8 bekliyor

Operations komutu/kapı ailesi → gerçek repository yürütme sözleşmesi Bu sayfa yalnız S43 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S43Komut / fiziksel sözleşmeOperations id exactsource SHA exact

operation: rpi5-g8a-psci-cpu1-package-staged

script/Makefile/config · Operations · 2 exact excerpt

sequence-bound=true · implementation-bound=false
01 · Yürütme sözleşmesi

Gerçek script / Makefile / config kaynağı

tam dosyaL1–L142
scripts/verify-rpi5-g8-layout.sh::verify-rpi5-g8-layout.sh
#!/bin/sh
set -eu

if [ "$#" -ne 3 ]; then
    echo "usage: $0 <llvm-readobj> <llvm-objdump> <rpi5-kernel-elf>" >&2
    exit 2
fi

readobj=$1
objdump=$2
kernel=$3
for input in "$readobj" "$objdump" "$kernel"; do
    if [ ! -f "$input" ] || [ ! -r "$input" ]; then
        echo "HATA: G8 gate okuyamıyor: $input" >&2
        exit 1
    fi
done

disassembly=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-dis.XXXXXX")
symbols=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-sym.XXXXXX")
secondary=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-secondary.XXXXXX")
secondary_mmu=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-mmu.XXXXXX")
smc=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-smc.XXXXXX")
secondary_rust=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-rust.XXXXXX")
trap 'rm -f "$disassembly" "$symbols" "$secondary" "$secondary_mmu" "$smc" "$secondary_rust"' EXIT HUP INT TERM

"$objdump" -d --no-show-raw-insn "$kernel" > "$disassembly"
"$objdump" --syms "$kernel" > "$symbols"

extract_symbol() {
    symbol=$1
    output=$2
    awk -v header="<$symbol>:" '
        index($0, header) { capture = 1 }
        capture && /^[[:space:]]*$/ { exit }
        capture { print }
    ' "$disassembly" > "$output"
    if [ ! -s "$output" ]; then
        echo "HATA: G8 makine-kodu sembolü bulunamadı: $symbol" >&2
        exit 1
    fi
}

extract_symbol rpi5_g8_secondary_entry "$secondary"
extract_symbol rpi5_g8_enable_secondary_mmu "$secondary_mmu"
extract_symbol rpi5_psci_smc64 "$smc"
extract_symbol rpi5_g8_secondary_rust "$secondary_rust"

for contract in \
    'msr[[:space:]]+DAIFSet, #0xf' \
    'mrs[[:space:]]+x20, MPIDR_EL1' \
    'ubfx[[:space:]]+x22, x20, #8, #8' \
    'mrs[[:space:]]+x0, CurrentEL' \
    'msr[[:space:]]+HCR_EL2, x0' \
    'msr[[:space:]]+SPSR_EL2, x0' \
    '[[:space:]]eret([[:space:]]|$)' \
    'bl[[:space:]]+.*<rpi5_g8_enable_secondary_mmu>' \
    'msr[[:space:]]+VBAR_EL1, x0' \
    'bl[[:space:]]+.*<rpi5_g8_secondary_rust>' \
    '[[:space:]]wfe([[:space:]]|$)'; do
    if ! grep -Eq "$contract" "$secondary"; then
        echo "HATA: G8 secondary trampoline sözleşmesi eksik: $contract" >&2
        exit 1
    fi
done

if grep -Eq 'zero_bss|DAIFClr|rpi5_uart_puts' "$secondary"; then
    echo "HATA: G8 CPU1 trampoline BSS temizliyor, IRQ açıyor veya UART'a yazıyor" >&2
    exit 1
fi

for contract in \
    'msr[[:space:]]+MAIR_EL1' \
    'msr[[:space:]]+TCR_EL1' \
    'msr[[:space:]]+TTBR0_EL1' \
    'tlbi[[:space:]]+vmalle1is' \
    'mrs[[:space:]]+x8, SCTLR_EL1' \
    'msr[[:space:]]+SCTLR_EL1, x8' \
    '[[:space:]]ret([[:space:]]|$)'; do
    if ! grep -Eq "$contract" "$secondary_mmu"; then
        echo "HATA: G8 secondary MMU sözleşmesi eksik: $contract" >&2
        exit 1
    fi
done

if ! grep -Eq '[[:space:]]smc[[:space:]]+#0' "$smc"; then
    echo "HATA: G8 PSCI wrapper SMC #0 içermiyor" >&2
    exit 1
fi

if grep -Eq '(^|[[:space:],\[])(([qv][0-9]+)|([sd][0-9]+))([[:space:],\]]|$)' "$secondary_rust"; then
    echo "HATA: G8 FP=TRAP CPU1 Rust gövdesi FP/SIMD talimatı içeriyor" >&2
    exit 1
fi
if grep -Eq 'DAIFClr|<.*kprint|<.*gic::|<.*timer::init|<.*scheduler' "$secondary_rust"; then
    echo "HATA: G8 CPU1 Rust gövdesi IRQ açıyor, UART/GIC/timer/scheduler yoluna giriyor" >&2
    exit 1
fi

symbol_value() {
    name=$1
    awk -v name="$name" '$NF == name { print $1; exit }' "$symbols"
}

entry_hex=$(symbol_value rpi5_g8_secondary_entry)
text_start_hex=$(symbol_value __text_start)
text_end_hex=$(symbol_value __text_end)
stack_size_hex=$(awk '$NF == "PERCPU_KERNEL_STACKS" { print $(NF-1); exit }' "$symbols")
if [ -z "$entry_hex" ] || [ -z "$text_start_hex" ] || [ -z "$text_end_hex" ]; then
    echo "HATA: G8 entry/text sembol sınırları çözülemedi" >&2
    exit 1
fi
entry=$((0x$entry_hex))
text_start=$((0x$text_start_hex))
text_end=$((0x$text_end_hex))
if [ $((entry & 3)) -ne 0 ] || [ "$entry" -lt "$text_start" ] || [ "$entry" -ge "$text_end" ]; then
    echo "HATA: G8 PSCI entry kernel text içinde hizalı değil: 0x$entry_hex" >&2
    exit 1
fi
if [ "$stack_size_hex" != "0000000000010000" ]; then
    echo "HATA: dört adet 16 KiB per-CPU stack toplamı 64 KiB değil: $stack_size_hex" >&2
    exit 1
fi

for marker in \
    'ASELSAN/G8S0 CPU=0 DT=PSCI-1.0 CONDUIT=SMC CPUS=4 TARGET=0x' \
    'ASELSAN/G8S1 CPU=1 MPIDR=0x' \
    'ASELSAN/BOOT8 PSCI=OK CPU_ON=OK SECONDARY=CPU1' \
    'ASELSAN/G8ERR CODE='; do
    if ! strings "$kernel" | grep -Fq "$marker"; then
        echo "HATA: G8 marker ELF içinde yok: $marker" >&2
        exit 1
    fi
done

"$readobj" --file-headers "$kernel" | grep -Eq 'Entry: 0x80000$' || {
    echo "HATA: G8 RPi5 ELF entry 0x80000 değil" >&2
    exit 1
}

echo "PASS: G8 PSCI SMC64, BCM2712 Aff1 CPU1, EL2/EL1 trampoline, shared TTBR0 and masked secondary machine-code contract verified"
snippet sha256: ba7b4cdd832ffile sha256: ba7b4cdd832f
02 · Kapı kimlik kaydı

Operations sıra, kimlik ve başlık bağı

tam Operations kaydıL33317–L33429
website/src/lib/operations.ts::rpi5-g8a-psci-cpu1-package-staged
  {
    id: "rpi5-g8a-psci-cpu1-package-staged",
    date: "2026-08-20",
    sequence: 43,
    status: "partial",
    title:
      "RPi5 G8a PSCI CPU1 bring-up paketi hazırlandı; fiziksel BOOT8 bekliyor",
    summary:
      "G7d fiziksel BOOT7D sınırı korunarak G8'in ilk ve özellikle dar dilimi hazırlandı. Runtime DTB'deki exact PSCI 1.0/SMC ve dört BCM2712 CPU topolojisi pre-MMU doğrulanıyor; CPU0 yalnız MPIDR 0x100 CPU1'i PSCI CPU_ON64 ile EL2/EL1 uyumlu secondary trampoline'a çağırıyor. CPU1, CPU0'ın shared Stage-1 kökünü kullanıyor ve iki yönlü coherent mailbox handshake'inden sonra IRQ maskeli WFE parkında kalıyor. G8 hedef testleri 18/18, workspace 102/102, QEMU smoke, RPi4/RPi5 build'leri, RPi5 disassembly kapısı ve paket manifesti geçti. 242848 baytlık dca4ab20…ae863 imaj yalnız build/rpi5 içinde staged durumdadır; microSD'ye yazılmadı ve gerçek G8S0/G8S1/BOOT8 UART10 kanıtı alınmadı.",
    evidence: [
      "Paketlenmiş bcm2712-rpi-5-b.dtb allocation-free production parser ile exact PSCI-1.0, SMC conduit, dört enable-method=psci CPU ve MPIDR 0x000/0x100/0x200/0x300 sözleşmesinden geçti.",
      "PSCI wrapper VERSION, FEATURES, CPU_ON64=0xc4000003 ve AFFINITY_INFO64 çağrılarını SMC #0 ile yapıyor; SMCCC caller-saved x0–x17 clobber sınırı makine kodunda korunuyor.",
      "CPU0 yalnız TARGET=0x100 CPU1'i 0x4738435055310001 context ID ile açar. Entry 0x801f8, kernel text içinde dört bayt hizalıdır; başka CPU için CPU_ON yolu yoktur.",
      "Secondary trampoline BCM2712 logical CPU indeksini MPIDR.Aff1'den seçer, EL2 ve EL1 girişlerini maskeli EL1h'te birleştirir, CPU1'e ayrı 16 KiB stack/TPIDR/VBAR kurar ve shared BSS'i temizlemez.",
      "CPU1 aynı TTBR0 base'iyle MMU ve I/D cache'i açar; context/MPIDR/EL/SCTLR/TTBR0/VBAR/CPACR/DAIF/TPIDR alanlarını coherent mailbox'a yayımlar.",
      "İki yönlü cookie echo, heartbeat=1 ve online mask 0x1→0x3 release/acquire atomikleriyle doğrulanır. AFFINITY_AFTER=ON, en az 10 primary tick ve ilişkili sonraki SEC örneği BOOT8 ön koşuludur.",
      "CPU1 UART'a yazmaz, IRQ açmaz ve GIC/timer/scheduler init yoluna girmez; FP/SIMD trap kalır ve CPU1 WFE parkında tutulur.",
      "G8 host matrisi 18/18 PASS verdi: DTB/topology 5/5, source/SMCCC/trampoline 6/6, strict UART/adversarial validator 7/7.",
      "cargo test --workspace 102/102 PASS; make verify-core exit 0. QEMU smoke ‘hello ELF + IPC ELF + scheduler SEC 5; fault marker yok’ verdi; RPi4 ve RPi5 build'leri geçti.",
      "scripts/verify-rpi5-g8-layout.sh SMC64, Aff1, EL2/EL1 trampoline, VBAR, shared TTBR0, MMU barrier/TLBI sırası ve maskeli CPU1 izolasyonunu disassembly üzerinde PASS verdi.",
      "G8 kabul marker'ları QEMU ve RPi4 artefaktlarında yoktur; yalnız board-rpi5 imajında bulunur.",
      "Staged imaj exact 242848 bayt / dca4ab20b49b2a6b26cb19d6d0f0d880d5af49057c95c05996d0ce43a3ae8637; DTB 40a2fbe9…ca00, config 1248275c…d76b ve SHA256SUMS f779999e…0501'dir.",
      "build/rpi5 manifesti aselsanos-rpi5.img, bcm2712-rpi-5-b.dtb ve config.txt için 3/3 OK verdi. Staged ve fiziksel kabul sınırı docs/M8.1-RPi5-G8a-PSCI-CPU1-Staged-Proof.md içinde donduruldu.",
    ],
    commands: [
      "make verify-rpi5-g8-host",
      "make verify-core",
      "sh scripts/verify-rpi5-g8-layout.sh <llvm-readobj> <llvm-objdump> <rpi5-elf>",
      "make image-rpi5",
      "cd build/rpi5 && shasum -a 256 -c SHA256SUMS",
      "stat + shasum + symbol/board-marker isolation audit",
    ],
    terminalSessionsNote:
      "Bu oturumlar dondurulmuş G8a kaynağı üzerinde gerçekten yeniden çalıştırılan host/build/makine-kodu/paket komutlarının seçili sonuçlarıdır. Uzun mevcut compiler warning'leri kısaltılmıştır. Fixture sentetiktir; hiçbir satır fiziksel UART çıktısı olarak sunulmaz.",
    terminalSessions: [
      {
        id: "g8a-host-contract",
        title: "G8a DTB · SMCCC · trampoline · strict UART sözleşmesi",
        commandLines: ["make verify-rpi5-g8-host"],
        outputLines: [
          "rpi5_g8_contract: 5 passed; 0 failed",
          "rpi5_g8_source: 6 passed; 0 failed",
          "rpi5_g8_uart: 7 passed; 0 failed",
          "G8 targeted total: 18/18 PASS",
        ],
        exitCode: 0,
        outputMode: "selected",
        outputNote: "Üç G8 test binary'sinin sonuç satırları seçildi.",
      },
      {
        id: "g8a-core-matrix",
        title: "Workspace · QEMU · RPi4 · RPi5 tam gerileme matrisi",
        commandLines: ["make verify-core"],
        outputLines: [
          "cargo test --workspace: 102 passed; 0 failed",
          "QEMU smoke PASS: hello ELF + IPC ELF + scheduler SEC 5; fault marker yok",
          "Raspberry Pi 4 kernel build: PASS",
          "Raspberry Pi 5 kernel build: PASS",
          "make verify-core: exit 0",
        ],
        exitCode: 0,
        outputMode: "selected",
        outputNote: "Tek verify-core çalışmasının kapı sonuçları seçildi.",
      },
      {
        id: "g8a-machine-code",
        title: "RPi5 PSCI/secondary makine-kodu ve board izolasyonu",
        commandLines: [
          "sh scripts/verify-rpi5-g8-layout.sh <llvm-readobj> <llvm-objdump> target/rpi5/.../aselsan_kernel",
          "llvm-nm -S target/rpi5/.../aselsan_kernel | rg 'rpi5_g8|rpi5_psci'",
          "QEMU/RPi4/RPi5 marker isolation audit",
        ],
        outputLines: [
          "PASS: G8 PSCI SMC64, BCM2712 Aff1 CPU1, EL2/EL1 trampoline, shared TTBR0 and masked secondary machine-code contract verified",
          "rpi5_g8_secondary_entry 0x801f8 size=0xc8",
          "rpi5_g8_enable_secondary_mmu 0x8d468 size=0x68",
          "rpi5_g8_secondary_rust 0x8d4d0 size=0x210",
          "rpi5_psci_smc64 0x92080 size=0x0c · smc #0",
          "qemu/rpi4 G8 acceptance markers=0 · rpi5 acceptance markers=present",
        ],
        exitCode: 0,
        outputMode: "selected",
      },
      {
        id: "g8a-package",
        title: "Dondurulmuş RPi5 staged paket · manifest 3/3",
        commandLines: [
          "make image-rpi5",
          "stat + shasum -a 256 build/rpi5/*",
          "cd build/rpi5 && shasum -a 256 -c SHA256SUMS",
        ],
        outputLines: [
          "242848 build/rpi5/aselsanos-rpi5.img",
          "dca4ab20b49b2a6b26cb19d6d0f0d880d5af49057c95c05996d0ce43a3ae8637  aselsanos-rpi5.img",
          "40a2fbe9c29e8b9a4912cf726a943068defb779fc052ec38e457a79c58abca00  bcm2712-rpi-5-b.dtb",
          "1248275cdc6f6ce951ce0ff2183471d194c5b9bb58c3dc3f66efa9156f91d76b  config.txt",
          "f779999ead67e71b7b26fd3eb30370113bf2d495ff4110f6874b36ba80750501  SHA256SUMS",
          "aselsanos-rpi5.img: OK",
          "bcm2712-rpi-5-b.dtb: OK",
          "config.txt: OK",
        ],
        exitCode: 0,
        outputMode: "selected",
      },
    ],
    limitations: [
      "Bu kayıt host, kaynak, disassembly ve paket kanıtıdır; microSD'ye yazılmadı, Raspberry Pi 5 açılmadı ve gerçek UART10 G8S0/G8S1/BOOT8 gözlenmedi.",
      "G8a yalnız CPU1 CPU_ON, shared Stage-1 root ve tek coherent mailbox smoke'udur; genel SMP veya multi-core scheduler PASS'i değildir.",
      "CPU1 GIC/timer/scheduler üyeliği, IPI, task migration, TLB shootdown, CPU2/CPU3, CPU_OFF/hotplug ve EL0-on-CPU1 kapsam dışıdır.",
      "Sentetik fixture'daki entry/version/tick değerleri validator girdisidir ve fiziksel ölçüm değildir.",
      "Fiziksel PASS için exact kart kimliği, formatsız yazım, manifest/cmp/eject ve değişmemiş 115200 8N1 raw kaydın strict G8 validator'dan geçmesi gerekir.",
    ],
  },
snippet sha256: 73b921d40119file sha256: 9726dbf00f84
Kayıtlı yürütme/kanıt komutu
make verify-rpi5-g8-host
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9