S49 · SOURCE-BOUND GATE EVIDENCE
RPi5 G8c CPU1-pinned yerel EL1 task paketi hazırlandı; fiziksel BOOT8C bekliyor
Operations komutu/kapı ailesi → gerçek repository yürütme sözleşmesi Bu sayfa yalnız S49 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.
S49Komut / fiziksel sözleşmeOperations id exactsource SHA exact
operation: rpi5-g8c-cpu1-local-task-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–L168
scripts/verify-rpi5-g8c-layout.sh::verify-rpi5-g8c-layout.sh
#!/bin/sh
set -eu
if [ "$#" -ne 2 ]; then
echo "usage: $0 <llvm-objdump> <rpi5-kernel-elf>" >&2
exit 2
fi
objdump=$1
kernel=$2
for input in "$objdump" "$kernel"; do
if [ ! -f "$input" ] || [ ! -r "$input" ]; then
echo "HATA: G8c gate okuyamıyor: $input" >&2
exit 1
fi
done
disassembly=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8c-dis.XXXXXX")
symbols=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8c-symbols.XXXXXX")
secondary=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8c-secondary.XXXXXX")
task=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8c-task.XXXXXX")
stack_call=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8c-stack-call.XXXXXX")
g8b_secondary=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8c-g8b-secondary.XXXXXX")
prerequisite=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8c-prerequisite.XXXXXX")
trap 'rm -f "$disassembly" "$symbols" "$secondary" "$task" "$stack_call" "$g8b_secondary" "$prerequisite"' EXIT HUP INT TERM
"$objdump" -d --no-show-raw-insn "$kernel" > "$disassembly"
"$objdump" -t "$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: G8c makine-kodu sembolü bulunamadı: $symbol" >&2
exit 1
fi
}
extract_symbol rpi5_g8c_secondary_run "$secondary"
extract_symbol rpi5_g8c_task_entry "$task"
extract_symbol rpi5_g8c_call_on_stack "$stack_call"
extract_symbol rpi5_g8b_secondary_run "$g8b_secondary"
extract_symbol rpi5_g8b_prerequisite_complete "$prerequisite"
stack_line=$(awk '/rpi5_g8c.*TASK_STACK$/ { print; exit }' "$symbols")
if [ -z "$stack_line" ]; then
echo "HATA: G8c statik task stack sembolü yok" >&2
exit 1
fi
stack_address=$(printf '%s\n' "$stack_line" | awk '{ print $1 }')
stack_section=$(printf '%s\n' "$stack_line" | awk '{ print $4 }')
stack_size=$(printf '%s\n' "$stack_line" | awk '{ print $5 }')
if [ "$stack_section" != ".bss" ] || [ "$stack_size" != "0000000000010000" ]; then
echo "HATA: G8c task stack .bss/64KiB değil: $stack_line" >&2
exit 1
fi
if [ $((0x$stack_address % 4096)) -ne 0 ]; then
echo "HATA: G8c task stack 4KiB hizalı değil: 0x$stack_address" >&2
exit 1
fi
for contract in \
'stp[[:space:]]+x29, x30, \[sp, #-0x10\]!' \
'stp[[:space:]]+x19, xzr, \[sp, #-0x10\]!' \
'mov[[:space:]]+x19, sp' \
'mov[[:space:]]+sp, x0' \
'mov[[:space:]]+x0, x2' \
'blr[[:space:]]+x1' \
'mov[[:space:]]+sp, x19' \
'ldp[[:space:]]+x19, xzr, \[sp\], #0x10' \
'ldp[[:space:]]+x29, x30, \[sp\], #0x10' \
'[[:space:]]ret([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$stack_call"; then
echo "HATA: G8c gerçek stack değiştir/döndür trampoline sözleşmesi eksik: $contract" >&2
exit 1
fi
done
for contract in \
'bl[[:space:]]+.*<rpi5_g8b_prerequisite_complete>' \
'mrs[[:space:]]+x[0-9]+, MPIDR_EL1' \
'bl[[:space:]]+.*<.*current_el>' \
'mrs[[:space:]]+x[0-9]+, TPIDR_EL1' \
'mrs[[:space:]]+x[0-9]+, DAIF' \
'mrs[[:space:]]+x[0-9]+, CNTV_CTL_EL0' \
'mrs[[:space:]]+x[0-9]+, CPACR_EL1' \
'<rpi5_g8c_task_entry>' \
'bl[[:space:]]+.*<rpi5_g8c_call_on_stack>' \
'ldaxr[[:space:]]+x[0-9]+' \
'stlxr[[:space:]]+w[0-9]+' \
'[[:space:]]sev([[:space:]]|$)' \
'[[:space:]]wfe([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$secondary"; then
echo "HATA: G8c CPU1 yerel dispatch makine-kodu eksik: $contract" >&2
exit 1
fi
done
for contract in \
'mrs[[:space:]]+x[0-9]+, MPIDR_EL1' \
'mrs[[:space:]]+x[0-9]+, DAIF' \
'mrs[[:space:]]+x[0-9]+, CNTV_CTL_EL0' \
'mov[[:space:]]+x[0-9]+, sp' \
'ldaxr[[:space:]]+x[0-9]+' \
'stlxr[[:space:]]+w[0-9]+' \
'stlr[[:space:]]+x[0-9]+' \
'[[:space:]]ret([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$task"; then
echo "HATA: G8c exactly-once task makine-kodu eksik: $contract" >&2
exit 1
fi
done
for contract in \
'cmp[[:space:]]+x[0-9]+, #0x6' \
'cmp[[:space:]]+x[0-9]+, #0x1b' \
'cmp[[:space:]]+x[0-9]+, #0x1' \
'tbnz[[:space:]]+w[0-9]+, #0x0' \
'ldarb[[:space:]]+w[0-9]+'; do
if ! grep -Eq "$contract" "$prerequisite"; then
echo "HATA: G8c G8b fiziksel önkoşul makine-kodu eksik: $contract" >&2
exit 1
fi
done
for contract in \
'bl[[:space:]]+.*<rpi5_g8c_secondary_released>' \
'bl[[:space:]]+.*<rpi5_g8c_secondary_run>' \
'[[:space:]]wfe([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$g8b_secondary"; then
echo "HATA: G8c G8b park-handoff makine-kodu eksik: $contract" >&2
exit 1
fi
done
for cpu1_body in "$secondary" "$task" "$stack_call" "$prerequisite"; do
if grep -Eq '(^|[[:space:],\[])(([qv][0-9]+)|([sd][0-9]+))([[:space:],\]]|$)' "$cpu1_body"; then
echo "HATA: G8c FP=TRAP CPU1 makine-kodu FP/SIMD talimatı içeriyor" >&2
exit 1
fi
if grep -Eq 'panic|kprint|scheduler|context_switch|spawn_kernel_task|alloc::|rpi5_g7' "$cpu1_body"; then
echo "HATA: G8c CPU1 yolu panic/UART/global-dispatch/heap/önceki-gate çağrısı içeriyor" >&2
exit 1
fi
done
if grep -Eq 'msr[[:space:]]+DAIFClr|rpi5_g8b_init_per_cpu_oneshot|ack_and_rearm|rpi5_g8b_init_secondary_timer_ppi' "$secondary" "$task"; then
echo "HATA: G8c yerel task yolu IRQ açıyor veya timer/GIC programlıyor" >&2
exit 1
fi
for marker in \
'ASELSAN/G8C0 CPU=0 TARGET=CPU1 MPIDR=0x' \
'ASELSAN/G8C1 CPU=1 MPIDR=0x' \
'ASELSAN/BOOT8C SCHED=LOCAL CPU1_TASK=1' \
'ASELSAN/G8CERR CODE='; do
if ! strings "$kernel" | grep -Fq "$marker"; then
echo "HATA: G8c marker ELF içinde yok: $marker" >&2
exit 1
fi
done
echo "PASS: G8c CPU1-pinned static EL1 task, real 64KiB stack switch/restore, exactly-once progress and IRQ-masked local idle verified"
snippet sha256: 4c2754414688…file sha256: 4c2754414688…
02 · Kapı kimlik kaydı
Operations sıra, kimlik ve başlık bağı
tam Operations kaydıL32662–L32761
website/src/lib/operations.ts::rpi5-g8c-cpu1-local-task-package-staged
{
id: "rpi5-g8c-cpu1-local-task-package-staged",
date: "2026-08-21",
sequence: 49,
status: "partial",
title:
"RPi5 G8c CPU1-pinned yerel EL1 task paketi hazırlandı; fiziksel BOOT8C bekliyor",
summary:
"Fiziksel G8b/BOOT8B sınırı korunarak CPU1 üzerinde tek statik, sabitlenmiş EL1 task'ı tam bir kez gerçek 64 KiB stack üzerinde çalıştırıp özgün CPU1 stack'ini geri yükleyen dar G8c dilimi hazırlandı. CPU1, G8b PPI27 önkoşulunu, MPIDR/EL/TPIDR durumunu, IRQ maskesini, timer OFF ve FP=TRAP durumunu doğruluyor; progress 1→2→3, stack canary ve local WFE idle dönüşü fail-closed ölçülüyor. G8c hedef testleri 15/15, workspace 131/131, QEMU runtime, üç kart derlemesi, RPi5 makine-kodu kapısı, paket manifesti ve iki artefaktsız yeniden üretim geçti. 255168 bayt / 2950ca3c…c8538 imaj yalnız build/rpi5 içinde staged durumdadır; microSD'ye yazılmadı, Pi açılmadı ve fiziksel G8C0/G8C1/BOOT8C UART10 kanıtı yoktur.",
evidence: [
"G8c sözleşmesi yalnız CPU1 MPIDR=0x100 üzerinde tek statik CPU1-pinned EL1 task, RUNS=1, PROGRESS=3 ve 64 KiB .bss stack tanımlar; migration, IPI, TLB shootdown ve CPU2/3 kapalıdır.",
"G8b handoff ancak stage=PARKED, error=0, INTID=PPI27, deliveries=1, timer OFF ve BOOT8B emitted koşullarının tümü geçince açılır; CPU0 G8c'yi yalnız BOOT8B satırından sonra başlatır.",
"CPU1 girişinde MPIDR=0x100, CurrentEL=1, TPIDR_EL1=1, IRQ masked, local virtual timer OFF, CPACR FP/SIMD trapped ve özgün per-CPU stack aralığı doğrulanır.",
"Gerçek rpi5_g8c_call_on_stack trampoline'i özgün SP'yi ABI-korumalı x19'da tutar, statik task stack'ine geçer, task dönüşünde SP/x19/x29/x30'u geri yükler; restore pointer'ı task stack'ine bırakmaz.",
"Task stack 4096 bayt hizalı 65536 bayt .bss sembolüdür. İki sözcüklü canary, task SP aralığı, dönüş cookie'si, RUNS=1 ve PROGRESS=3 hem kaynak hem disassembly kapılarında fail-closed doğrulanır.",
"G8c kaynak/izolasyon testleri 9/9 ve strict UART/adversarial testleri 6/6 olmak üzere hedef toplamı 15/15 PASS verdi.",
"make verify-core exit 0 verdi: cargo test --workspace 131/131, QEMU runtime hello ELF + IPC ELF + scheduler SEC 5, QEMU/RPi4/RPi5 build'leri ve tüm RPi5 G7c–G8c host/layout/package kapıları PASS.",
"scripts/verify-rpi5-g8c-layout.sh gerçek 64 KiB stack sembolünü, x19 tabanlı SP switch/restore'u, exactly-once atomikleri, G8b prerequisite/handoff'u, CPU1 FP/SIMD yokluğunu ve UART/heap/global scheduler/timer-GIC/IRQ-unmask izolasyonunu PASS verdi.",
"İki bağımsız artefaktsız geçici workspace kopyası aynı 255168 bayt imajı ve 2950ca3c1b0238e7e26f3f4b6c2cfa44cd88870a01596e5dc3dba2d39c1c8538 SHA-256 değerini üretti.",
"Dondurulan artefaktlar: kernel ELF 7198992 B / 4c0f0da5…42e2a; imaj 255168 B / 2950ca3c…c8538; DTB 78703 B / 40a2fbe9…ca00; config 501 B / 1248275c…d76b; SHA256SUMS 248 B / 92e5a31a…f83d.",
"Staged kabul ve fiziksel sınır docs/M8.1-RPi5-G8c-CPU1-Local-Task-Staged-Proof.md içinde donduruldu.",
],
commands: [
"make verify-rpi5-g8c-host",
"scripts/verify-rpi5-g8c-layout.sh <llvm-objdump> target/rpi5/aarch64-unknown-none/debug/aselsan_kernel",
"make verify-core",
"make image-rpi5",
"iki artefaktsız geçici workspace kopyasında make image-rpi5 + shasum -a 256 build/rpi5/aselsanos-rpi5.img",
],
terminalSessionsNote:
"Bu oturumlar dondurulmuş G8c kaynağında gerçekten çalıştırılan host, makine-kodu, tam matris ve yeniden üretim komutlarının seçili yanıtlarıdır. G8C0/G8C1/BOOT8C satırları yalnız sentetik strict-validator fixture'ıdır; fiziksel UART10 çıktısı değildir.",
terminalSessions: [
{
id: "g8c-targeted-host",
title: "G8c kaynak, izolasyon ve strict UART sözleşmesi",
commandLines: ["make verify-rpi5-g8c-host"],
outputLines: [
"rpi5_g8c_source: 9 passed · 0 failed",
"rpi5_g8c_uart: 6 passed · 0 failed",
"G8c targeted total: 15/15 PASS",
"synthetic fixture only: G8C0 → G8C1 RUNS=1 PROGRESS=3 → BOOT8C",
],
exitCode: 0,
outputMode: "selected",
outputNote: "Sentetik UART fixture fiziksel Pi çıktısı değildir.",
},
{
id: "g8c-machine-package",
title: "RPi5 G8c makine-kodu ve paket kapıları",
commandLines: [
"scripts/verify-rpi5-g8c-layout.sh <llvm-objdump> target/rpi5/aarch64-unknown-none/debug/aselsan_kernel",
"make image-rpi5",
],
outputLines: [
"PASS: G8c CPU1-pinned static EL1 task, real 64KiB stack switch/restore, exactly-once progress and IRQ-masked local idle verified",
"aselsanos-rpi5.img: 255168 bytes",
"sha256=2950ca3c1b0238e7e26f3f4b6c2cfa44cd88870a01596e5dc3dba2d39c1c8538",
"manifest=3/3 OK",
],
exitCode: 0,
outputMode: "selected",
},
{
id: "g8c-verify-core",
title: "Workspace, QEMU ve üç-board nihai matris",
commandLines: ["make verify-core"],
outputLines: [
"cargo test --workspace: 131/131 PASS",
"QEMU runtime smoke: hello ELF + IPC ELF + scheduler SEC 5 PASS",
"QEMU build: PASS",
"Raspberry Pi 4 build: PASS",
"Raspberry Pi 5 build + G7c/G7d/G8a/G8b/G8c gates: PASS",
"verify-core exit=0",
],
exitCode: 0,
outputMode: "selected",
},
{
id: "g8c-clean-reproducibility",
title: "İki artefaktsız kopyada temiz yeniden üretim",
commandLines: [
"copy A · remove build/target/userspace targets · make image-rpi5 · shasum -a 256 image",
"copy B · remove build/target/userspace targets · make image-rpi5 · shasum -a 256 image",
],
outputLines: [
"copy_a bytes=255168 sha256=2950ca3c1b0238e7e26f3f4b6c2cfa44cd88870a01596e5dc3dba2d39c1c8538",
"copy_b bytes=255168 sha256=2950ca3c1b0238e7e26f3f4b6c2cfa44cd88870a01596e5dc3dba2d39c1c8538",
"reproducible_image=PASS",
],
exitCode: 0,
outputMode: "complete",
},
],
limitations: [
"255168 bayt / 2950ca3c…c8538 G8c paketi microSD'ye yazılmadı; Pi kapalı tutuldu ve hiçbir fiziksel G8C0/G8C1/BOOT8C UART10 satırı gözlenmedi.",
"Sentetik fixture ve makine-kodu PASS'i fiziksel CPU1 task dispatch, stack switch/restore veya cache/coherency runtime kanıtı değildir.",
"Bu dilim yalnız güvenilen tek statik EL1 task ve CPU1 local idle dönüşüdür; genel SMP scheduler, EL0-on-CPU1, load balancing ve fairness kanıtlanmaz.",
"Migration, reschedule IPI/SGI, TLB shootdown, ASID/VMID koordinasyonu, CPU2/CPU3, CPU_OFF/suspend/hotplug ve uzun soak kapsam dışıdır.",
],
},snippet sha256: 83cc17727505…file sha256: 9726dbf00f84…
Kayıtlı yürütme/kanıt komutu
make verify-rpi5-g8c-hostRegistry schema v5 · generator
website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9