# DF-2372 - UB bit shift zeroes all 32-bit ACPI PCI config reads

## Bug (sys/dev/acpica/Osd/OsdHardware.c:106)
`*Value &= (1 << (bytes * 8)) - 1;` - for Width=32, bytes==4 and `1 << 32`
is UB (shift count == bit width of int). clang on x86-64 emits `shl` with a
5-bit masked count, so the expression becomes `(1 << 0) - 1 == 0` and the
correctly-read value is ANDed to zero.

## Rig (ACHARNESS kernel, acsim.c op=pciub32)
Calls the REAL in-kernel AcpiOsReadPciConfiguration on 0:0.0 reg 0 at
Width 8/16/32 and the raw pci_cfgregread for ground truth.

## Baseline result (run.log)
```
raw pci_cfgregread(0:0.0, reg0, 4 bytes) = 0x12378086
AcpiOsReadPciConfiguration Width=32 -> value 0x0000000000000000   <-- MASKED TO 0
AcpiOsReadPciConfiguration Width=16 -> value 0x0000000000008086   <-- intact
VERDICT: BUG REPRODUCED
```

## Fixed kernel (fix.diff: 64-bit mask)
```
AcpiOsReadPciConfiguration Width=32 -> value 0x0000000012378086   <-- real value
```
Build: baseline ACHARNESS #3 / fixed ACHARNESS #7 (build.log).
Run: `sysctl -w debug.acsim_op=pciub32` then `sysctl -n debug.acsim_log`.
