Michael Brown
0d9d2ccbae
Completed definition of struct int13_cdrom_specification, and moved to
...
int13.h.
2007-07-19 11:15:01 +01:00
Michael Brown
fb16f90699
Dump first 64 bytes of chained ISR when debugging is enabled.
2007-07-10 16:57:55 +01:00
Michael Brown
19871cbb96
We probably ought not to call INT13 with interrupts disabled.
2007-07-10 04:32:30 +01:00
Michael Brown
cd7e296cbe
Always increase number of BIOS drives when registering
2007-07-09 20:42:04 +01:00
Michael Brown
b90d321dfb
Change %dl fixup rules for INT13:
...
INT 13,08 : read number of drives from 40:75
INT 13,15 : do nothing
all others : restore original value of %dl
2007-07-09 20:37:39 +01:00
Michael Brown
c7d9fdb5b9
Proof of concept; works, but has several hard-coded hacks.
2007-07-09 20:28:40 +01:00
Michael Brown
8bce52d348
Set CF by default, clear on success (rather than clearing and setting
...
on failure).
2007-07-09 19:02:41 +01:00
Michael Brown
dca470cb21
Add (untested) UNDI loader C-level implementation.
2007-07-03 23:41:35 +01:00
Michael Brown
8130443f9f
Separate out pxe_start_nbp() from pxe_image.c into pxe_call.c
...
Implement PXENV_RESTART_TFTP.
2007-06-30 14:56:35 +01:00
Michael Brown
2cf1e33df1
Split bootsector execution code out into bootsector.c.
...
Added basic El Torito ISO image boot capability
2007-01-29 04:21:38 +00:00
Michael Brown
7bc03d37a2
Select a PXE network device before starting PXE NBP.
...
Move pxe_boot() code to pxe_image.c
2007-01-14 02:20:10 +00:00
Michael Brown
bd863e4112
Add header for pxe_boot()
2007-01-13 17:23:44 +00:00
Michael Brown
a2ffe8c123
Allow boot sector to completely destroy real-mode stack, but still
...
manage to return control.
2007-01-09 14:13:59 +00:00
Michael Brown
a6ba48e51e
Added debugging statements
2007-01-08 03:04:54 +00:00
Michael Brown
8a45f619a9
Fix building on gas versions that don't auto-insert addr32 prefixes
2006-12-12 19:07:18 +00:00
Michael Brown
88e38fa148
We don't actually have a stdio.h header file. Our printf() functions are
...
defined in vsprintf.h. (This may change, since vsprintf.h is a
non-standard name, but for now it's the one to use.)
There should be no need to include vsprintf.h just for DBG() statements,
since include/compiler.h forces it in for a debug build anyway.
2006-09-27 10:58:14 +00:00
Marty Connor
6ac78f6aff
added stdio.h to includes for DBG compilation
2006-09-27 05:57:06 +00:00
Michael Brown
0566ab2a2f
Added geometry-guessing code based on the partition table
2006-09-08 22:22:03 +00:00
Michael Brown
40724431e8
Added support for INT 13,15; NTLDR calls it (though it may not
...
actually do anything with the result, since it carried on using us
even when we returned failure).
2006-08-26 23:42:02 +00:00
Michael Brown
19883779ba
Use TEXT16_CODE() rather than manually specifying ".code16" etc, since
...
our manual ".code32" will break a KEEP_IT_REAL build.
2006-08-24 18:43:28 +00:00
Michael Brown
4afc494b83
Both the !PXE and PXENV+ structures must be paragraph-aligned
2006-08-09 18:22:25 +00:00
Michael Brown
fd07f56f0d
Note to self: learn to count.
2006-08-09 00:56:07 +00:00
Michael Brown
843bcc291d
Added missing __from_text16()s when passing pointers to PXE NBP.
2006-08-09 00:39:21 +00:00
Michael Brown
751ae718bd
pxe_int_1a is needed by pxe_call.c
2006-08-09 00:16:57 +00:00
Michael Brown
18c112d205
Added (not yet tested) PXE API entry point and support functions.
2006-08-08 20:43:33 +00:00
Michael Brown
a0a872f7f1
Updated PXE UDP implementation to use the new Etherboot UDP API.
...
Updated PXE API dispatcher to use copy_{to,from}_user, and moved to
arch/i386 since the implementation is quite architecture-dependent.
(The individual PXE API calls can be largely
architecture-independent.)
2006-08-02 23:08:10 +00:00
Michael Brown
17eea9f933
Fix bug with >256 cylinders.
...
Allow our functions to return a non-zero, non-error status (since the
INT 13 Extensions Check has to return the API version in the register
that is otherwise always used for the error code).
Report a non-zero API version from the INT 13 Extensions Check; GRUB
now uses extended reads.
2006-06-08 19:28:08 +00:00
Michael Brown
89da833c5d
init_librm() and prot_call() are now real-mode far calls.
...
install() now calls relocate(), moves the protected-mode code to the new
location, and calls hide_etherboot().
2006-05-25 00:06:45 +00:00
Michael Brown
595f161b51
Updated to REAL_CODE().
...
int13_boot() now does its own segment register save and restore, ready
for the removal of segment register restoration from the libkir
generic code.
2006-05-24 13:48:16 +00:00
Michael Brown
ca2519cea3
Refactored to reduce code size; now down from 1304 to 1105 bytes.
...
Tidied up debug messages; the log now contains one line per INT 13
operation, looking like
INT 13,08 (80): Get drive parameters
INT 13,02 (80): Read: C/H/S 0/47/14 = LBA 0xb9e <-> 1084:0000 (count 106)
2006-05-20 15:33:32 +00:00
Michael Brown
d48d0fb1bb
Add the concept of a "user pointer" (similar to the void __user * in
...
the kernel), which encapsulates the information needed to refer to an
external buffer. Under normal operation, this can just be a void *
equivalent, but under -DKEEP_IT_REAL it would be a segoff_t equivalent.
Use this concept to avoid the need for bounce buffers in int13.c,
which reduces memory usage and opens up the possibility of using
multi-sector reads.
Extend the block-device API and the SCSI block device implementation
to support multi-sector reads.
Update iscsi.c to use user buffers.
Move the obsolete portions of realmode.h to old_realmode.h.
MS-DOS now boots an order of magnitude faster over iSCSI (~10 seconds
from power-up to C:> prompt in bochs).
2006-05-19 15:06:51 +00:00
Michael Brown
295e11b2b0
Add INT 13,41 (extensions installation check). LILO's MBR now uses
...
linear calls to load the MS-DOS boot sector in my test setup.
2006-05-14 23:46:28 +00:00
Michael Brown
29fb77b0a4
Fix a couple of minor typos.
2006-05-14 18:17:29 +00:00
Michael Brown
6e42cb95bd
Also capture INT 19 as a failure path, to allow for boot sectors that
...
don't conform to BBS (e.g. the one created by mkdosfs).
2006-05-14 14:13:55 +00:00
Michael Brown
4435667a00
Add int13_boot(), to allow booting from INT 13 emulated drives.
2006-05-14 13:44:47 +00:00
Michael Brown
63499e9cfd
Allow re-entrancy and provide a global counter of the number of
...
interrupts hooked.
2006-05-13 11:44:11 +00:00
Michael Brown
d2c22ec9bb
Add INT 13 emulation layer (which provides an interface to gPXE block
...
devices).
2006-05-13 11:41:36 +00:00
Michael Brown
847f38f4ac
(Redoing check-in lost by SourceForge's failure.)
...
Add method for hooking real-mode interrupt vectors.
2006-05-13 11:19:06 +00:00