summaryrefslogtreecommitdiffstats
path: root/sys/ia64
Commit message (Collapse)AuthorAgeFilesLines
* Remove code that updates vm->vm_ssize. This duplicates work already performedalc2002-04-161-20/+0
| | | | by vm_map_growstack().
* Fix an "oops!" that turned out to be mostly harmless (but gave a warning).peter2002-04-151-3/+3
| | | | | | | I did this right on the sparc64. Store the direct mapped addresses in the correct variables. Submitted by: jake
* Pass vm_page_t instead of physical addresses to pmap_zero_page[_area]()peter2002-04-151-7/+7
| | | | | | | | | | | and pmap_copy_page(). This gets rid of a couple more physical addresses in upper layers, with the eventual aim of supporting PAE and dealing with the physical addressing mostly within pmap. (We will need either 64 bit physical addresses or page indexes, possibly both depending on the circumstances. Leaving this to pmap itself gives more flexibilitly.) Reviewed by: jake Tested on: i386, ia64 and (I believe) sparc64. (my alpha was hosed)
* Dotting the i-s:marcel2002-04-142-18/+28
| | | | | | | o Use chunk instead of region when we talk about a memory range. Region can be confused with region register and we already call it chunk in machdep.c o Update the twiddle every 16MB
* Allow a kernel to be compiled with both SKI and acpica and stillpeter2002-04-141-2/+14
| | | | work on real hardware. (SKI used to break the sapic probes)
* Add comment that sigreturn() is MPSAFE.alc2002-04-131-0/+2
|
* Initialise ar.cflg, which contains the IA-32 registers cr0 and cr4. Sincedfr2002-04-122-0/+14
| | | | | all IA-32 processes use the same values for cr0 and cr4, we initialise them at system startup.
* Print extra information in printtrap() if the interrupted state was fordfr2002-04-121-7/+12
| | | | | an IA-32 process. Don't sign extend arguments in ia32_syscall - its not normally going to be useful (e.g. pointers need to be zero extended).
* Fix definition of va_start: We don't need to take the address ofmarcel2002-04-121-1/+1
| | | | | va_list. It's a builtin type. gcc 3.1 doesn't care either way, but gcc 3.2 is more picky and doesn't like the former.
* Really fix uniprocessor on IA64. Note to self: do not use variables beforepeter2002-04-121-1/+1
| | | | | they are initialized. I had correctly figured out that the UP problem was the pcpu current_pmap thing, but didn't fix it right last time.
* Initial support for executing IA-32 binaries. This will not compiledfr2002-04-108-0/+4396
| | | | | | | | | without a few patches for the rest of the kernel to allow the image activator to override exec_copyout_strings and setregs. None of the syscall argument translation has been done. Possibly, this translation layer can be shared with any platform that wants to support running ILP32 binaries on an LP64 host (e.g. sparc32 binaries?)
* Save and restore the IA-32 state in cpu_switch(). Probably should only dodfr2002-04-101-2/+46
| | | | this if the thread has been executing IA-32 code.
* Add suhword() and fuhword() for accessing 32-bit values ("half words") indfr2002-04-102-0/+110
| | | | | userland. All these functions should be renamed to be explicit about the size of value being read or written.
* Add exception and syscall support for executing IA-32 binaries.dfr2002-04-101-0/+269
|
* Add ucode values for SIGFPE etc. Copied from i386/include/signal.h.dfr2002-04-101-0/+12
|
* Add fields for saving/restoring the IA-32 state.dfr2002-04-101-0/+8
|
* Add definitions for IA-32 exceptions, interrupts and intercepts.dfr2002-04-101-0/+21
|
* Call ast() from the syscall exit path as well as for full exceptiondfr2002-04-102-2/+84
| | | | restores.
* Initialise PCPU_GET(current_pmap) in pmap_bootstrap - cpu_switch needsdfr2002-04-101-0/+1
| | | | | | to be sure that it is always correct and this was not true for the first call to cpu_switch. When thread0 resumed later, it ended up calling pmap_install with a null pmap, which is bad.
* Remove the hack for segsz_t from <sys/types.h>; use the normalmike2002-04-101-0/+1
| | | | _BSD_FOO_T_ method for defining segsz_t.
* Add manifest constants: _LITTLE_ENDIAN, _BIG_ENDIAN, _PDP_ENDIAN, andmike2002-04-101-6/+15
| | | | | | _BYTE_ORDER. These are far more useful than their non-underscored equivalents as these can be used in restricted namespace environments. Mark the non-underscored variants as deprecated.
* GC various bits and pieces of USERCONFIG from all over the place.phk2002-04-091-12/+0
|
* Define a complete set of accessors for application and control registers.dfr2002-04-091-238/+106
|
* Don't call make_dev from ssccnattach - its far too early to work properly.dfr2002-04-091-0/+8
|
* ia64 depends on ACPICA on actual hardware. It might be worth having apeter2002-04-071-0/+4
| | | | seperate SKI config (like we had SIMOS for alpha).
* Add prototype for bootpc_init when BOOTP is defined.marcel2002-04-061-0/+4
|
* Merge fixes for dbtob() and btodb() from alpha/include/param.h. This stopsdfr2002-04-061-3/+10
| | | | | ffs_snapshot() from using negative numbers for byte offsets in large file systems.
* Fix a braino in the alignment of the segment contents after dumpingmarcel2002-04-062-2/+24
| | | | | | the program headers. As a result of this, dumplo was advanced too much causing the end of the dump and most notably the trailing dump header to be written beyond the end of the the dump medium.
* Change callers of mtx_init() to pass in an appropriate lock type name. Injhb2002-04-042-2/+2
| | | | | | | most cases NULL is passed, but in some cases such as network driver locks (which use the MTX_NETWORK_LOCK macro) and UMA zone locks, a name is used. Tested on: i386, alpha, sparc64
* Back out the previous commit.brian2002-04-041-1/+0
| | | | | | | | | | | In the i386 case, options BOOTP requires options NFS_ROOT as well as options NFSCLIENT. With *both* the NFS options, a bootpc_init() prototype is brought in by nfsclient/nfsdiskless.h. In the ia64 case, it just doesn't work and my change just pushes it further away from working. Suggested to be wrong by: bde
* Moved signal handling and rescheduling from userret() to ast() so thatbde2002-04-041-0/+1
| | | | | | | | | | | they aren't in the usual path of execution for syscalls and traps. The main complication for this is that we have to set flags to control ast() everywhere that changes the signal mask. Avoid locking in userret() in most of the remaining cases. Submitted by: luoqi (first part only, long ago, reorganized by me) Reminded by: dillon
* Pre-declare bootpc_init() so that options BOOTP doesn't break thebrian2002-04-041-0/+1
| | | | build in ia64 and i386 due to -Werror.
* o Kill the MD grow_stack(). Call the MI vm_map_growstack()alc2002-04-043-35/+19
| | | | | | | in its place. o Eliminate the use of useracc() and grow_stack() from sendsig(). Reviewed by: peter
* o Add architecture specific segment types.marcel2002-04-041-0/+11
| | | | o Add architecture specific segment attributes.
* Dike out a highly insecure UCONSOLE option.ru2002-04-032-2/+0
| | | | | | TIOCCONS must be able to VOP_ACCESS() /dev/console to succeed. Obtained from: OpenBSD
* Make the kernel dump header endianness invariant by always dumpingmarcel2002-04-032-24/+22
| | | | | | | | | in dump byte order (=network byte order). Swap blocksize and dumptime to avoid extraneous padding on 64-bit architectures. Use CTASSERT instead of runtime checks to make sure the header is 512 bytes large. Various style(9) fixes. Reviewed by: phk, bde, mike
* o GC dumplomarcel2002-04-031-4/+2
| | | | o Replace the string lit. "ia64" with MACHINE
* Use a twiddle to show that we're busy dumping. The initial codemarcel2002-04-032-10/+14
| | | | | | | | | | | | | emitted the total number of pages it still had to dump prior to dumping a block of up to 16 pages. For a 128MB region this would result in 8M number of printf()s. Barf! The problem in general is that memory typically has one really big region and a number of "scattered" smaller regions. Some may even be just a few pages. The twiddle works best for now, but it doesn't really give a good progress indication for the large regions. Those are the cases where you definitely want good PI to avoid having the user turn into a twiddle :-)
* - Move the MI mutexes sched_lock and Giant from being declared in thejhb2002-04-021-18/+5
| | | | | | | | | | various machdep.c's to being declared in kern_mutex.c. - Add a new function mutex_init() used to perform early initialization needed for mutexes such as setting up thread0's contested lock list and initializing MI mutexes. Change the various MD startup routines to call this function instead of duplicating all the code themselves. Tested on: alpha, i386
* Initial implementation of the ia64 kernel dumper. The dumpermarcel2002-04-022-0/+564
| | | | | | | constructs an ELF image, consisting of the ELF header, for each memory region a program header, followed by the memory contents for each region. It does blocked I/O for the headers as they are typically smaller than DEV_BSIZE.
* o GC totalphysmem and resvmem.marcel2002-04-021-11/+5
| | | | | o Rephrase comment describing that the memory region can contain the kernel.
* Stage-2 commit of the critical*() code. This re-inlines cpu_critical_enter()dillon2002-04-013-23/+74
| | | | | | | | | | | | | | | | | | | | | and cpu_critical_exit() and moves associated critical prototypes into their own header file, <arch>/<arch>/critical.h, which is only included by the three MI source files that need it. Backout and re-apply improperly comitted syntactical cleanups made to files that were still under active development. Backout improperly comitted program structure changes that moved localized declarations to the top of two procedures. Partially re-apply one of the program structure changes to move 'mask' into an intermediate block rather then in three separate sub-blocks to make the code more readable. Re-integrate bug fixes that Jake made to the sparc64 code. Note: In general, developers should not gratuitously move declarations out of sub-blocks. They are where they are for reasons of structure, grouping, readability, compiler-localizability, and to avoid developer-introduced bugs similar to several found in recent years in the VFS and VM code. Reviewed by: jake
* Change the suser() API to take advantage of td_ucred as well as do ajhb2002-04-011-1/+1
| | | | | | | | | | | | general cleanup of the API. The entire API now consists of two functions similar to the pre-KSE API. The suser() function takes a thread pointer as its only argument. The td_ucred member of this thread must be valid so the only valid thread pointers are curthread and a few kernel threads such as thread0. The suser_cred() function takes a pointer to a struct ucred as its first argument and an integer flag as its second argument. The flag is currently only used for the PRISON_ROOT flag. Discussed on: smp@
* Centralize the "bootdev" and "dumpdev" variables. They are still prettyphk2002-03-311-3/+0
| | | | | bogus all things considered, but at least now they don't camouflage as being MD variables.
* Transition to a model where the loader passes the address of themarcel2002-03-303-31/+58
| | | | | | | | | | | | | | | | | | | | bootinfo block in register r8. In locore.s we save the address in the global variable 'pa_bootinfo'. In machdep.c we compare this value against the hardwired address, but don't depend on its validity yet (ie: we still expect the bootinfo block to be at the hardwired address). After a small amount of time, we'll flip the switch and depend on the loader to pass us the address. From that moment on the loader is free to put it anywhere it likes, provided the machine itself likes it as well. Add some verbosity to aid in the transition. We emit a message if the loader didn't pass the address and we also emit a message if there's no bootinfo block at the hardwired address. While in locore.s, reduce the number of redundant serialization instructions. A srlz.i is a proper superset of a srlz.d and thus is a valid replacement. Also slightly reorder the movl instructions to improve bundle density.
* Remove abuse of intr_disable/restore in MI code by moving the loop in ast()jake2002-03-293-6/+68
| | | | | | | | back into the calling MD code. The MD code must ensure no races between checking the astpening flag and returning to usermode. Submitted by: peter (ia64 bits) Tested on: alpha (peter, jeff), i386, ia64 (peter), sparc64
* style(9)obrien2002-03-281-4/+7
| | | | Approved by: jake
* Add a new mtx_init option "MTX_DUPOK" which allows duplicate acquires of locksjeff2002-03-271-1/+1
| | | | | | | | | | | with this flag. Remove the dup_list and dup_ok code from subr_witness. Now we just check for the flag instead of doing string compares. Also, switch the process lock, process group lock, and uma per cpu locks over to this interface. The original mechanism did not work well for uma because per cpu lock names are unique to each zone. Approved by: jhb
* Compromise for critical*()/cpu_critical*() recommit. Cleanup the interruptdillon2002-03-273-12/+64
| | | | | | | | | | | | | | | | | | | disablement assumptions in kern_fork.c by adding another API call, cpu_critical_fork_exit(). Cleanup the td_savecrit field by moving it from MI to MD. Temporarily move cpu_critical*() from <arch>/include/cpufunc.h to <arch>/<arch>/critical.c (stage-2 will clean this up). Implement interrupt deferral for i386 that allows interrupts to remain enabled inside critical sections. This also fixes an IPI interlock bug, and requires uses of icu_lock to be enclosed in a true interrupt disablement. This is the stage-1 commit. Stage-2 will occur after stage-1 has stabilized, and will move cpu_critical*() into its own header file(s) + other things. This commit may break non-i386 architectures in trivial ways. This should be temporary. Reviewed by: core Approved by: core
* o Revert previous commit in asm.h. There's no need to undefinemarcel2002-03-273-3/+0
| | | | | | | __FBSDID first, because it should not be defined at all, o Remove inclusion of cdefs.h in locore.s. Pointed out by: peter
OpenPOWER on IntegriCloud