diff --git a/sysdata/libraries/pci/src/lib.hb b/sysdata/libraries/pci/src/lib.hb
index 54fb294..1445fae 100644
--- a/sysdata/libraries/pci/src/lib.hb
+++ b/sysdata/libraries/pci/src/lib.hb
@@ -13,7 +13,10 @@ scan_bus := fn(): void {
 
 config_read32 := fn(bus: u32, device: u32, func: u32, offset: u32): u32 {
 	// construct address param
-	address := bus << 16 | device << 11 | func << 8 | offset & 0xFC | 0x80000000
+	address := bus << 16 | device << 11 | func << 8
+	address |= offset
+	address &= 0xFC
+	address |= 0x80000000
 
 	// write address
 	//Port::new(0xCF8).write(address);