david/ipxe
Archived
1
0
Commit Graph

90 Commits

Author SHA1 Message Date
Alexey Zaytsev
4006d229e5 Introduce the new timer subsystem.
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>
2008-03-02 03:15:07 +03:00
Holger Lubitz
7815474495 Revert "malloc attribute changes"
wasn't meant for my local "master" branch ;)
This reverts commit 373022108b.
2007-08-06 03:36:35 +02:00
Holger Lubitz
373022108b malloc attribute changes 2007-08-02 22:42:45 +02:00
Michael Brown
4ce8d61a5c Import various libgcc functions from syslinux.
Experimentation reveals that gcc ignores -mrtd for the implicit
arithmetic functions (e.g. __udivdi3), but not for the implicit
memcpy() and memset() functions.  Mark the implicit arithmetic
functions with __attribute__((cdecl)) to compensate for this.

(Note: we cannot mark with with __cdecl, because we define __cdecl to
incorporate regparm(0) as well.)
2007-07-30 02:43:43 +01:00
Michael Brown
f62d6486d8 GCC's optimiser seems to screw up if this is left static... 2007-07-30 02:42:32 +01:00
Michael Brown
a6a1052096 Applied a modified version of holger's regparm patches. 2007-07-29 00:17:25 +01:00
Michael Brown
dc52db4920 Removed dead code identified by symcheck 2007-07-17 01:43:19 +01:00
Michael Brown
6d2e4e719c Move uninitialised .data16 variables to .bss16; saves around 2000
bytes of useless zeroes in the final image.
2007-07-16 13:22:12 +01:00
Michael Brown
adf192f566 Shrink cpu.c and render it useful for our purposes. 2007-07-14 19:12:13 +01:00
Michael Brown
e330db3c74 Dead code removal.
Kill off use of etherboot.h outside drivers/net.
2007-07-14 15:42:26 +01:00
Michael Brown
4e14b020a5 Master IRQ should be EOIed first, I think. 2007-07-10 04:33:59 +01:00
Michael Brown
fbda4837b0 Allocate heap at first usage, rather than assuming we can fit it in
below _text.  This should help with the gPXE-on-gPXE-via-PXE case.
2007-07-05 22:30:34 +01:00
Michael Brown
89349d7fad Separated out initialisation functions from startup/shutdown functions. 2007-07-03 23:09:56 +01:00
Michael Brown
cbd4542dc0 Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-03 21:09:26 +01:00
Marty Connor
9b3c4e4d79 Warnings purge: src/arch/i386, src/core/disk.c, ramdisk, autoboot 2007-07-03 16:02:15 -04:00
Michael Brown
fae10a7ca1 We don't actually use the reset functions anywhere, and nothing really
provides them.
2007-07-03 20:34:51 +01:00
Michael Brown
e42eba4af4 Use a common base-memory packet buffer for DHCP construction (as used
by PXE and NBI) and UNDI packets (as used by undinet and UNDI).
2007-07-02 18:33:41 +01:00
Michael Brown
d5451d210c Add ability to resolve relative symbols as well as locate absolute ones. 2007-06-30 22:59:15 +01:00
Michael Brown
8f6a4e8140 Add gdbsym.c object to help with running gdb-to-qemu 2007-06-30 22:43:31 +01:00
Michael Brown
045fb24557 Use internal real-mode stack from non-returnable prefixes 2007-06-28 21:56:14 +01:00
Michael Brown
ff7d0af585 Provide a buffer in base memory for code to fill with generated DHCP data. 2007-03-22 16:18:07 +00:00
Michael Brown
f06059ab97 More assertions 2007-02-01 02:18:22 +00:00
Michael Brown
c650c8c84a Also print out stack pointer (with optional stack dump) 2007-02-01 02:17:59 +00:00
Michael Brown
406b20a64d Assert that division result is correct 2007-01-31 23:58:52 +00:00
Michael Brown
c789e8640b Added __umoddi3 2007-01-31 22:26:14 +00:00
Michael Brown
b3b6b25aeb Handle (64-bit) / (32-bit) = (64-bit), i.e. one step beyond that
provided by the divl instruction.
2007-01-28 19:34:17 +00:00
Michael Brown
73b09ecba6 Use stdio.h instead of vsprintf.h 2007-01-19 01:13:12 +00:00
Michael Brown
bd95927386 Accelerate memcpy() by around 32% on large, dword-aligned copies. 2007-01-18 15:18:02 +00:00
Michael Brown
544fa25928 Rename e{malloc,realloc,free} to u{malloc,realloc,free}, to more obviously
reflect the fact that they allocate and deallocate user memory (i.e.
things reached through a userptr_t).
2007-01-16 08:36:42 +00:00
Michael Brown
77d280968a Obsoleted by arch/i386/image/multiboot.c 2007-01-14 11:45:28 +00:00
Michael Brown
644f3674e6 Obsolete for some time 2007-01-14 02:24:41 +00:00
Michael Brown
ece4ff929e Use _text, rather than assuming _text==0. 2007-01-14 00:03:07 +00:00
Michael Brown
77b7640af4 Fix the only bug (which was to use DBGC() in place of DBG()!) and add 4kB
alignment.
2007-01-12 03:28:03 +00:00
Michael Brown
45ec9c907e First version of an external memory allocator (not tested) 2007-01-12 03:15:29 +00:00
Michael Brown
39a8ed827c Long since obsoleted by arch/i386/scripts/i386.lds 2007-01-12 02:43:10 +00:00
Michael Brown
2e088d9afc Obsoleted by arch/i386/interface/pxe/pxe_call.c 2007-01-12 02:42:14 +00:00
Michael Brown
7ad1c2eaa8 Removed the Etherboot-specific ELF-image code and replaced it with a
generic ELF loader, to be used by the multiboot code.
2007-01-11 14:44:03 +00:00
Michael Brown
c980cdd0aa Move memmap.h out of arch/i386; it no longer contains anything
architecture-dependent and is needed by the ELF code.
2007-01-11 14:08:44 +00:00
Michael Brown
e2dcd05b67 Update buffer-handling code to enable expandable buffers. 2007-01-11 03:50:47 +00:00
Michael Brown
fdc97499bf Add device description fields to struct device. 2007-01-10 15:27:48 +00:00
Michael Brown
b12cd68726 Ripped out everything except the ability to send EOI to the PIC. 2007-01-04 19:36: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
df4b503a8c Added null trap code for debugging. (Must be included by adding
--nulltrap to the make target at the moment.)
2006-06-11 01:48:29 +00:00
Michael Brown
4d81b48504 Has been obsolete for a while. 2006-05-25 00:04:37 +00:00
Michael Brown
1966945a5d Update relocate() to work with get_memmap().
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.
2006-05-25 00:04:13 +00:00
Michael Brown
6631f46999 Updated to REAL_CODE(). 2006-05-24 12:32:57 +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
6b6096d28b Strip down i386 PCI configuration space I/O to the bare minimum. A
typical build will now include 880 bytes of PCI support code, compared to
2327 bytes in Etherboot 5.4.

(There is a slight cost of around 5 extra bytes per access to a
non-constant config space address; this should be an overall win.
Driver-specific accesses will usually be to constant addresses, for
which there is no additional cost.)
2006-05-17 01:12:11 +00:00
Michael Brown
15ee09ed10 Restructured PCI subsystem to fit the new device model.
Generic PCI code now handles 64-bit BARs correctly when setting
"membase"; drivers should need to call pci_bar_start() only if they want
to use BARs other than the first memory or I/O BAR.

Split rarely-used PCI functions out into pciextra.c.

Core PCI code is now 662 bytes (down from 1308 bytes in Etherboot 5.4).
284 bytes of this saving comes from the pci/pciextra split.

Cosmetic changes to lots of drivers (e.g. vendor_id->vendor in order to
match the names used in Linux).
2006-05-16 15:12:06 +00:00