199767f8919635c4928607450d9e0abb932109ceToomas Soome# Redistribution and use in source and binary forms, with or without
199767f8919635c4928607450d9e0abb932109ceToomas Soome# modification, are permitted provided that the following conditions
199767f8919635c4928607450d9e0abb932109ceToomas Soome# 1. Redistributions of source code must retain the above copyright
199767f8919635c4928607450d9e0abb932109ceToomas Soome# notice, this list of conditions and the following disclaimer.
199767f8919635c4928607450d9e0abb932109ceToomas Soome# 2. Redistributions in binary form must reproduce the above copyright
199767f8919635c4928607450d9e0abb932109ceToomas Soome# notice, this list of conditions and the following disclaimer in the
199767f8919635c4928607450d9e0abb932109ceToomas Soome# documentation and/or other materials provided with the distribution.
199767f8919635c4928607450d9e0abb932109ceToomas Soome# 3. Neither the name of the author nor the names of any co-contributors
199767f8919635c4928607450d9e0abb932109ceToomas Soome# may be used to endorse or promote products derived from this software
199767f8919635c4928607450d9e0abb932109ceToomas Soome# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
199767f8919635c4928607450d9e0abb932109ceToomas Soome# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
199767f8919635c4928607450d9e0abb932109ceToomas Soome# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
199767f8919635c4928607450d9e0abb932109ceToomas Soome# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
199767f8919635c4928607450d9e0abb932109ceToomas Soome# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
199767f8919635c4928607450d9e0abb932109ceToomas Soome# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
199767f8919635c4928607450d9e0abb932109ceToomas Soome# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
199767f8919635c4928607450d9e0abb932109ceToomas Soome# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
199767f8919635c4928607450d9e0abb932109ceToomas Soome# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
199767f8919635c4928607450d9e0abb932109ceToomas Soome# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
199767f8919635c4928607450d9e0abb932109ceToomas Soome# A 512 byte PMBR boot manager to read a boot program and run it.
199767f8919635c4928607450d9e0abb932109ceToomas Soome# The embedded MBR is set up for PMBR and default bootblock sector
199767f8919635c4928607450d9e0abb932109ceToomas Soome# is hardcoded to 256 and size 1. The actual values are supposed to be
199767f8919635c4928607450d9e0abb932109ceToomas Soome .set SECSIZE,0x200 # Size of a single disk sector
199767f8919635c4928607450d9e0abb932109ceToomas Soome .fill 0x3c,0x1,0x90 # fill with nop to ease disasm
199767f8919635c4928607450d9e0abb932109ceToomas Soome# BIOS Parameter Block. Reserved space from 0xb to 0x3e, the FAT32 BPB
199767f8919635c4928607450d9e0abb932109ceToomas Soome# Setup the segment registers for flat addressing and setup the stack.
199767f8919635c4928607450d9e0abb932109ceToomas Soome# Relocate ourself to a lower address so that we have more room to load
199767f8919635c4928607450d9e0abb932109ceToomas Soome# Load stage2 and start it. location and size is written by installboot
199767f8919635c4928607450d9e0abb932109ceToomas Soome# Load a sector (64-bit LBA at %si) from disk %dl into %es:%bx by creating
199767f8919635c4928607450d9e0abb932109ceToomas Soome# a EDD packet on the stack and passing it to the BIOS. Trashes %ax and %si.
199767f8919635c4928607450d9e0abb932109ceToomas Soome jmp putstr # boot loader"
199767f8919635c4928607450d9e0abb932109ceToomas Soomeerr_noboot: movw $msg_noboot,%si # "Missing boot
199767f8919635c4928607450d9e0abb932109ceToomas Soome jmp putstr # loader"
199767f8919635c4928607450d9e0abb932109ceToomas Soome# Output an ASCIZ string to the console via the BIOS.
199767f8919635c4928607450d9e0abb932109ceToomas Soomestage2_size: .word 1 # bootblock size in sectors
199767f8919635c4928607450d9e0abb932109ceToomas Soome# this is the end of the code block we can use, next is space for