Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change 1st stage int 13h addressing #123

Merged
merged 1 commit into from
Jul 16, 2020

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