1
0
mirror of https://github.com/sgmarz/osblog.git synced 2024-11-27 20:03:32 +04:00

Document how to get the index from mmio address

This commit is contained in:
Stephen Marz 2020-03-13 11:23:08 -04:00
parent 5b2e780484
commit eec1047ac9

View File

@ -123,7 +123,13 @@ pub fn init() {
pub fn setup_block_device(ptr: *mut u32) -> bool { pub fn setup_block_device(ptr: *mut u32) -> bool {
unsafe { unsafe {
let idx = (ptr as usize - 0x1000_1000) >> 12; // We can get the index of the device based on its address.
// 0x1000_1000 is index 0
// 0x1000_2000 is index 1
// ...
// 0x1000_8000 is index 7
// To get the number that changes over, we shift right 12 places (3 hex digits)
let idx = (ptr as usize - virtio::MMIO_VIRTIO_START) >> 12;
// [Driver] Device Initialization // [Driver] Device Initialization
// 1. Reset the device (write 0 into status) // 1. Reset the device (write 0 into status)
ptr.add(MmioOffsets::Status.scale32()) ptr.add(MmioOffsets::Status.scale32())