summaryrefslogtreecommitdiffstats
path: root/sys/boot/efi/libefi
Commit message (Collapse)AuthorAgeFilesLines
* Add boot_serial and boot_multicons variables to set RB_SERIAL andpeter2002-06-201-0/+2
| | | | | RB_MULTIPLE since this seems to be the easiest way to add these flags for non-forth loaders etc.
* o Remove namespace pollution from param.h:marcel2002-05-192-0/+3
| | | | | | | | | | | - Don't include ia64_cpu.h and cpu.h - Guard definitions by _NO_NAMESPACE_POLLUTION - Move definition of KERNBASE to vmparam.h o Move definitions of IA64_RR_{BASE|MASK} to vmparam.h o Move definitions of IA64_PHYS_TO_RR{6|7} to vmparam.h o While here, remove some left-over Alpha references.
* Removed now unused INTERNALSTATICLIB.ru2002-05-131-3/+0
| | | | | INTERNALLIB now implies NOPIC and NOPROFILE. Removed gratuitous NOMAN.
* Back out last commit. I expect our bsd.*.mk gods to remove the need forobrien2002-05-121-0/+3
| | | | | defining so many extra things in addition to INTERNALLIB. We don't like repetitive C code and we shouldn't for make code either.
* NOPIC, NOPROFILE, NOMAN, and INTERNALSTATICLIB are redundant when usingobrien2002-05-111-3/+0
| | | | INTERNALLIB now.
* -ffreestanding is the word.obrien2002-05-101-1/+1
| | | | | (also resort some CFLAGS such that the more "important" value are first so they are easier to see)
* Improve self-relocation:marcel2002-04-211-105/+135
| | | | | | | | | | | | | | | | | | | o We don't expect the PLT relocations to follow the .rela section anymore. We still assume that PLT relocations are long formed, o Document register usage, o Improve ILP, o Fix the FPTR relocation by creating unique OPDs per function. Comparing functions is valid now, o The IPLT relocation naturally handles the addend. Deal with it. We ignore the addend for FPTR relocations for now. It's not at all clear what it means anyway. Fix ABI misinterpretation: o For Elf_Rela relocations, the addend is explicit and should not be loaded from the memory address we're relocating. Only do that for Elf_Rel relocations (ie the short form). o DIR64LSB is not the same as REL64LSB. DIR64LSB applies to a symbol (S+A), whereas REL64LSB applies to the base address (BD+A),
* Allocate sufficient pages to hold the bootinfo block and stopmarcel2002-04-191-7/+10
| | | | hardwiring the location.
* Finally fix loader completely for IA64. efifs_stat() wasn't settingpeter2002-04-111-0/+2
| | | | | | the S_IFREG bit for regular files. This caused the path search code to skip it when it finally did find the kernel (after the common/module.c buffer overrun bug was fixed)
* Fix self hosted loader building. When you use a self configured gcc, itpeter2002-04-061-3/+4
| | | | | | | | | | | | | detects and uses the gas section merge support. As a result, a whole bunch of new sections arrive, including .rodata.str1.8, which was not included in our custom ldscript.ia64. The result was a loader binary that EFI rejected. While here, collect the loader shell commands linker set and include it in the data area rather than having its own section. /boot/loader.efi was the last holdout for having a 100% self built ia64 system.
* Pass the physical address of the bootinfo block to the kernel inmarcel2002-03-301-1/+1
| | | | | | | | | register r8. We continue to write the bootinfo block at the same hardwired address, because the kernel still expects it there. It is expected that future kernels use register r8 to get to the bootinfo block and don't depend on the hardwired address anymore. Bump the loader version once again due to the interface change.
* Fix the initialization of the protocol:marcel2002-03-301-2/+68
| | | | | | | | | | | | | | | | | o Query the state field of the protocol mode to determine whether we need to start and/or initialize the protocol. When we're loaded across the network, the protocol has already been started and is already initialized. When no networking has happened yet, we have to start and initialize the protocol ourselves. o After initialization, we have to set the receive filters. Not doing this results in a deaf interface. We set the unicast and broadcast filters. Multicast may not be supported. This specific change fixes the problem we had that we could not netboot if the loader was started from the EFI shell. o To help future debugging, add a function that dumps the current mode of the interface. It's conditional on EFINET_DEBUG. o To help in runtime problems, emit a diagnostic message when we could not initialize the protocol properly.
* Don't blindly dereference f->f_devdata as if it's always a pointer tomarcel2002-03-301-1/+6
| | | | | | | | | | | an efi_devdesc structure. When we're netbooting, f->f_devdata holds the address of the network socket variable. Dereferencing this caused some very unpredictable behaviour, including proper functioning. So, as a sanity check, we first make sure f->f_dev points to our own devsw. If not, the open will fail before we use f->f_devdata. This solves the netboot hangs I invariably got whenever I used the latest toolchain to compile the EFI loader.
* o Make efinet_put a blocking call by waiting for the protocolmarcel2002-03-291-12/+22
| | | | | | | | | | | | | | | layer to signal transmission of the packet. This resolves the problem I'm seeing that an immediate call to net->Receive after calling net->Transmit returns EFI_DEVICE_ERROR. This condition seems to be sufficiently persistent that BOOTP and RARP fail. o While here, unify all functions to have 'nif' defined. Some have it as arguments. The others now have them as locals. We now always get the protocol interface by using the 'nif' var. The current status of netbooting is that even though we now reliably have BOOTP working (again), opening a file (ie loading a kernel) across the network causes the loader to hang. I'm working on that now.
* o Don't include sys/cdefs.hmarcel2002-03-281-1/+0
|
* Add EFI write support to loaderpeter2002-03-191-2/+30
|
* Lookup the EFI_FPSWA driver and pass the interface pointer through to thepeter2001-11-194-0/+67
| | | | | kernel before we call ExitBootServices(). I've typed the definitions in efifpswa.h from the Intel FPSWA manual (urk).
* Remove bootinfo.bi_kernel. It isn't used by the kernel. struct bootinfopeter2001-11-191-6/+0
| | | | | should go away on ia64, we should be loader metadata based since that is the only way we can boot (loader, skiload).
* Set RB_MULTIPLE (multiple console support) if the kernel is bootedmarcel2001-10-291-0/+3
| | | | with the -D flag.
* Call ExitBootServices and disable interrupts before we start hackingdfr2001-10-251-11/+12
| | | | the VM registers. This ought to make things slightly more reliable here.
* Add the two sections used for PLT entries to the text and sdata sectionsdfr2001-10-251-0/+2
| | | | | respectively. This makes IPLTLSB relocations work properly (these are generated for weak symbols, particularly for _longjmp).
* Try to get the self-relocator to work with IPLTLSB relocations. Doesn'tdfr2001-10-242-6/+40
| | | | work right though - I can't figure out why.
* Fix typo in comment.dfr2001-10-111-1/+1
|
* Return the mapkey which EFI gave us when we read the memory map - we needdfr2001-09-242-2/+5
| | | | it to call ExitBootServices.
* Tidy up a little - don't try to print anything or enable interrupts afterdfr2001-09-241-51/+24
| | | | | we start changing translation registers. Also, call ExitBootServices before we jump into the kernel.
* Pick up pal.s from the kernel sources.dfr2001-09-241-1/+3
|
* * Flesh out elf_exec and bootinfo.dfr2001-09-225-39/+676
| | | | * Add EFI network support.
* Add getsecs() for the libstand network code.dfr2001-09-221-0/+6
|
* Add a twiddle meter when reading from files. Gives me something to lookdfr2001-09-221-6/+17
| | | | at when a kernel is loading from a floppy.
* Add ELF backend to the build.dfr2001-09-142-8/+2
|
* Make this do the right thing (mostly). We should still reserve the pagesdfr2001-09-141-5/+13
| | | | that the kernel loads into using the EFI AllocatePages call.
* Add a libstand filesystem for accessing EFI native filesystems.dfr2001-09-073-3/+349
|
* Reformat.dfr2001-09-071-139/+140
|
* Merge linker set relocations with the rest.dfr2001-09-051-0/+1
|
* This Intel derived file uses C++ style comments.obrien2001-06-161-33/+37
| | | | | | | | (I'll be we know which compiler and platform they developed this on...) Minimally change them to C89 comments to make GCC happy. (this is kinda funny as the file has piece derived from FreeBDS 3.2) Also fix FreeBSD id style.
* Fix FreeBSD id style.obrien2001-06-162-4/+10
|
* style(9)obrien2001-06-161-23/+18
|
* style(9) + fix FreeBSD id's.obrien2001-06-164-25/+30
|
* Move the first section up one page. The firmware bogusly uses the firstdfr2001-06-101-0/+1
| | | | | | page of the image to load section headers and if we let the text section start at zero, it corrupts the section table when its loaded. With this change, the loader gets as far as the 'ok' prompt.
* Remove a 'return' statement which I put in while I was trying to debugdfr2001-06-101-1/+0
| | | | the startup code.
* First approximation of an ia64 EFI loader. Not functional.dfr2001-06-0913-0/+1453
OpenPOWER on IntegriCloud