aboutsummaryrefslogtreecommitdiff
path: root/sys/ia64/include/bootinfo.h
Commit message (Collapse)AuthorAgeFilesLines
* Remove ia64.Marcel Moolenaar2014-07-071-55/+0
| | | | | | | | | | | | | | | | | | | | This includes: o All directories named *ia64* o All files named *ia64* o All ia64-specific code guarded by __ia64__ o All ia64-specific makefile logic o Mention of ia64 in comments and documentation This excludes: o Everything under contrib/ o Everything under crypto/ o sys/xen/interface o sys/sys/elf_common.h Discussed at: BSDcan Notes: svn path=/head/; revision=268351
* Use the new arch_loadaddr I/F to align ELF objects to PBVM pageMarcel Moolenaar2011-04-031-1/+5
| | | | | | | | | | | | | | | | | | | | | boundaries. For good measure, align all other objects to cache lines boundaries. Use the new arch_loadseg I/F to keep track of kernel text and data so that we can wire as much of it as is possible. It is the responsibility of the kernel to link critical (read IVT related) code and data at the front of the respective segment so that it's covered by TRs before the kernel has a chance to add more translations. Use a better way of determining whether we're loading a legacy kernel or not. We can't check for the presence of the PBVM page table, because we may have unloaded that kernel and loaded an older (legacy) kernel after that. Simply use the latest load address for it. Notes: svn path=/head/; revision=220313
* Fix switching to physical mode as part of calling into EFI runtimeMarcel Moolenaar2011-03-211-1/+1
| | | | | | | | | | | | | | | | | | | | services or PAL procedures. The new implementation is based on specific functions that are known to be called in certain scenarios only. This in particular fixes the PAL call to obtain information about translation registers. In general, the new implementation does not bank on virtual addresses being direct-mapped and will work when the kernel uses PBVM. When new scenarios need to be supported, new functions are added if the existing functions cannot be changed to handle the new scenario. If a single generic implementation is possible, it will become clear in due time. While here, change bootinfo to a pointer type in anticipation of future development. Notes: svn path=/head/; revision=219841
* MFaltix:Marcel Moolenaar2011-03-161-2/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for Pre-Boot Virtual Memory (PBVM) to the loader. PBVM allows us to link the kernel at a fixed virtual address without having to make any assumptions about the physical memory layout. On the SGI Altix 350 for example, there's no usuable physical memory below 192GB. Also, the PBVM allows us to control better where we're going to physically load the kernel and its modules so that we can make sure we load the kernel in memory that's close to the BSP. The PBVM is managed by a simple page table. The minimum size of the page table is 4KB (EFI page size) and the maximum is currently set to 1MB. A page in the PBVM is 64KB, as that's the maximum alignment one can specify in a linker script. The bottom line is that PBVM is between 64KB and 8GB in size. The loader maps the PBVM page table at a fixed virtual address and using a single translations. The PBVM itself is also mapped using a single translation for a maximum of 32MB. While here, increase the heap in the EFI loader from 512KB to 2MB and set the stage for supporting relocatable modules. Notes: svn path=/head/; revision=219691
| * First cut at having the kernel run within the PBVM:Marcel Moolenaar2011-03-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | o The bootinfo structure is now a virtual pointer. o Replace VM_MAX_ADDRESS with VM_MAXUSER_ADDRESS and redefine VM_MAX_ADDRESS as the maximum address possible (~0UL). o Since we're not using direct-mapped translations, switching to physical addressing is less trivial. Reserve the boot stack for running in physical mode and special-case the EFI call, as we're still on the boot stack. o Region 4 belongs to the kernel now, not process space. Notes: svn path=/projects/altix/; revision=219555
| * Add fields for the PBVM page table address and size.Marcel Moolenaar2011-03-111-2/+3
|/ | | | Notes: svn path=/projects/altix/; revision=219537
* /* -> /*- for copyright notices, minor format tweaks as necessaryWarner Losh2005-01-061-1/+1
| | | | Notes: svn path=/head/; revision=139790
* Whitespace fixes:Marcel Moolenaar2004-11-281-33/+18
| | | | | | | | | | o Remove a bogus comment that relates to alpha. o s/u_int64_t/uint64_t/g o Add bi_spare2 to make the internal padding explicit. o Move BOOTINFO_MAGIC after the field it applies to. Notes: svn path=/head/; revision=138145
* Use one of the bi_spare entries for the DIG64 HCDP table address.Marcel Moolenaar2002-12-081-1/+2
| | | | | | | | | | | | | | | The HCDP table is one (non-proprietary) way for the platform to inform the OS about headless operation. This field would normally hold the address as can be found by scanning the EFI system table, which we also pass to the kernel. The apparent duplication allows us to synthesize a HCDP table in the loader by whatever means we can think of, including relocating the platform table into pre- mapped address space. In short: it gives us more freedom. Approved by: re (blanket) Notes: svn path=/head/; revision=107685
* Use some (now) spare space for passing through a pointer to the FPSWAPeter Wemm2001-11-191-1/+2
| | | | | | | Interface provided by EFI (Floating Point SoftWare Assist). Notes: svn path=/head/; revision=86587
* Remove bootinfo.bi_kernel. It isn't used by the kernel. struct bootinfoPeter Wemm2001-11-191-1/+1
| | | | | | | | should go away on ia64, we should be loader metadata based since that is the only way we can boot (loader, skiload). Notes: svn path=/head/; revision=86586
* * Enable dynamically linked kernel. This involves adding a self-relocatorDoug Rabson2001-09-131-1/+5
| | | | | | | | | | | to locore to process the @fptr relocations in the dynamic executable. * Don't initialise the timer until *after* we install the timecounter to avoid a race between timecounter initialisation and hardclock. * Tidy up bootinfo somewhat including adding sanity checks for when the kernel is loaded without a recognisable bootinfo. Notes: svn path=/head/; revision=83407
* * Make a start on a realistic definition for bootinfo.Doug Rabson2001-09-101-41/+14
| | | | | | | | | * Switch to proc0's stack and backing store before calling ia64_init so that we don't rely on the loader's stack at all. * Change kernel entry point name from locorestart to __start. Notes: svn path=/head/; revision=83301
* This is the first snapshot of the FreeBSD/ia64 kernel. This kernel willDoug Rabson2000-09-291-0/+86
not work on any real hardware (or fully work on any simulator). Much more needs to happen before this is actually functional but its nice to see the FreeBSD copyright message appear in the ia64 simulator. Notes: svn path=/head/; revision=66458