diff --git a/Kernel/Core/hw/bus_pci.rs b/Kernel/Core/hw/bus_pci.rs
index 3b22891692fbebc437ab92fb9720732612eb97e0..fb2365fb4e85a8a5d9815e3ca18cae75a1135d56 100644
--- a/Kernel/Core/hw/bus_pci.rs
+++ b/Kernel/Core/hw/bus_pci.rs
@@ -271,6 +271,7 @@ fn get_device(bus_id: u8, devidx: u8, function: u8) -> Option<PCIDev>
 fn parse_bar(addr: u16, word: u8) -> BAR
 {
 	let value = read_word(addr, word);
+	log_trace!("parse_bar({}) value={:#x}", word-4, value);
 	if value == 0
 	{
 		log_debug!("parse_bar: None");
@@ -294,11 +295,13 @@ fn parse_bar(addr: u16, word: u8) -> BAR
 			assert!(word % 2 == 0);
 			let value2 = read_word(addr, word+1);
 			write_word(addr, word+1, !0);
-			let size2 = !read_word(addr, word+1) + 1;
+			let size2 = !read_word(addr, word+1);	// No +1
 			write_word(addr, word+1, value2);
-			assert_eq!(size2, 0);
+			assert!(size2 == 0, "TODO: Support 64-bit BARs with sizes >4GB - size={},size2={}", size, size2);
+			let addr = (value2 as u64) << 32 | (value as u64 & !0xF);
+			log_debug!("parse_bar: (memory 64) addr={:#x} size={:#x}", addr, size);
 			
-			BAR::Mem( (value2 as u64) << 32 | (value as u64 & !0xF), size, pf == 1 )
+			BAR::Mem( addr, size, pf == 1 )
 			},
 		3 => BAR::None,	// reserved
 		_ => unreachable!()