summaryrefslogtreecommitdiffstats
path: root/src/arch
Commit message (Collapse)AuthorAgeFilesLines
* [Settings] Migrate DHCP and NVO code to the new settings API (untested)Michael Brown2008-03-211-4/+4
|
* Merge branch 'pxerom-pmm'Michael Brown2008-03-114-305/+482
|\
| * [PXE] PMM now tested and workingMichael Brown2008-03-111-1/+1
| | | | | | | | Minor bugfix: 4 x 2 = 8, not 16
| * [prefix] Cope with image source addresses outside base memoryMichael Brown2008-03-111-121/+114Star
| | | | | | | | | | | | When PMM is used, the gPXE image source will no longer be in base memory. Decompression of .text16 and .data16 can therefore no longer be done in real mode.
| * [PXE] Improve PnP/BBS detectionMichael Brown2008-03-111-19/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | Use BBS installation check to see if we need to hook INT19 even on a PnP BIOS. Verify that $PnP signature is paragraph-aligned; bochs/qemu BIOS provides a dummy $PnP signature with no valid entry point, and deliberately unaligns the signature to indicate that it is not properly valid. Print message if INT19 is hooked. Attempt to use PMM even if BBS check failed.
| * [prefix] Add printing functions to libprefix.SMichael Brown2008-03-113-128/+112Star
| | | | | | | | | | Move the printing functions from pxeprefix.S into libprefix.S, so they are available for debug from any prefix.
| * [PXE] Add PMM support to romprefix.S (untested)Michael Brown2008-03-093-73/+243
| | | | | | | | | | | | | | | | | | | | ROM initialisation vector now attempts to allocate a 2MB block using PMM. If successful, it copies the ROM image to this block, then shrinks the ROM image to allow for more option ROMs. If unsuccessful, it leaves the ROM as-is. ROM BEV now attempts to return to the BIOS, resorting to INT 18 only if the BIOS stack has been corrupted.
* | Merge branch 'xl0-timer'Michael Brown2008-03-1010-231/+206Star
|\ \ | |/ |/|
| * Use plain C in timer_rdtsc for division instead of inline asssembly.Alexey Zaytsev2008-03-061-43/+21Star
| | | | | | | | | | | | This also fixes a bug in rdtsc_currticks when the result did not fix in %eax Signed-off-by: Alexey Zaytsev <zaytsev.a@protei.ru>
| * fix the rdtsc namimgAlexey Zaytsev2008-03-022-8/+8
| |
| * CleanupsAlexey Zaytsev2008-03-022-2/+6
| | | | | | | | | | | | | | | | Replace a printf with a DBG in timer_rtdsc.c Replace a printf in timer.c with assert Return proper error codes from timer drivers Signed-off-by: Alexey Zaytsev <alexey.zaytsev@gmail.com>
| * Modify gPXE core and drivers to work with the new timer subsystemAlexey Zaytsev2008-03-023-16/+4Star
| | | | | | | | Signed-off-by: Alexey Zaytsev <alexey.zaytsev@gmail.com>
| * Introduce the new timer subsystem.Alexey Zaytsev2008-03-026-215/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Timer subsystem initialization code in core/timer.c Split the BIOS and RTDSC timer drivers from i386_timer.c Split arch/i386/firmware/pcbios/bios.c into the RTSDC timer driver and arch/i386/core/nap.c Split the headers properly: include/unistd.h - delay functions to be used by the gPXE core and drivers. include/gpxe/timer.h - the fimer subsystem interface to be used by the timer drivers and currticks() to be used by the code gPXE subsystems. include/latch.h - removed include/timer.h - scheduled for removal. Some driver are using currticks, which is only for core subsystems. Signed-off-by: Alexey Zaytsev <alexey.zaytsev@gmail.com>
* | [PXEXT] Add PXENV_FILE_EXEC call to PXE extensions API.Michael Brown2008-03-041-0/+5
|/ | | | | | | | This allows pxelinux to execute arbitrary gPXE commands. This is remarkably unsafe (not least because some of the commands will assume full ownership of memory and do nasty things like edit the e820 map underneath the calling pxelinux), but it does allow access to the "sanboot" command.
* Add DBGLVL_IO to trace all memory-mapped I/O.Michael Brown2008-02-211-7/+40
|
* Guard against corruption of top half of %esp during UNDI ISRMichael Brown2008-02-131-0/+3
|
* Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxeMichael Brown2008-02-111-0/+2
|\
| * undiisr.S: save/restore upper half of %eflagsH. Peter Anvin2008-02-111-0/+2
| | | | | | | | | | | | Since we don't know what the UNDI code does, it is safest to save/restore %eflags even though the lower half of %eflags is automatically saved by the interrupt itself.
| * UNDI ISR: save and restore 32-bit registersH. Peter Anvin2008-02-111-4/+7
| | | | | | | | | | | | | | | | | | | | | | As written, if the if the UNDI ISR call clobbers the upper halves of any of the GPRs (which by convention it is permitted to do, and by paranoia should be expected to do) then nothing in the interrupt handler will recover the state. Additionally, save/restore %fs and %gs out of sheer paranoia - it's a cheap enough operation, and may prevent problems due to poorly written UNDI stacks.
* | UNDI ISR: save and restore 32-bit registersH. Peter Anvin2008-02-111-4/+7
| | | | | | | | | | | | | | | | | | | | | | As written, if the if the UNDI ISR call clobbers the upper halves of any of the GPRs (which by convention it is permitted to do, and by paranoia should be expected to do) then nothing in the interrupt handler will recover the state. Additionally, save/restore %fs and %gs out of sheer paranoia - it's a cheap enough operation, and may prevent problems due to poorly written UNDI stacks.
* | Use internal 16-bit stack for added safety.Michael Brown2008-02-111-0/+4
|/
* Remove the (unused) option to override _prefix_link_addr,Michael Brown2007-12-071-14/+4Star
| | | | | | | | | | | _textdata_link_addr, _load_addr and _max_align in the linker scripts. A bug in some versions of ld causes segfaults if the DEFINED() macro is used in a linker script *and* the -Map option to ld is present. We don't currently need to override any of these values; if we need to do so in future then the solution will probably be to always specify the values on the ld command line, and have the linker script not define them at all.
* Fix compiler warnings that appear only on OpenBSD.Michael Brown2007-12-067-14/+14
|
* Add UUID to DHCP request as option 97 (if available).Michael Brown2007-11-212-0/+11
|
* Added definition of a UUID and uuid_ntoa() (for debugging), andMichael Brown2007-11-212-19/+10Star
| | | | implemented smbios_get_uuid().
* Update SMBIOS internal API to be easier to use, and not to requireMichael Brown2007-11-212-101/+214
| | | | potentially exorbitant amounts of stack space.
* Replace "Etherboot" strings with "gPXE".Michael Brown2007-11-201-4/+4
|
* Allow space for the kernel's real-mode .bss. Previously we weren'tMichael Brown2007-11-042-1/+9
| | | | | allowing any space for this, which makes it surprising that bzImage loading ever worked.
* Add missing attribute(packed) to two structures.Michael Brown2007-10-291-2/+2
|
* Ensure that empty e820 regions are skipped even at the end of theMichael Brown2007-10-101-11/+18
| | | | | | | | | memory map. (We achieve this by setting CF on the last entry if it is zero-length; this avoids the need to look ahead to see at each entry if the *next* entry would be both the last entry and zero-length). This fixes the "0kB base memory" error message upon starting Windows 2003 on a SunFire X2100.
* Redefine bzimage_exec_context::mem_limit to be the highest permissibleMichael Brown2007-09-281-3/+4
| | | | | | | | | | | byte, rather than the number of permissible bytes (i.e. subtract one from the value under the previous definition to get the value under the new definition). This avoids integer overflow on 64-bit kernels, where bzhdr.initrd_addr_max may be 0xffffffffffffffff; under the old behaviour we set mem_limit equal to initrd_addr_max+1, which meant it ended up as zero. Kernel loads would fail with ENOBUFS.
* Switch rm_ss and rm_sp back to being words; it'll make it lessMichael Brown2007-09-251-7/+7
| | | | confusing to read the code.
* Don't use the "rep ss movsb" trick to copy the RM stack to the PMMichael Brown2007-09-251-31/+34
| | | | stack; it breaks vmxassist.
* rm_ss, rm_sp, and pm_esp don't need to be accessed from anywhereMichael Brown2007-09-253-54/+0Star
| | | | outside of librm.S.
* Minor refactoring to eliminate duplication.Michael Brown2007-09-251-49/+39Star
|
* Use full protected mode for access to high memory within prefix, toMichael Brown2007-09-251-169/+237
| | | | | work around limitations in real-mode virtualisation support on Intel VT-capable chips.
* Added more verbose memory-map debugging.Michael Brown2007-09-212-11/+43
| | | | | Added redundant call to get_memmap() in int13_boot() immediately before jumping to boot sector, to assist in debugging.
* Add const attribute to byte-swapping functionsMichael Brown2007-09-211-3/+3
|
* Added missing .kpxe prefix.Michael Brown2007-09-061-0/+1
|
* Auto-assign drive number only if set to 0xff; almost all applicationsMichael Brown2007-08-231-2/+3
| | | | require that we use drive 0x80, so it should probably be the default.
* Separate out arch-independent parts of stdint.hMichael Brown2007-08-171-21/+3Star
|
* Add PXE FILE API.Michael Brown2007-08-041-0/+25
|
* Place multiboot command lines in base memory; Xen won't pick them upMichael Brown2007-08-031-36/+69
| | | | otherwise. :(
* Allow images to hold references to the originating URI.Michael Brown2007-08-022-3/+8
| | | | Some shuffling around of the image management code; this needs tidying up.
* Allowed zero-cost enforced ordering of features in startup bannerMichael Brown2007-08-024-0/+12
| | | | | | list. Added FEATURE() macros to most relevant (non-driver) files.
* remove old minorversion!=4 check (added -march a second time)Holger Lubitz2007-08-021-4/+0Star
|
* remove x86_64 comments from arch specific ConfigHolger Lubitz2007-08-021-5/+0Star
| | | | options are in main makefile now
* Add code for constructing single-file cpio archives on the flyMichael Brown2007-08-021-30/+75
|
* Initrd concatenation now workingMichael Brown2007-08-011-2/+3
|
* Allow loading of multiple initramfs images.Michael Brown2007-07-311-50/+61
|