summaryrefslogtreecommitdiffstats
path: root/sys/ia64
Commit message (Collapse)AuthorAgeFilesLines
* o Add records for PCI bus and PCI device errors.marcel2002-05-221-10/+70
| | | | | o Rename mem_platform_id to mem_oem_id. o Minor style fixes.
* Flesh-out ptrace support. This obviously needs more work.marcel2002-05-202-14/+96
|
* Fix a kernel page fault when accessing user memory. We weremarcel2002-05-191-57/+38
| | | | | | | | | | combining too much conditions and as such ended up with the kernel map instead of the corresponding process map. While here, remove code to allow access to the stackgap and restyle slightly to improve readability. This fix specifically fixes the procfs failure we're having when reading the process map (cat /proc/curproc/map)
* It's time to build modules by default.marcel2002-05-191-3/+0
|
* Simplify IA64_CMPXCHG to avoid having braced-groups in expressions.marcel2002-05-191-20/+22
| | | | | | | | | As a minor positive side-effect, code at -O0 is more optimal. As a minor negative side-effect, certain boundary cases yield no better code than non-boundary cases. For example, atomic_set_acq_32(p, 0) does a useless logical OR with value 0. This was previously elimina- ted as part of if/while optimizations. Non-boundary cases yield identical code at -O1 and -O2.
* Add record definition for memory checks.marcel2002-05-191-0/+39
|
* Catch another C++ commentpeter2002-05-191-1/+1
|
* o Remove namespace pollution from param.h:marcel2002-05-1912-27/+41
| | | | | | | | | | | - 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.
* o Move prototypes for restorectx and savectx from cpu.h to pcb.h,marcel2002-05-192-4/+6
| | | | o Remove Alpha specific contents of struct md_coredump.
* Remove option ACPI_DEBUG. It causes compile failures in themarcel2002-05-191-1/+0
| | | | function tracing bits due to __func__ being declared as const.
* Cast dumpsize to long long to match printf format.marcel2002-05-191-1/+2
|
* More s/file system/filesystem/gtrhodes2002-05-161-2/+2
|
* Move MI stuff out of MD param.h files.phk2002-05-141-45/+0
| | | | It can all still be overridden in the MD files should need suddenly arise.
* Remove the unused definitions of ctod() and dotc().phk2002-05-141-4/+0
|
* s/_ALPHA_/_MACHINE_/marcel2002-05-131-1/+1
|
* Remove reference to the "Alpha Calling Standard".marcel2002-05-131-13/+0
|
* These were repo-copied to dump_machdep.c.jake2002-05-131-299/+0
|
* o Rename ia64_count_aps to ia64_count_cpus and reimplement themarcel2002-05-126-56/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function to return the total number of CPUs and not the highest CPU id. o Define mp_maxid based on the minimum of the actual number of CPUs in the system and MAXCPU. o In cpu_mp_add, when the CPU id of the CPU we're trying to add is larger than mp_maxid, don't add the CPU. Formerly this was based on MAXCPU. Don't count CPUs when we add them. We already know how many CPUs exist. o Replace MAXCPU with mp_maxid when used in loops that iterate over the id space. This avoids a couple of useless iterations. o In cpu_mp_unleash, use the number of CPUs to determine if we need to launch the CPUs. o Remove mp_hardware as it's not used anymore. o Move the IPI vector array from mp_machdep.c to sal.c. We use the array as a centralized place to collect vector assignments. Note that we still assign vectors to SMP specific IPIs in non-SMP configurations. Rename the array from mp_ipi_vector to ipi_vector. o Add IPI_MCA_RENDEZ and IPI_MCA_CMCV. These are used by MCA. Note that IPI_MCA_CMCV is not SMP specific. o Initialize the ipi_vector array so that we place the IPIs in sensible priority classes. The classes are relative to where the AP wake-up vector is located to guarantee that it's the highest priority (external) interrupt. Class assignment is as follows: class IPI notes x AP wake-up (normally x=15) x-1 MCA rendezvous x-2 AST, Rendezvous, stop x-3 CMCV, test
* Add missing #endifmarcel2002-05-102-4/+20
|
* Gcc 3.1 varargs support.obrien2002-05-102-15/+21
|
* o Add ar.lc to the pcb.marcel2002-05-072-139/+190
| | | | | | | | | o Create pcb_save as the backend for savectx and cpu_switch. o While here, use explicit bundling for pcb_save and optimize for compactness (~87% density). o Not part of the commit is a backend pcb_restore. restorectx() still jumps halfway into cpu_switch().
* o Add struct mca_guidmarcel2002-05-051-6/+28
| | | | | o Add currently known GUIDs o Slight restyling
* o Include md_var.hmarcel2002-05-051-10/+5
| | | | | | o Remove definition of struct ia64_fdesc o Remove prototype of os_boot_rendez o Use the FDESC_FUNC and FDESC_GP abstractions
* Remove definition of struct ia64_fdesc. It's been moved to md_var.hmarcel2002-05-051-8/+0
|
* o Move definition of struct ia64_fdesc here to remove duplication.marcel2002-05-051-1/+11
| | | | o Add prototype of os_boot_rendez.
* Use region 7 addresses for the slabs in the PV and PT zones so that wedfr2002-05-041-1/+1
| | | | | don't confuse the zone allocater by translating region 5 addresses to region 7 addresses (which is unavoidable for PTEs).
* Make sure we don't index the pm_rid array out of bounds inmarcel2002-05-041-0/+10
| | | | | | | pmap_ensure_rid(). This can happen because the function is called for both user and kernel addresses, while the rid array only has room for user addresses. This bug got exposed by rev 1.58 of ia64/ia64/pmap.c and rev 1.8 of ia64/include/pmap.h.
* The width of segsz_t should be 64, not 32 on ia64.dfr2002-05-021-1/+1
|
* In pmap_pinit0, remove duplicate initialization.marcel2002-05-021-12/+1
|
* PCPU(current_pmap) is initialized in pmap_bootstrap. No need tomarcel2002-05-021-1/+0
| | | | do it again.
* Save the MCA info specific to the AP as part of the AP launch.marcel2002-05-011-2/+9
|
* Make ia64_mca_save_state MP safe. Protect access to the info block,marcel2002-05-011-9/+57
| | | | updating the sysctl tree and clearing the SAL state by a spin lock.
* Connect up kern_envp *before* we use it for getenv() and console probing.peter2002-05-011-7/+14
| | | | | | It is a bit late after that when we have no consoles. :-] Also, fix a comment nit and print a warning about missing metadata.
* Don't export timecounter structures under debug. with sysctl, theyphk2002-04-301-2/+0
| | | | contain no truly interesting data anymore.
* Add ar.lc and ar.ec to the trapframe. These are not saved for syscalls,marcel2002-04-303-345/+922
| | | | | | | | | | | | | | | | | | | | only for exceptions. While adding this to exception_save and exception_restore, it was hard to find a good place to put the instructions. The code sequence was sufficiently arbitrarily ordered that the density was low (roughly 67%). No explicit bundling was used. Thus, I rewrote the functions to optimize for density (close to 80% now), and added explicit bundles and nop instructions. The immediate operand on the nop instruction has been incremented with each instance, to make debugging a bit easier when looking at recurring patterns. Redundant stops have been removed as much as possible. Future optimizations can focus more on performance. A well-placed lfetch can make all the difference here! Also, the FRAME_Fxx defines in frame.h were mostly bogus. FRAME_F10 to FRAME_F15 were copied from FRAME_F9 and still had the same index. We don't use them yet, so nothing was broken.
* Make this work for ski again. Don't call ia64_mca_init() when we'remarcel2002-04-301-11/+10
| | | | in the simulator.
* Include md_var.h. It has the prototype of ia64_running_in_simulator().marcel2002-04-301-0/+1
|
* Remove KTR_EXTEND.marcel2002-04-301-1/+0
|
* Tidy up some loose ends.peter2002-04-293-56/+7
| | | | | | | | | | | | i386/ia64/alpha - catch up to sparc64/ppc: - replace pmap_kernel() with refs to kernel_pmap - change kernel_pmap pointer to (&kernel_pmap_store) (this is a speedup since ld can set these at compile/link time) all platforms (as suggested by jake): - gc unused pmap_reference - gc unused pmap_destroy - gc unused struct pmap.pm_count (we never used pm_count - we track address space sharing at the vmspace)
* Initialize MCA in cpu_startup() so that it's ready before we wake-upmarcel2002-04-261-0/+3
| | | | | the application processors. This allows us to collect unconsumed AP specific error records as part of the wake-up.
* MCA specific code has been moved to a seperate file. It is expectedmarcel2002-04-261-41/+0
| | | | to grow enough to be in the way here.
* Machine Check Architecture (MCA) support code. Error records aremarcel2002-04-261-0/+178
| | | | | | | | | | | | | | collected at boot and made available through sysctl(8). At the moment, the following MIB names are created: hw.mca.count - The number of error records collected. hw.mca.first - The lowest sequence number present. hw.mca.last - The highest sequence number present. hw.mca.<X> - The error record with sequence number <X>. Using sysctl(8) allows us to easily detect and analyze the records, which is very helpful during development of MCA but can also be used in production as a way to collect machine health statistics.
* Machine Check Architecture (MCA) structures and constants.marcel2002-04-261-0/+132
|
* The official name for McKinley is: Itanium 2marcel2002-04-251-1/+1
|
* Don't use the symbol name to lookup the symbol value when we can usemarcel2002-04-251-24/+19
| | | | | | | | | | | | the symbol index defined by the relocation. The elf_lookup() support function is to be used by elf_reloc() when symbol lookups need to be done. The elf_lookup() function operates on the symbol index and will do a symbol name based lookup when such is required, otherwise it uses the symbol index directly. This solves the problem seen on ia64 where the symbol hash table does not contain local symbols and a symbol name based lookup would fail for those symbols. Don't pass the symbol name to elf_reloc(), as it isn't used any more.
* Add ia64_sal_init_state(). This function will initialize the machinemarcel2002-04-221-7/+51
| | | | | | | | | | | check handling. In its current form, it only determines the largest amount of state information it can get from SAL and allocates a region 7 memory block for it. The next steps involve: o get and log any unconsumed (NVM stored) error records across reboots, o register an OS_MCA handler and enable machine checks.
* Add state information types.marcel2002-04-221-1/+9
|
* Fix WAW dependency violation on r17 (line 198) that only exists formarcel2002-04-211-2/+3
| | | | | | the SMP case. While on the subject, remove unnecessary stops. I don't know if this resolves the memory corruption I'm seeing, but it does have the potential. We'll see...
* Implement elf_reloc(). The RT specification says that we can expectmarcel2002-04-211-11/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | both Elf_Rel and Elf_Rela types of relocation, so handle them both even though we only have Rel_Rela ATM. We don't handle 32-bit and big-endian variants yet. Support for that is not trivial enough to implement it without any evidence that we ever need it in the near future. For the FPTR relocations, we currently use the fptr_storage used by _reloc() is locore.s. This is in no way a real solution, but for now provides the service we need to get the basics going. A static recursive function lookup_fdesc() is used to find the address of a function in a way that keeps track of the load module so that we can get the correct GP value if we need to construct an OPD (ie there's no OPD yet for the function. For simplicity, we create an OPD for the IPLT relocations as well and simply fill the user provided function descriptor from the OPD. Since the the official descriptors are unique, this has no bad side effects. Note that we ignore the addend for FPTR relocations, but use the addend for IPLT relocations as an offset to the function address. This commit allows us to load and relocate modules and modules appear to work correctly, although we probably need to make sure that we set GP correctly in all cases when we have inter-module calls. This especially applies to assembly coded functions that have cross module calls.
* Setup the child's return values correctly when forking an IA-32 process.dfr2002-04-211-3/+11
|
OpenPOWER on IntegriCloud