summaryrefslogtreecommitdiff
path: root/i386/include
AgeCommit message (Collapse)Author
2009-11-28Add XMM FPU registers save/restore support.Samuel Thibault
* i386/include/mach/i386/fp_reg.h (struct i386_fp_regs): Invert array indices. (struct i386_xfp_save): New structure. (FP_387X): New macro. * i386/i386/thread.h (struct i386_fpsave_state): Add xfp_save_state member, keep existing fp_save_state and fp_regs members in an unnamed union member. Move fp_valid member to the end of the structure. * i386/i386/fpu.h (fxsave, fxrstor): New macros. (fpu_save_context): Use fxsave() when FPU is FXSR-capable. * i386/i386/fpu.c: Include <i386/locore.h> (mxcsr_feature_mask): New variable. (fp_save, fp_load): Add declaration. (init_fpu): Add FXSR-capable FPU detection. (fpu_module_init): Request 16-byte alignment to zinit() for i386_fpsave_state structures. (twd_i387_to_fxsr, twd_fxsr_to_i387): New functions. (fpu_set_state): Convert FPU state when FPU is FXSR-capable. (fpu_get_state): Convert FPU state when FPU is FXSR-capable. (fpexterrflt): Pass to i386_exception either xfp_save_state or fp_save_state according to FPU type. (fpastintr): Likewise. (fp_load): Likewise. Use fxrstor() when FPU is FXSR-capable. (fp_save): Use fxsave() when FPU is FXSR-capable. (fp_state_alloc): Add FXSR-aware initialization.
2009-11-22Remove (vm_offset_t) casts from constantsSamuel Thibault
* i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS, VM_MAX_KERNEL_ADDRESS, LINEAR_MIN_KERNEL_ADDRESS, LINEAR_MAX_KERNEL_ADDRESS): Remove (vm_offset_t) cast, use UL suffix instead. * i386/include/mach/i386/vm_param.h (VM_MIN_ADDRESS, VM_MAX_ADDRESS): Remove (vm_offset_t) cast, use UL suffix instead.
2009-10-26Fix VM_MAX_ADDRESS defaultSamuel Thibault
* i386/include/mach/i386/vm_param.h (VM_MAX_ADDRESS): Set back to 0xc0000000 by default.
2009-10-26Make tuning VM_MAX_ADDRESS trivialSamuel Thibault
* i386/i386/vm_param.h (LINEAR_MIN_KERNEL_ADDRESS): Set to VM_MAX_ADDRESS instead of hardcoding to 0xc0000000. (VM_MAX_KERNEL_ADDRESS): Set to LINEAR_MAX_KERNEL_ADDRESS - LINEAR_MIN_KERNEL_ADDRESS instead of hardcoding to 0x40000000. * i386/include/mach/i386/vm_param.h: Document how it may be tuned.
2009-06-182008-08-03 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
* i386/i386/lock.h (_simple_lock_xchg_, bit_lock, bit_unlock): Add memory clobbers. * i386/include/mach/i386/cthreads.h (spin_unlock, spin_try_lock): Add memory clobbers.
2009-06-182007-05-07 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
[bug #15295 --- ``Mach lets processes write to I/O ports''] * i386/Makefrag.am (libkernel_a_SOURCES): Add `i386/i386/io_perm.c', `i386/i386/io_perm.h', `i386/i386/machine_task.c', `i386/i386/task.h' and remove `i386/i386/io_port.h', `i386/i386/iopb.c', `i386/i386/iopb.h'. * i386/i386/io_port.h: Remove file. * i386/i386at/kd.c: Don't include <i386/io_port.h>. (vga_port_list, kd_io_device, kd_io_map_open, kd_io_map_close): Don't define and don't use anymore. * include/stddef.h: New file. * i386/i386/io_perm.c: Include <string.h>, <device/device_emul.h>, <ipc/ipc_space.h> and don't include <oskit/ds_oskit.h>. (io_perm_device_emulation_ops): New variable. (dev_open_alloc, setup_no_senders): Remove declarations. (convert_io_perm_to_port, convert_port_to_io_perm, io_perm_deallocate): Rewrite. (no_senders): New function. (i386_io_perm_create, i386_io_perm_modify): Rewrite partially, to adapt to the GNU Mach environment. * i386/i386/io_perm.h: Include <device/dev_hdr.h> and <ipc/ipc_types.h>. (io_perm, io_perm_t): New structure and accompanying type definition. (IO_PERM_NULL): Define. * i386/i386/locore.S (ktss): Move variable to... * i386/i386/ktss.c: ... here, make it a ``struct task_tss''. (ktss_init): Initialize the `task_tss' structure and the i/o permission bit map. * i386/i386/ktss.h: Adapt to that. * i386/i386/machine_task.c (machine_task_module_init): Adapt the `zinit' call to the GNU Mach environment. * i386/i386/mp_desc.c: Include <machine/ktss.h>. * i386/i386/tss.h: Include <machine/io_perm.h>. (task_tss): New structure, equivalent to the OSKit-Mach one. * i386/include/mach/i386/mach_i386.defs: Don't include <device/device_types.defs>. (device_list_t): Remove type. * i386/include/mach/i386/mach_i386_types.h (device_list_t): Remove type definition. 2007-05-07 Marcus Brinkmann <marcus@gnu.org> [bug #15295 --- ``Mach lets processes write to I/O ports''] * i386/i386/iopb.h, i386/i386/iopb.c: Obsolete files removed. * i386/i386/pcb.c (switch_context): Update the I/O permission bitmap from stack_handoff() here (not only in stack_handoff()). * i386/i386/machine_task.c (machine_task_module_init): Set ZONE_COLLECTABLE and ZONE_EXHAUSTIBLE flags for the iopb zone. Requested by Roland McGrath <roland@frob.com>. * i386/i386/io_perm.h: New file. * i386/i386/io_perm.c: New file. * i386/i386/machine_task.c: New file. * i386/i386/mp_desc.h: (struct mp_desc_table): Change type of ktss to struct task_tss. (mp_ktss): Likewise for array of pointers to the struct. * i386/i386/mp_desc.c: Include `machine/tss.h' and `machine/io_perm.h'. (mp_ktss): Change type to array of struct task_tss. (mp_desc_init): Cast pointer to x86_tss into pointer to task_tss, and use size of struct task_tss instead size of struct x86_tss. Initialize the task_tss structure. * i386/i386/pcb.c: Include `stddef.h' and `machine/tss.h'. (iopb_create, iopb_destroy): Prototypes removed. (curr_ktss): Cast pointer to base_tss to pointer to struct task_tss. (switch_ktss): Always use kernel TSS. (update_ktss_iopb): New function. (stack_handoff): Call update_ktss_iopb. (pcb_module_init): Do not call iopb_init. (pcb_terminate): Do not call iopb_destroy. (thread_setstatus): Remove local variable tss. (thread_getstatus): Rewrite i386_ISA_PORT_MAP_STATE case handler. * i386/i386/task.h: New file. * i386/i386/thread.h: Do not include `i386/iopb.h'. (struct i386_machine_state): Remove member io_tss. * i386/include/mach/i386/mach_i386.defs [KERNEL_SERVER]: Include `machine/io_perm.h'. Define intran, outtran and destructor. (io_port_t): New type. (io_perm_t): Likewise. (i386_io_port_add): Interface removed. (i386_io_port_remove): Likewise. (i386_io_port_list): Likewise. (i386_io_perm_create): New interface. (i386_io_perm_modify): Likewise. * i386/include/mach/i386/mach_i386_types.h [MACH_KERNEL]: Include `i386/io_perm.h'. [!MACH_KERNEL]: Define types io_port_t and io_perm_t. * kern/task.c (task_init): Call machine_task_module_init. (task_create): Call machine_task_init. (task_deallocate): Call machine_task_terminate. (task_collect_scan): Call machine_task_collect. * task.h: Include `machine/task.h'. (struct task): Add member machine.
2009-06-182007-04-25 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
[task #5878 --- ``Backport code from GNU Mach's trunk to gnumach-1-branch: i386_set_gdt, i386_get_gdt''] * i386/include/mach/i386/mach_i386.defs (i386_set_gdt, i386_get_gdt): Shift by two to maintain rpc id compatibility with OSKit-Mach.
2009-06-182006-12-03 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
[patch #5017 --- ``Remove obsolete IPC interfaces.''] * DEVELOPMENT: Document the removal. * configfrag.ac (MACH_IPC_COMPAT): Don't define. 2006-12-03 Leonardo Lopes Pereira <leonardolopespereira@gmail.com> [patch #5017 --- ``Remove obsolete IPC interfaces.''] * kern/act.c [MIGRATING_THREADS]: Don't include <mach_ipc_compat.h>. * kern/act.h: Likewise. * i386/include/mach/i386/machine_types.defs: Adapt all users of MACH_IPC_COMPAT as if it were always defined to `0'. * include/mach/mach.defs: Likewise. * include/mach/mach_param.h: Likewise. * include/mach/mach_traps.h: Likewise. * include/mach/message.h: Likewise. * include/mach/mig_errors.h: Likewise. * include/mach/notify.h: Likewise. * include/mach/port.h: Likewise. * include/mach/std_types.defs: Likewise. * include/mach/syscall_sw.h: Likewise. * include/mach/task_special_ports.h: Likewise. * include/mach/thread_special_ports.h: Likewise. * ipc/ipc_kmsg.c: Likewise. * ipc/ipc_kmsg.h: Likewise. * ipc/ipc_marequest.c: Likewise. * ipc/ipc_notify.c: Likewise. * ipc/ipc_notify.h: Likewise. * ipc/ipc_object.c: Likewise. * ipc/ipc_object.h: Likewise. * ipc/ipc_port.c: Likewise. * ipc/ipc_port.h: Likewise. * ipc/ipc_right.c: Likewise. * ipc/ipc_right.h: Likewise. * ipc/ipc_space.c: Likewise. * ipc/ipc_space.h: Likewise. * ipc/mach_debug.c: Likewise. * ipc/mach_msg.c: Likewise * ipc/mach_msg.h: Likewise. * ipc/mach_port.c: Likewise. * kern/act.c: Likewise. * kern/act.h: Likewise. * kern/ipc_host.c: Likewise. * kern/ipc_tt.c: Likewise. * kern/syscall_sw.c: Likewise. * kern/thread.h: Likewise.
2009-06-182006-11-20 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
Asm tidy. * i386/i386/fpe_linkage.c (disable_fpe): Gather dependent asm statements, add `ax' clobber. (fpe_exception_fixup): Drop bogus cast from input parameter of lcall asm statement. * i386/i386/pio.h (inw, outw): Drop 0x66 prefix an just use the w instruction variant. * i386/i386/proc_reg.h: (get_eflags, get_tr, get_ldt): Drop useless "volatile" from asm statement. (get_esp): Use direct asm register specification. * i386/include/mach/i386/cthreads.h (cthread_sp): Likewise. * i386/intel/pmap.c (pmap_unmap_page_zero): Fix asm clobber into `eax'. De4x5 probe fixup. * linux/src/drivers/net/de4x5.c (pci_probe): Make probe loop stop on any error, not only device not found.
2009-06-182006-11-05 Barry deFreese <bddebian@comcast.net>Samuel Thibault
[task #5878 --- ``Backport code from GNU Mach's trunk to gnumach-1-branch: i386_set_gdt, i386_get_gdt''] * i386/include/mach/i386/mach_i386.defs (i386_set_gdt, i386_get_gdt): New routines. * i386/i386/user_ldt.c (i386_set_gdt, i386_get_gdt): New functions. * i386/i386/gdt.h (USER_GDT, USER_GDT_SLOTS): New macros. (GDTSZ): Compute it from USER_GDT and USER_GDT_SLOTS. * i386/i386/thread.h: Include `gdt.h'. (struct i386_machine_state): New member `user_gdt'. * i386/i386/pcb.c (switch_ktss): Copy those slots into the GDT. * linux/dev/include/linux/head.h: New file.
2009-06-182006-10-15 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/include/Makefile.in: Remove unused file. Thanks to Guillem Jover for spotting this.
2009-06-182006-10-13 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Makerules.in (ASFLAGS): Don't define `ASSEMBLER'. * i386/i386/cpu_number.h: Check for `__ASSEMBLER__' instead of `ASSEMBLER'. * i386/i386/debug.h: Likewise. * i386/i386/ipl.h: Likewise. * i386/i386/ldt.h: Likewise. * i386/i386/proc_reg.h: Likewise. * i386/i386/seg.h: Likewise. * i386/i386/trap.h: Likewise. * i386/include/mach/i386/kern_return.h: Likewise. * i386/include/mach/i386/vm_types.h: Likewise. * i386/intel/pmap.h: Likewise. * include/mach/boolean.h: Likewise. * include/mach/boot.h: Likewise. * include/mach/error.h: Likewise. * kern/syscall_emulation.h: Likewise.
2009-06-182005-05-24 Alfred M. Szmidt <ams@gnu.org>Alfred M. Szmidt
* i386/include/mach/i386/asm.h (END): New macro. * i386/include/mach/i386/syscall_sw.h (kernel_trap): Call END.
2009-06-182004-11-22 Guillem Jover <guillem@hadrons.org>Alfred M. Szmidt
* i386/i386/locore.S (discover_x86_cpu_type): Enable function. Enable ID flag for Cyrix CPU. Use %ebp to save the stack pointer. Restore EFLAGS just after its last usage. * i386/i386at/model_dep.c (c_boot_entry): Enable use of discover_x86_cpu_type. Remove hardcoded cpu_type assignment. * i386/include/mach/i386/eflags.h (EFL_VI, EFL_VIP): New bits. (EFL_AC, EFL_ID): Bits finally added.
2001-04-052001-04-04 Roland McGrath <roland@frob.com>Roland McGrath
* ddb/db_access.h: Fix obsolescent #else/#endif syntax. * ddb/db_aout.c: Likewise. * ddb/db_break.c: Likewise. * ddb/db_break.h: Likewise. * ddb/db_command.c: Likewise. * ddb/db_command.h: Likewise. * ddb/db_cond.c: Likewise. * ddb/db_examine.c: Likewise. * ddb/db_expr.c: Likewise. * ddb/db_ext_symtab.c: Likewise. * ddb/db_input.c: Likewise. * ddb/db_lex.c: Likewise. * ddb/db_macro.c: Likewise. * ddb/db_mp.c: Likewise. * ddb/db_output.c: Likewise. * ddb/db_print.c: Likewise. * ddb/db_run.c: Likewise. * ddb/db_sym.c: Likewise. * ddb/db_task_thread.c: Likewise. * ddb/db_task_thread.h: Likewise. * ddb/db_trap.c: Likewise. * ddb/db_variables.c: Likewise. * ddb/db_watch.c: Likewise. * ddb/db_watch.h: Likewise. * ddb/db_write_cmd.c: Likewise. * device/dev_pager.c: Likewise. * device/device_port.h: Likewise. * device/device_types_kernel.h: Likewise. * device/ds_routines.h: Likewise. * device/errno.h: Likewise. * device/if_ether.h: Likewise. * device/if_hdr.h: Likewise. * device/io_req.h: Likewise. * device/net_io.c: Likewise. * device/net_io.h: Likewise. * i386/i386/ast_check.c: Likewise. * i386/i386/cswitch.S: Likewise. * i386/i386/db_disasm.c: Likewise. * i386/i386/db_interface.c: Likewise. * i386/i386/db_trace.c: Likewise. * i386/i386/debug.h: Likewise. * i386/i386/debug_i386.c: Likewise. * i386/i386/debug_trace.S: Likewise. * i386/i386/eflags.h: Likewise. * i386/i386/gdt.h: Likewise. * i386/i386/hardclock.c: Likewise. * i386/i386/idt-gen.h: Likewise. * i386/i386/ipl.h: Likewise. * i386/i386/ktss.h: Likewise. * i386/i386/kttd_interface.c: Likewise. * i386/i386/ldt.h: Likewise. * i386/i386/lock.h: Likewise. * i386/i386/locore.S: Likewise. * i386/i386/mp_desc.h: Likewise. * i386/i386/pic.c: Likewise. * i386/i386/pic.h: Likewise. * i386/i386/pio.h: Likewise. * i386/i386/pit.h: Likewise. * i386/i386/seg.h: Likewise. * i386/i386/thread.h: Likewise. * i386/i386/trap.c: Likewise. * i386/i386/trap.h: Likewise. * i386/i386/vm_param.h: Likewise. * i386/i386/vm_tuning.h: Likewise. * i386/i386at/autoconf.c: Likewise. * i386/i386at/blit.c: Likewise. * i386/i386at/conf.c: Likewise. * i386/i386at/fd.c: Likewise. * i386/i386at/idt.h: Likewise. * i386/i386at/immc.c: Likewise. * i386/i386at/kd.c: Likewise. * i386/i386at/kd_event.c: Likewise. * i386/i386at/kd_mouse.c: Likewise. * i386/i386at/model_dep.c: Likewise. * i386/i386at/rtc.c: Likewise. * i386/include/mach/i386/asm.h: Likewise. * i386/include/mach/i386/eflags.h: Likewise. * i386/include/mach/i386/mach_i386.defs: Likewise. * i386/include/mach/i386/multiboot.h: Likewise. * i386/include/mach/i386/trap.h: Likewise. * i386/include/mach/i386/vm_types.h: Likewise. * i386/include/mach/sa/stdarg.h: Likewise. * i386/intel/pmap.c: Likewise. * i386/intel/pmap.h: Likewise. * include/alloca.h: Likewise. * include/device/device_types.defs: Likewise. * include/device/device_types.h: Likewise. * include/device/disk_status.h: Likewise. * include/device/net_status.h: Likewise. * include/mach/mach.defs: Likewise. * include/mach/memory_object.defs: Likewise. * include/mach/std_types.defs: Likewise. * include/mach_debug/hash_info.h: Likewise. * include/mach_debug/ipc_info.h: Likewise. * include/mach_debug/mach_debug.defs: Likewise. * include/mach_debug/mach_debug_types.defs: Likewise. * include/mach_debug/mach_debug_types.h: Likewise. * include/mach_debug/vm_info.h: Likewise. * include/mach_debug/zone_info.h: Likewise. * include/sys/ioctl.h: Likewise. * include/sys/time.h: Likewise. * ipc/ipc_entry.h: Likewise. * ipc/ipc_hash.h: Likewise. * ipc/ipc_init.c: Likewise. * ipc/ipc_kmsg.c: Likewise. * ipc/ipc_kmsg.h: Likewise. * ipc/ipc_marequest.c: Likewise. * ipc/ipc_marequest.h: Likewise. * ipc/ipc_mqueue.c: Likewise. * ipc/ipc_mqueue.h: Likewise. * ipc/ipc_notify.c: Likewise. * ipc/ipc_notify.h: Likewise. * ipc/ipc_object.c: Likewise. * ipc/ipc_object.h: Likewise. * ipc/ipc_port.c: Likewise. * ipc/ipc_port.h: Likewise. * ipc/ipc_pset.c: Likewise. * ipc/ipc_pset.h: Likewise. * ipc/ipc_right.c: Likewise. * ipc/ipc_right.h: Likewise. * ipc/ipc_space.c: Likewise. * ipc/ipc_space.h: Likewise. * ipc/mach_debug.c: Likewise. * ipc/mach_msg.c: Likewise. * ipc/mach_msg.h: Likewise. * ipc/mach_port.c: Likewise. * kern/act.c: Likewise. * kern/assert.h: Likewise. * kern/ast.c: Likewise. * kern/ast.h: Likewise. * kern/bootstrap.c: Likewise. * kern/counters.c: Likewise. * kern/counters.h: Likewise. * kern/debug.h: Likewise. * kern/exception.c: Likewise. * kern/host.h: Likewise. * kern/ipc_host.c: Likewise. * kern/ipc_host.h: Likewise. * kern/ipc_kobject.c: Likewise. * kern/ipc_mig.c: Likewise. * kern/ipc_tt.c: Likewise. * kern/ipc_tt.h: Likewise. * kern/kalloc.h: Likewise. * kern/lock_mon.c: Likewise. * kern/mach_clock.c: Likewise. * kern/mach_factor.c: Likewise. * kern/mach_param.h: Likewise. * kern/machine.c: Likewise. * kern/processor.c: Likewise. * kern/profile.c: Likewise. * kern/queue.h: Likewise. * kern/sched.h: Likewise. * kern/startup.c: Likewise. * kern/syscall_emulation.h: Likewise. * kern/syscall_subr.c: Likewise. * kern/syscall_subr.h: Likewise. * kern/syscall_sw.c: Likewise. * kern/syscall_sw.h: Likewise. * kern/task.h: Likewise. * kern/thread_swap.h: Likewise. * kern/time_out.h: Likewise. * kern/time_stamp.c: Likewise. * kern/time_stamp.h: Likewise. * kern/timer.c: Likewise. * kern/timer.h: Likewise. * kern/xpr.c: Likewise. * kern/xpr.h: Likewise. * kern/zalloc.c: Likewise. * kern/zalloc.h: Likewise. * linux/dev/drivers/block/ide.c: Likewise. * linux/dev/include/linux/blk.h: Likewise. * linux/src/include/linux/cdrom.h: Likewise. * linux/src/include/linux/md.h: Likewise. * util/cpu.h: Likewise. * vm/memory_object.c: Likewise. * vm/memory_object.h: Likewise. * vm/pmap.h: Likewise. * vm/vm_debug.c: Likewise. * vm/vm_external.h: Likewise. * vm/vm_fault.c: Likewise. * vm/vm_fault.h: Likewise. * vm/vm_kern.h: Likewise. * vm/vm_map.c: Likewise. * vm/vm_map.h: Likewise. * vm/vm_object.h: Likewise. * vm/vm_pageout.c: Likewise. * vm/vm_pageout.h: Likewise. * vm/vm_user.h: Likewise.
2000-10-292000-10-29 Roland McGrath <roland@frob.com>Roland McGrath
Remove numerous dead header files. Suggested by Igor Khavkine <i_khavki@alcor.concordia.ca>. * i386/include/mach/i386/bios.h: Dead file removed. * i386/include/mach/i386/code16.h: Dead file removed. * i386/include/mach/i386/debug_reg.h: Dead file removed. * i386/include/mach/i386/dpmi.h: Dead file removed. * i386/include/mach/i386/far_ptr.h: Dead file removed. * i386/include/mach/i386/paging.h: Dead file removed. * i386/include/mach/i386/pio.h: Dead file removed. * i386/include/mach/i386/pmode.h: Dead file removed. * i386/include/mach/i386/proc_reg.h: Dead file removed. * i386/include/mach/i386/seg.h: Dead file removed. * i386/include/mach/i386/time_stamp.h: Dead file removed. * i386/include/mach/i386/tss.h: Dead file removed. * i386/include/mach/i386/vcpi.h: Dead file removed. * i386/include/mach/proc_ops.h: Dead file removed. * i386/include/mach/sa/sys/varargs.h: Dead file removed. * i386/include/mach/setjmp.h: Dead file removed. * include/mach/proc_ops.h: Dead file removed. * Makefile.in (mach-headers): Remove proc_ops.h. * i386/Makefrag (i386-installed-headers): Likewise. (installed-headers): Don't touch this any more.
2000-10-292000-10-29 Roland McGrath <roland@frob.com>Roland McGrath
* i386/include/mach/proc_ops.h: Dead file removed. * i386/include/mach/setjmp.h: Dead file removed. * i386/include/mach/sa/sys/varargs.h: Dead file removed. * include/mach/proc_ops.h: Dead file removed. * Makefile.in (mach-headers): Remove proc_ops.h. * i386/Makefrag (i386-installed-headers): Likewise. (installed-headers): Don't touch this any more.
1999-06-21Delete old files from Utah Mach4 that we aren't using.Thomas Bushnell
1997-02-25Initial sourceThomas Bushnell