summaryrefslogtreecommitdiffstats
path: root/sys/boot/ia64
Commit message (Collapse)AuthorAgeFilesLines
...
* Replace misuse of NULL with 0UL.marcel2004-09-241-3/+3
|
* Remove the dependency on the Intel EFI headers in sys/boot/efi. Insteadmarcel2004-09-241-110/+111
| | | | | | | use <machine/efi.h> for the necessary definitions. This makes the EFI code in sys/boot/efi totally unused, except for pure EFI loaders. As such, maintenance and porting (to IA-32) of the EFI code is made as easy as possible.
* Unhook libski and skiload and hook up ski.marcel2004-09-241-1/+1
|
* Post repocopy build fixes.marcel2004-09-243-20/+25
|
* Redefine a PTE as a 64-bit integral type instead of a struct ofmarcel2004-09-232-33/+21
| | | | | bit-fields. Unify the PTE defines accordingly and update all uses.
* Remove useless include of <machine/fpu.h>.marcel2004-09-182-4/+0
|
* Catch up with change to <machine/pte.h>.marcel2004-08-101-9/+8
|
* o Support the REL32LSB relocation. It's in the ELF file from whichmarcel2004-07-201-9/+18
| | | | | | | | | we construct the EFI image. It doesn't seem to actually end up in the EFI image, AFAICT. o Replace .quad, .long and .short with data8, data4 and data2 resp. The former are gnuisms. o Redefine _start_plabel as a data16 with @iplt(_start) as its value. This is the preferred way to create user PLT entries.
* Fix the creation of EFI images that got broken by the import ofmarcel2004-07-202-3/+3
| | | | | | | | | binutils 2.15. The linker now creates a .rela.dyn section for dynamic relocations, while our script created a .rela section. Likewise, we copied the .rela section to the EFI image, but not the .rela.dyn section. The fix is to rename .rela to .rela.dyn in the linker script so that all relocations end up in the same section again. This we copy into the EFI image.
* Remove advertising clause from University of California Regent's license,imp2004-04-053-12/+0
| | | | | | per letter dated July 22, 1999. Approved by: core
* Don't create a mapfile during link. It's not needed for the build.marcel2004-02-133-6/+6
|
* o Don't build with -fpic. It's not needed and inconsistent with howmarcel2004-02-131-5/+0
| | | | | other constributions are compiled. o Remove powerpc specific additions to CFLAGS.
* Tidy up makefiles.ru2004-02-125-181/+47
| | | | Tested by: marcel
* Convert to __FBSDID.obrien2004-01-043-6/+9
|
* Fix the build of libski now that we use the "official" MADT tablemarcel2003-12-092-74/+50
| | | | | | definitions. Those are slightly different than the ones we used before ACPI-CA 20031203 got imported. No structural or functional change.
* Implement PAL_HALT_LIGHT now that the kernel halts the processormarcel2003-11-092-0/+18
| | | | when idle. All we have to do is return.
* Do not strip skiload when installed. The stripped binary does not loadmarcel2003-11-092-0/+2
| | | | in the simulator.
* Use __FBSDID().obrien2003-09-0819-35/+48
| | | | Also some minor style cleanups.
* Don't hardcode unit 0 for the current device if we're loaded from anmarcel2003-08-021-17/+8
| | | | | | | | | | | | EFI file system. When booting from a CD and there's already an EFI system partition on the disk, setting the current device to unit 0 will select the harddisk. This invariably breaks installing FreeBSD when other operating systems have been installed before. We obviously want to do the same when we're booting over the network. Maybe later. Based on a patch (from memory) from: arun
* Fix the ski loader, broken by the gcc upgrade. Update the linkermarcel2003-07-178-262/+230
| | | | | | script to match the one for the EFI loader and rewrite __start() in assembly to have gp defined without getting in the way of the compiler.
* Have the linker script look more like the default linker scriptmarcel2003-07-171-46/+39
| | | | | on ia64. This fixes the breakage caused by the gcc upgrade that resulted in a broken executable.
* pal_stub.s has been repo-copied to pal_stub.S.ru2003-07-022-66/+1
| | | | | Approved by: marcel Repocopied by: joe
* Enable the i386 loader to load and run an amd64 kernel. If this putspeter2003-05-013-9/+9
| | | | | | | | | | | | | | | things over floppy size limits, I can exclude it for release builds or something like that. Most of the changes are to get the load_elf.c file into a seperate elf32_ or elf64_ namespace so that you can have two ELF loaders present at once. Note that for 64 bit kernels, it actually starts up the kernel already in 64 bit mode with paging enabled. This is really easy because we have a known minimum feature set. Of note is that for amd64, we have to pass in the bios int 15 0xe821 memory map because once in long mode, you absolutely cannot make VM86 calls. amd64 does not use 'struct bootinfo' at all. It is a pure loader metadata startup, just like sparc64 and powerpc. Much of the infrastructure to support this was adapted from sparc64.
* Remove `#ifndef lint' left behind after previous change.marcel2003-04-042-2/+0
|
* Use __FBSDID rather than rcsid[].obrien2003-04-0318-70/+37
|
* Speed up debugging in the context of unexpected traps by printingmarcel2003-03-011-5/+6
| | | | | the address of the image base of the loader. Given cr.iip, we can use the symbol table to figure out what function caused the trap.
* Consistently use NOFORTH to control the usage of ficl.obrien2003-02-263-16/+11
|
* Simplify page alignment.marcel2003-02-203-33/+12
|
* Remove special casing for running in the simulator from the kernelmarcel2003-02-0119-53/+1385
| | | | | | | | | | | | | | | | | | | | | | | | | | | | and instead add platform, firmware and EFI stubs to the loader. The net effect of this change is that besides a special console and disk driver, the kernel has no knowledge of the simulator. This has the following advantages: o Simulator support is much harder to break, o It's easier to make use of more feature complete simulators. This would only need a change in the simulator specific loader, o Running SMP kernels within the simulator. Note that ski at this time does not simulate IPIs, so there's no way to start APs. The platform, firmware and EFI stubs describe the following hardware: o 4 CPU Itanium, o 128 MB RAM within the 4GB address space, o 64 MB RAM above the 4GB address space. NOTE: The stubs in the skiloader describe a machine that should in parts be defined by the simulator. Things like processor interrupt block and AP wakeup vector cannot be choosen at random because they require interpretation by the simulator. Currently the simulator is ignorant of this. This change introduces an unofficial SSC call SSC_SAL_SET_VECTORS which is ignored by the simulator. Tested with: ski (version 0.943 for linux)
* SSC calls use break immediate 0x80000. 0x80001 only works formarcel2003-02-012-2/+2
| | | | break.i. Ski is rather broken in this respect.
* Renamed the loader's zipfs to gzipfs. zipfs.c was repo-copied to gzipfs.c.jake2002-12-193-3/+3
|
* 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-103-14/+9
| | | | | | | | | | | | | 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-282-17/+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)
* o Fix a size calculation based on a 8KB page, while under EFImarcel2002-10-242-16/+35
| | | | | | | | | | | | pages are 4KB. o As a second order fix, don't assume we have enough space after the bootinfo block left in a page to hold the memory map. o A third order fix as that we removed the assumption that a bootinfo block fits in a single 8KB page. PR: ia64/39415 submitted by: Espen Skoglund <esk@ira.uka.de>
* At great personal risk, add a __packed and __aligned(x) define thatpeter2002-09-232-2/+2
| | | | | | | | | | expand to __attribute__((packed)) and __attribute__((aligned(x))) respectively. Replace the handful of gcc-ism's that use __attribute__((aligned(16))) etc around the kernel with __aligned(16). There are over 400 __attribute__((packed)) to deal with, that can come later. I just want to use __packed in new code rather than add more gcc-ism's.
* 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
|
* Add boot_serial and boot_multicons variables to set RB_SERIAL andpeter2002-06-203-0/+6
| | | | | 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-196-0/+9
| | | | | | | | | | | - 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-104-1/+4
| | | | | (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),
OpenPOWER on IntegriCloud