Skip to content

Change 1st stage int 13h addressing#123

Merged
phil-opp merged 1 commit intorust-osdev:masterfrom
rsribeiro:dma-boundary
Jul 16, 2020
Merged

Change 1st stage int 13h addressing#123
phil-opp merged 1 commit intorust-osdev:masterfrom
rsribeiro:dma-boundary

Conversation

@rsribeiro
Copy link
Contributor

Changed the addressing of the bootloader loading from disk on stage 1, so the buffer doesn't cross the memory segment boundary, as is required by int 13h/ah=42h (see Wikipedia).

With this change the bootloader no longer gets stuck on stage 1 on VirtualBox. Also tested on QEMU and Bochs, but not on real hardware.

Feel free to rewrite in a better way as I have no previous experience with asm.

@phil-opp
Copy link
Member

Thanks a lot for this! Seems like I missed the fact that the buffer must be inside the same memory segment. This also means that our bootloader must not be larger than 64KiB right?

The implementation looks good to me!

@phil-opp phil-opp merged commit f02a565 into rust-osdev:master Jul 16, 2020
phil-opp added a commit that referenced this pull request Jul 16, 2020
@phil-opp
Copy link
Member

Published as v0.9.6.

@rsribeiro rsribeiro deleted the dma-boundary branch July 16, 2020 18:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants