summaryrefslogtreecommitdiffstats
path: root/sys/boot/ia64/efi
Commit message (Collapse)AuthorAgeFilesLines
* Renamed the loader's zipfs to gzipfs. zipfs.c was repo-copied to gzipfs.c.jake2002-12-191-1/+1
|
* Add command `hcdp'. This command dumps the DIG64 HCDP table if onemarcel2002-12-181-0/+75
| | | | exists.
* Pass the HCDP table address to the kernel. If no such table exists,marcel2002-12-102-14/+6
| | | | | | | | | | | | | NULL is passed. The address of the HCDP table can be found by iterating over the configuration tables in the EFI system table. To avoid more duplication, a function can be called with the GUID of interest. The function will do the scanning. Use the function in all places where we iterate over the configuration tables in an attempt to find a specific one. Bump the loader version number as the result of this. Approved by: re (blanket)
* Change the startup code to fix a memory leak and to allow us tomarcel2002-12-101-19/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | accept load options (=command line options). The call graph changes from *entry*->efi_main->efi_init, where efi_main is the EFI equivalent of main to *entry*->efi_main->main, where main is what you'd expect. efi_main now is what efi_init was. The prototype of main follows that of C. The first argument is argc and the second is argv. There is no third argument. Allocation of heap pages is now handled by the EFI library and it now deallocates the pages when main() returns or when exit() is called. This allows us to safely return to the boot manager (or EFI shell) without leaks. EFI applications are responsible to free all memory themselves. Handling of the load options is a bit tricky. There are either no load options, load options in ASCII or load options in Unicode. The EFI library will translate the ASCII options to Unicode options as to simplify user code. Since the load options are passed as a single string (if present) and main() accepts argc and argv, the startup code also has to split the string into words and build the argv vector. Here the trickiness starts. When the loader is started from the EFI shell, argv[0] will automaticly load the program name. In all other cases (ie through the boot manager), this is not the case. Unfortunately, there's no trivial way to check. Hence, a set of conditions is checked to determine if we need to fill in argv[0] ourselves or not. This checking is not perfect. There are known cases where it fails to do the right thing. The logic works for most expected cases, though. This includes the case where no options are given. Approved by: re (blanket)
* o Make all GUID variables global to maximize reuse.marcel2002-12-101-21/+32
| | | | | | | o Recognize the HCDP configuration table. o Dump the GUID of tables we don't recognize. Approved by: re (carte blanche)
* Remove _putchar, _puts and _puthex. These functions are unused.marcel2002-12-101-101/+2
| | | | Approved by: re (blanket)
* The boot manager sets the watchdog timer to 5 minutes before invokingmarcel2002-12-081-6/+10
| | | | | | | | | | | | | | | | | | | a boot option. When the timer expires the machine is rebooted. Disable the watchdog timer for 2 reasons: o We're an interactive program. We cannot guarantee that we've booted the kernel in the time available to us. There have been situations where netbooting the right kernel took 2 tries and more time than given. Not to speak of the normal behaviour to have the loader sitting at the prompt while the user is off doing other things (such as figuring out what to type next ;-) o We may not boot a kernel at all. We may exit as the result of the user typing quit (assuming it took less than 5 minutes to type it :-). It is documented that loaders should have disabled the watchdog timer if they return to the boot manager. Not doing so would cause a reboot while in the boot manager. This appears to be harmless, besides of course the actual reboot. Approved by: re (weisse karte)
* Remove a left-over virtual mapping of uncached I/O port space.marcel2002-11-281-0/+3
| | | | | | | | | | | | | Previous kernels unwantingly depended on this mapping, but as of version 1.123 of src/sys/ia64/ia64/machdep.c this dependency has been removed. Consequently, one has to update the kernel before updating the loader. The documented/recommended upgrade will suffice in this case. Due to a visible (from the kernels point of view) change in behaviour, bump the loader version number from 0.3 to 1.0. Approved by: re (carte blanc)
* MFp4:marcel2002-11-241-5/+24
| | | | | | | | | o Show the contents of the AP wakeup descriptor when dumping SAL information. o Increase S/N ratio when listing the itr and dtr. Only show valid mappings and give the total number of TRs. Approved by: re (blanket)
* Disable loader ufs support. It causes the loader to crash on the Itanium2peter2002-07-201-1/+1
| | | | | box that I have. We have no EFI disk drivers yet anyway (maybe that is the problem).
* Fix printf format errorspeter2002-07-201-2/+2
|
* -ffreestanding is the word.obrien2002-05-101-0/+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),
* We must not let install(1) strip loader.efi when installing it, or thepeter2002-04-071-0/+1
| | | | resulting binary will be damaged and no longer work.
* Set BINDIRpeter2002-04-071-0/+1
|
* Add loader bootforth infrastructure and install it.peter2002-04-071-4/+20
|
* Try and tidy up some very loose ends with paths to various libraries etc.peter2002-04-061-3/+15
|
* Do not assume that ${OBJCOPY} variable exists. It was hidden by thepeter2002-04-061-0/+1
| | | | fact that the 'ia64-make' wrapper explicitly set it.
* Fix self hosted loader building. When you use a self configured gcc, itpeter2002-04-062-4/+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.
* Use a relative path to libstand.. /usr/src/lib/libstand may not existpeter2002-04-041-1/+1
| | | | or may have the wrong header files.
* Only install the help file if we can find it. Use ${BASE}.helpmarcel2002-03-311-4/+1
| | | | | in both the condition and for the install. We expect to find the help file in ${.OBJDIR}.
* Pass the physical address of the bootinfo block to the kernel inmarcel2002-03-301-0/+2
| | | | | | | | | 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.
* Add a quick and dirty way to determine where we're loaded from. Wemarcel2002-03-301-8/+28
| | | | | | | | only care if it's network or not at this time. If we're loaded from the network, we set currdev (=loaddev) so that the kernel is loaded from the network as well. In all other cases we initialize to disk. This makes netbooting more convenient and can easily be enhanced to do more elaborate checking.
* The EFI loader has been improved a lot since it was first added.marcel2002-03-301-0/+2
| | | | | | | Most significantly (from an interfacing point of view) is the support for the FPSWA pointer passing. Even though that was added 4 months ago, it's probably not a bad idea to bump the version number to reflect this.
* o Don't include sys/cdefs.hmarcel2002-03-281-1/+0
|
* o Add -L${DESTDIR}${LIBDIR} on the link line for -lstand.marcel2002-03-281-4/+4
| | | | | o Add -j .dynstr to objcopy. This makes .efi binaries work when built with a 3.x based toolchain.
* Boot from efifs first.peter2002-03-191-1/+1
|
* 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.
* s/alpha/${MACHINE_ARCH}/gmarcel2001-10-081-1/+1
|
* Calculate the valid flag for ITRs and DTRs correctly. Also fix a coupledfr2001-09-251-8/+3
| | | | of minor problems and remove some debugging code.
* Add commands to dump the itrs and dtrs.dfr2001-09-241-0/+148
|
* Add commands to dump the configuration tables and the SAL System Table.dfr2001-09-231-4/+116
|
* Add EFI network support.dfr2001-09-223-3/+13
|
* Plug in ELF backend.dfr2001-09-141-1/+1
|
* Add missing entry to memory type name table and adjust field widths.dfr2001-09-081-2/+3
|
* Add a command 'memmap' to print out the EFI memory map.dfr2001-09-081-0/+75
|
* Hook up the native EFI filesystem reader.dfr2001-09-071-1/+2
|
* Set currdev and loaddev variables.dfr2001-09-071-4/+4
|
* Merge linker set relocations with the rest.dfr2001-09-051-0/+1
|
* Enable bootforth.dfr2001-09-041-1/+1
|
* Make sure we copy over the linker set sections to the EFI executable.dfr2001-09-041-0/+1
|
* Make this build again after breakage from previous commits.dfr2001-07-101-6/+6
|
* style(9) and remove a left over Alpha commentobrien2001-06-162-27/+30
|
* style cleanupobrien2001-06-161-22/+23
|
* Nuke old gensetdefs based linker sets with extreme prejudicepeter2001-06-141-11/+2
|
* 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-096-0/+748
OpenPOWER on IntegriCloud