Age | Commit message (Collapse) | Author |
|
2005-12-29 Soeren D. Schulze <soeren.d.schulze@gmx.de>
* i386/i386at/model_dep.c (reboot_on_panic) [!MACH_KBD]: New variable.
(c_boot_entry) [!MACH_KBD]: Set reboot_on_panic to 0 if kernel_cmdline
contains '-H'.
* kern/debug.c (panic): Call halt_all_cpus with reboot_on_panic as
argument.
|
|
* 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.
|
|
* i386/i386/fpu.c (fphandleerr): Fix debugging message.
|
|
* i386/i386/fpu.c (init_fpu): Enable CR0_NE when processor is at
least i486.
(fpintr): Move code handling the FPU state to...
(fphandleerr): New function.
(fpexterrflt): Rename into...
(fpastintr): New function.
(fpexterrflt): Reintroduce function, calls fphandleerr then
raises exception.
* i386/i386/fpu.h (fpastintr): Add prototype.
* i386/i386/trap.c (i386_astintr): Call fpastintr instead of
fpexterrflt.
|
|
* i386/i386/fpu.c (init_fpu): Panic if no FPU is available.
|
|
* i386/i386/fpu.c (init_fpu): Make sure CR0_NE is dropped.
|
|
* i386/intel/pmap.c (pmap_unmap_page_zero): Do not fail if no PTE maps
virtual address 0.
|
|
* 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.
|
|
* i386/intel/pmap.c (INVALIDATE_TLB): Add pmap parameter.
(PMAP_UPDATE_TLBS): Pass pmap parameter.
(process_pmap_updates): Likewise.
(pmap_unmap_page_zero): Use INVALIDATE_TLB instead of hardcoding
it.
|
|
* i386/i386/model_dep.h (phys_first_addr, phys_last_addr): New
declarations.
* i386/i386/trap.c: Include <i386/model_dep.h>
(user_trap): Remove extern declaration of phys_last_addr.
* i386/intel/pmap.c: Include <i386/model_dep.h>
(phys_first_addr, phys_last_addr): Remove extern declaration.
|
|
* i386/i386at/model_dep.c (i386at_init): Use typeof(boot_info)
instead of hardcoding struct multiboot_info*.
|
|
* i386/i386at/model_dep.c (i386at_init): Move int_stack_high
assignation to before setting up interrupts.
|
|
* i386/i386/mp_desc.c (interrupt_stack_alloc): Apply phystokv to
stack_start.
* i386/i386at/model_dep.c (i386at_init): Apply phystokv to
memory allocated to duplicate multiboot information. Apply
_kvtophys before calling set_cr3. Apply phystokv to
phys_last_addr before assigning to int_stack_high.
* i386/intel/pmap.c (pmap_bootstrap): Apply phystokv to
phys_last_addr, use kernel_virtual_start instead of
phys_last_addr. Apply phystokv to allocated bootstrap page
table pages. Apply _kvtophys to page table pointers before
writing into page table.
(pmap_enter): Apply phystokv to allocated page table page, apply
kvtophys to deallocated page table page.
|
|
* Makefile.am (clib_routines): Add memcmp.
* i386/i386/db_machdep.h (DB_GNUMACH_TASK_NAME): New macro.
* i386/i386/db_interface.c (GNU): New macro.
[GNU] (looks_like_command): New function.
(db_task_name): When task map is kernel_pmap, return
DB_GNUMACH_TASK_NAME.
[GNU] (db_task_name): Use a GNU/Hurd-specific heuristic to get
argv[] of a task.
|
|
* i386/i386/vm_param.h (phystokv): Use VM_MIN_KERNEL_ADDRESS
instead of phys_mem_va.
(_kvtophys): New macro.
* i386/i386at/model_dep.c (phys_mem_va): Remove variable.
|
|
* i386/i386/pcb.c (switch_ktss): Rename ldt variable into tldt.
|
|
* i386/i386/vm_param.h (VM_MAX_KERNEL_ADDRESS): Add
VM_MIN_KERNEL_ADDRESS.
(kvtolin): Subtract VM_MIN_KERNEL_ADDRESS.
(lintokv): Add VM_MIN_KERNEL_ADDRESS.
* i386/i386at/model_dep.c (mem_size_init): Subtract
VM_MIN_KERNEL_ADDRESS in computation of phys_last_addr.
(i386at_init): Use VM_MIN_KERNEL_ADDRESS instead of 0 as
argument of lin2pdenum.
|
|
* i386/i386/spl.h (splnet, splbio, spl7, splx_cli): Add
prototypes.
|
|
* i386/i386/gdt.c (gdt_init): Subtract VM_MIN_KERNEL_ADDRESS
from LINEAR_MIN_KERNEL_ADDRESS to avoid assuming the former
being 0.
|
|
* i386/i386/db_interface.c (db_search_null): Do not decrease
vaddr twice.
|
|
* i386/i386/seg.h (KERNEL_RING): New macro, set to 0.
(ACC_PL_K, SEL_PL_K): Use KERNEL_RING instead of assuming 0.
* i386/i386/gdt.h (KERNEL_CS, KERNEL_DS): Likewise.
* i386/i386/db_interface.c (kdb_trap, kdb_kentry): Likewise.
* i386/i386/kttd_interface.c (kttd_trap, kttd_netentry): Likewise.
* i386/i386/i386asm.sym: Add KERNEL_RING expression.
|
|
* i386/i386at/kd.c: Include <util/atoi.h>
(DEFAULT): Remove, replaced by MACH_ATOI_DEFAULT.
(kd_parserest): Use mach_atoi instead of kd_atoi and MACH_ATOI_DEFAULT
instead of DEFAULT.
(kd_atoi): Move and rename function to...
* util/atoi.c: ... mach_atoi in new file.
* i386/i386at/kd.h (kd_atoi): Move and rename declaration to...
* util/atoi.h: ... mach_atoi in new file.
* Makefrag.am (libkernel_a_SOURCES): Add util/atoi.c
|
|
* i386/include/mach/i386/vm_param.h (VM_MAX_ADDRESS): Set back to 0xc0000000 by
default.
|
|
* 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.
|
|
* i386/i386at/com.h (comtimer): Fix prototype of comtimer.
|
|
* i386/i386at/autoconf.c: Include <i386/pic.h> even when [!LINUX_DEV].
|
|
* i386/i386/trap.h: Include <mach/mach_types.h>
|
|
* i386/i386/pcb.c (thread_setstatus): Comment out state variable
declaration.
|
|
* i386/i386/locore.S (TIME_INT_ENTRY): Fix comment.
|
|
* i386/intel/pmap.c (i): Declare only when [NCPUS > 1].
|
|
* device/chario.c (ttypush): Set parameter type to void * instead of
struct tty *, and implicitly cast the former into the latter instead.
* i386/i386at/com.c: Include <kern/mach_clock.h>.
(timeout, ttrstrt): Remove declarations.
(comtimer): Add unused void * parameter.
(comopen): Pass NULL to comtimer function.
* i386/i386at/kd.h (kd_belloff): Add unused void * parameter.
* i386/i386at/kd.c (timeout): Remove declaration.
(kd_belloff): Add unused void * parameter.
(feep, kdsetbell): Pass NULL to kd_belloff function.
* i386/i386at/lpr.c: Include <mach_clock.h>.
(timeout, ttrstrt): Remove declarations.
* kern/mach_clock.c (softclock, timeout, untimeout): Set parameter
type of fcn function pointer to void * instead of char *. Set type
of param to void * instead of char *.
* kern/mach_clock.h (timer_elt): Set parameter type of fcn member
to void * instead of char *. Set time of param member to void * instead
of char *.
(timeout): Set parameter type of fcn function pointer parameter to void
* instead of char *.
(untimeout): Likewise, set type of param parameter to void * instead of
char *.
* kern/sched_prim.c (sched_init): Remove cast of recompute_priorities.
Replace (char *)0 with NULL.
(thread_timeout): Set parameter type to void * instead of thread_t, and
implicitly cast the former into the latter instead.
(thread_timeout_setup): Remove cast of thread_timeout, cast
thread_depress_timeout into (void (*) (void*)). Remove cast of thread.
(thread_recompute_priorities): Add unused void * parameter.
|
|
* i386/i386at/model_dep.c (init_alloc_aligned): Add declaration.
(i386at_init): Use init_alloc_aligned to allocate memory to save the
content pointed by boot_info: cmdline, mods_addr, mod_start, and string.
Set kernel_cmdline to the newly allocated string.
(c_boot_entry): Do not set kernel_cmdline.
|
|
* i386/i386at/model_dep.c (mem_size_init): Move avail_remaining computation to
after all phys_last_addr corrections.
|
|
This reverts commit de00e82b8c4491a4ff3320c0ddd80ac91ed0977b.
Flags already get cleared using push/pop a few instructions later.
|
|
i386/i386at/boothdr.S (boot_entry): Clear D flag.
|
|
kern/zalloc.c (zone_map_size): Increase to 64MiB.
i386/i386at/model_dep.c (mem_size_init): Reduce cap to 1/6 of memory
space to save room for zalloc area.
linux/src/drivers/block/ide.h (INITIAL_MULT_COUNT): Set to 16.
vm/vm_map.h (VM_MAP_COPY_PAGE_LIST_MAX): Set to 64.
vm/vm_object.c (vm_object_cached_max): Set to 4000.
|
|
|
|
i386/i386/db_interface.c (db_read_bytes): Also check addr against
VM_MAX_KERNEL_ADDRESS.
|
|
i386/intel/pmap.c (INVALIDATE_TLB): Fix macro escapes
|
|
i386/i386at/model_dep.c (mem_size_init): Advertise memory size
truncations.
|
|
It messes too much with probing and brings hang issue.
* i386/linux/dev/include/linux/autoconf.h
(CONFIG_BLK_DEV_CMD640, CONFIG_BLK_DEV_CMD640_ENHANCED):
Undefine macros.
|
|
* i386/i386/prog_reg.h (invlpg_linear): Rename macro into...
(invlpg_linear_range): ... this.
(invlpg_linear): New macro.
* i386/intel/pmap.c (INVALIDATE_TLB): Call invlpg_linear instead
of flush_tlb when e - S is compile-time known to be PAGE_SIZE,
instead of run-time known to be less than 32 * PAGE_SIZE.
|
|
* i386/intel/pmap.c (INVALIDATE_TLB): For now, disable use of invlpg.
|
|
* i386/i386/gdt.h (LINEAR_DS): New macro.
* i386/i386/gdt.c (gdt_init): Initialize LINEAR_DS descriptor.
* i386/i386/proc_reg.h (invlpg_user): Rename macro into...
(invlpg_linear): ... this. Use movw instead of movl to set KERNEL_DS
selector. Use LINEAR_DS selector instead of USER_DS selector.
* i386/intel/pmap.c (INVALIDATE_TLB): Call invlpg_linear instead of
invlpg_user.
|
|
* i386/i386/proc_reg.h [__ASSEMBLER__ && __GNUC__]: Include
<i386/gdt.h> and <i386/ldt.h>
(invlpg_user): New macro.
* i386/intel/pmap.c (INVALIDATE_TLB): Call invlpg_user instead
of invlpg.
(pmap_remove, pmap_page_protect, pmap_protect, pmap_enter,
pmap_collect, phys_attribute_clear): Call PMAP_UPDATE_TLBS
after pde update instead of before.
|
|
* i386/intel/pmap.c (pmap_bootstrap): Extend kernel virtual memory to
at least the size of the physical memory.
|
|
* i386/i386/proc_reg.h (invlpg): New macro.
* i386/intel/pmap.c (INVALIDATE_TLB): If portion to be flushed is less
than 32 pages, use calls to invlpg instead of flush_tlb.
|
|
* i386/i386/proc_reg.h (get_cr0, get_cr2, get_cr3, get_cr4, get_tr,
get_ldt): Add volatile qualifier to asm statement to prevent gcc from
optimizing it away since there seems to be no way to clobber these
properly in the set_* macros.
|
|
* device/device_emul.h (struct device_emulation_ops): Make members
reference, dealloc, dev_to_port, write_trap, and writev_trap take
mach_device_t parameter instead of void *.
* i386/i386at/autoconf.c: Make forward declarations for comintr()
and lprintr() match prototype. Add brackets around initialization
members for bus_ctlr and bus_device structs.
* i386/i386at/conf.c (dev_name_list): Pass nomap instead of nulldev
for map field.
* i386/i386at/pic_isa.c (intnull, fpintr, hardclock, kdintr,
prtnull): Declare the type of the value returned by functions to void.
|
|
* i386/configfrag.ac (enable_pae): Add checks: this is ix86-only.
|