summaryrefslogtreecommitdiffstats
path: root/src/arch
Commit message (Collapse)AuthorAgeFilesLines
* Optimise bios_putchar for speed(!) by avoiding two separate real-modeMichael Brown2006-12-191-11/+16
| | | | | calls. This does make a visible difference when clearing the screen with werase() inside bochs or qemu.
* Add basic ANSI escape sequence support to BIOS consoleMichael Brown2006-12-181-1/+139
|
* Fix building on gas versions that don't auto-insert addr32 prefixesMichael Brown2006-12-121-3/+3
|
* Avoid draining the keyboard buffer during gateA20_set(). It shouldn'tMichael Brown2006-12-051-8/+10
| | | | | | | | | | | | | | | | | | | | technically be necessary, because the "enable A20" command requires only that the keyboard controller is ready to accept input (i.e. that its input buffer is empty), and shouldn't also require that the keyboard is ready to send output (i.e. that its output buffer is also empty). See http://www.smsc.com/main/tools/io-bios/42i.pdf section 3.1 ("Command Invocation") for a justification. gateA20_set() is called on every real-mode transition (in case some idiot piece of external code such as Intel's PXE stack decided it would be fun to re-disable A20), so draining the keyboard buffer means that we end up losing keypresses on some systems. In particular, this makes typing at the command line almost impossible, and causes Etherboot to ignore Ctrl-Alt-Del. We should really implement a gateA20_test() function to verify that gate A20 has been correctly enabled, and think about adding other commonly-used methods such as Fast Gate A20.
* We don't actually have a stdio.h header file. Our printf() functions areMichael Brown2006-09-276-6/+0Star
| | | | | | | | 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.
* added stdio.h to includes for DBG compilationMarty Connor2006-09-276-0/+6
|
* fix args to _disable routineMarty Connor2006-09-191-2/+1Star
|
* get rid of compile warnings (except intentionally generated ones)Marty Connor2006-09-141-5/+5
|
* fix DBG macro unknown variableMarty Connor2006-09-141-5/+5
|
* Added geometry-guessing code based on the partition tableMichael Brown2006-09-092-11/+91
|
* Check to see if we've reached the end of the map before attempting toMichael Brown2006-08-311-0/+5
| | | | | | skip past an empty region, otherwise we end up generating an infinitely long e820 map. (Yes, there *are* real systems that provide e820 maps with a zero-length region at the end...)
* Added support for INT 13,15; NTLDR calls it (though it may notMichael Brown2006-08-271-0/+18
| | | | | actually do anything with the result, since it carried on using us even when we returned failure).
* Added support for INT 13,15; NTLDR calls it (though it may notMichael Brown2006-08-271-1/+20
| | | | | actually do anything with the result, since it carried on using us even when we returned failure).
* Use TEXT16_CODE() rather than manually specifying ".code16" etc, sinceMichael Brown2006-08-241-18/+14Star
| | | | our manual ".code32" will break a KEEP_IT_REAL build.
* Towards making KEEP_IT_REAL work again.Michael Brown2006-08-247-33/+261
| | | | | Fix bug that caused over-allocation of .text16 and .data16 memory areas by a factor of 16.
* Both the !PXE and PXENV+ structures must be paragraph-alignedMichael Brown2006-08-091-0/+2
|
* Note to self: learn to count.Michael Brown2006-08-091-3/+3
|
* Added missing __from_text16()s when passing pointers to PXE NBP.Michael Brown2006-08-091-1/+3
|
* pxe_int_1a is needed by pxe_call.cMichael Brown2006-08-091-0/+1
|
* Added (not yet tested) PXE API entry point and support functions.Michael Brown2006-08-082-0/+300
|
* Updated PXE UDP implementation to use the new Etherboot UDP API.Michael Brown2006-08-032-0/+291
| | | | | | | 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.)
* Add "addr32" required explicitly by older gas.Michael Brown2006-06-121-1/+1
|
* Added null trap code for debugging. (Must be included by addingMichael Brown2006-06-112-0/+49
| | | | --nulltrap to the make target at the moment.)
* Windows Server 2003 sulks if we feed it an empty region in base memoryMichael Brown2006-06-091-4/+42
| | | | as a result of our memory map editing, so strip out any empty regions.
* Added missing check-inMichael Brown2006-06-091-0/+16
|
* Fix bug with >256 cylinders.Michael Brown2006-06-081-15/+18
| | | | | | | | | 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.
* It's astonishing how long really fundamental bugs can survive withoutMichael Brown2006-06-081-2/+2
| | | | being noticed...
* Fix some remarkably obvious mistakes in pcidirect.hMichael Brown2006-06-081-3/+3
|
* We now have just romprefix, rather than having isaprefix and pciprefixMichael Brown2006-06-061-5/+2Star
|
* Cut out almost all the optional code paths, drastically simplifying theMichael Brown2006-06-061-375/+143Star
| | | | | | | | | flow of control through this code. We now always add PCI and PnP headers even for ISA ROMs; there's no harm in doing so. UNDI loader is still missing.
* Code segment may not be writable; create the temporary pointer to the GDTMichael Brown2006-06-061-2/+7
| | | | on the stack.
* Calculate _rom_size for the ROM prefixMichael Brown2006-06-061-0/+1
|
* Tidy up commentMichael Brown2006-05-281-4/+5
|
* Fixed assembly on old versions of gasMichael Brown2006-05-282-4/+4
|
* Updated to work with libprefix.Michael Brown2006-05-261-186/+179Star
|
* Documented the fact that the prefix can prot_call(main) withoutMichael Brown2006-05-261-0/+9
| | | | worrying about its stack being destroyed during the Etherboot run.
* Also hide base memory region from E820 map.Michael Brown2006-05-251-2/+7
|
* init_librm() and prot_call() are now real-mode far calls.Michael Brown2006-05-254-90/+120
| | | | | install() now calls relocate(), moves the protected-mode code to the new location, and calls hide_etherboot().
* Has been obsolete for a while.Michael Brown2006-05-251-160/+0Star
|
* Update relocate() to work with get_memmap().Michael Brown2006-05-251-66/+44Star
| | | | | | Change semantics; relocate() now just finds a suitable location; it doesn't actually perform the relocation itself. Code in libprefix does the copy in flat real mode.
* Fix printf format warning errorMichael Brown2006-05-251-2/+3
|
* Why should pushal/popal put the registers on the stack in a logicalMichael Brown2006-05-251-1/+1
| | | | order?
* Typo.Michael Brown2006-05-251-1/+1
|
* Add a "count" field to struct memory_map.Michael Brown2006-05-252-6/+11
|
* Define a struct memory_map with a fixed number of entries, rather thanMichael Brown2006-05-242-13/+21
| | | | requiring each caller to decide how many entries it wants to permit.
* Remove the automatic segment register save and restore; most users ofMichael Brown2006-05-241-8/+0Star
| | | | REAL_CODE() don't need it.
* Removed REAL_EXEC(); there is no longer any code using it.Michael Brown2006-05-243-44/+14Star
|
* Added potentially required "\n\t" on the end of asm_code_strMichael Brown2006-05-241-14/+1Star
|
* NBI is due for removalMichael Brown2006-05-241-0/+5
|
* Will be replaced with a block-device implementation.Michael Brown2006-05-241-0/+5
|