summaryrefslogtreecommitdiff
path: root/i386
AgeCommit message (Collapse)Author
2011-08-30Fix copyright assignmentSamuel Thibault
I have assigned copyright to the Free Software Foundation. * i386/i386/xen.h: Fix copyright assignment * i386/xen/xen.c: Likewise. * i386/xen/xen_boothdr.S: Likewise. * i386/xen/xen_locore.S: Likewise. * include/mach/xen.h: Likewise. * xen/block.c: Likewise. * xen/block.h: Likewise. * xen/console.c: Likewise. * xen/console.h: Likewise. * xen/evt.c: Likewise. * xen/evt.h: Likewise. * xen/grant.c: Likewise. * xen/grant.h: Likewise. * xen/net.c: Likewise. * xen/net.h: Likewise. * xen/ring.c: Likewise. * xen/ring.h: Likewise. * xen/store.c: Likewise. * xen/store.h: Likewise. * xen/time.c: Likewise. * xen/time.h: Likewise. * xen/xen.c: Likewise. * xen/xen.h: Likewise.
2011-08-30Console declaration cleanupSamuel Thibault
* device/cons.h: Add multiple inclusion _DEVICE_CONS_H macro protector. (struct consdev): Add function members prototypes. * i386/i386/xen.h: Include <mach/xen.h>. * i386/i386at/com.c (comcnprobe, comcninit, comcngetc, comcnputc): Move prototypes... * i386/i386at/com.h: ... here. Include <device/cons.h>. * i386/i386at/cons_conf.c [MACH_HYP]: Include <xen/console.h>. [!MACH_HYP]: Include "kd.h". [!MACH_HYP && NCOM > 0]: Include "com.h". (hypcnprobe, hypcninit, hypcngetc, hypcnputc, kdcnprobe, kdcninit, kdcngetc, kdcnputc comcnprobe, comcninit, comcngetc, comcnputc): Remove prototypes. * i386/i386at/kd.c (kdcnputc): Make it return int, -1 on error, 0 on success. (kdcnprobe, kdcninit, kdcngetc, kdcnputc): Move prototypes... * i386/i386at/kd.h: ... here. Include <device/cons.h>. * xen/console.c (hypcnprobe): Remove unused `my_console' local variable. * xen/console.h: Include <device/cons.h> (hypcnputc, hypcngetc, hypcnprobe, hypcninit): Add prototypes.
2011-08-29Make copyout run in 1 loop on >= i486Samuel Thibault
* i386/i386/locore.S (copyout): On >= i486, skip WP-check loop split and just use byte count.
2011-08-28Skip kernel WP check on i486 and aboveSamuel Thibault
* i386/i386/i386asm.sym (machine_slot.sub_type): Define. * i386/i386/locore.S (copyout_retry): Skip if machine_slot[0].cpu_type > 3.
2011-08-28Enable >4GiB cr3Samuel Thibault
* i386/xen/xen_boothdr.S (__xen_guest): Add [extended-cr3] to PAE (XEN_ELFNOTE_PAE_MODE): Likewise.
2011-08-28Disable (<i486)-only WP workaround on Xen & PAESamuel Thibault
i386 didn't support PAE anyway. * i386/i386/locore.S (copyout_retry) [MACH_HYP || PAE]: Remove. * xen/xen.c (hyp_invalidate_pte): Remove function. * xen/xen.h (hyp_invalidate_pte): Remove prototype.
2011-08-28Fix pmap_clear_bootstrap_pagetable with >4G mfnsSamuel Thibault
* i386/intel/pmap.c (pmap_clear_bootstrap_pagetable): Use pte_to_pa instead of atop.
2011-08-28Rework memory mapping reservationSamuel Thibault
* i386/i386/vm_param.h (VM_KERNEL_MAP_SIZE): Define to 192MiB. * i386/i386at/model_dep.c (mem_size_init): Use VM_KERNEL_MAP_SIZE instead of 1/6 factor. * i386/intel/pmap.c (morevm): Remove. (pmap_bootstrap): Use VM_KERNEL_MAP_SIZE instead of morevm.
2011-08-27Disable unused variablesGuillem Jover
* i386/i386at/com.c (comstart): Disable `i' variable. * linux/src/drivers/net/at1700.c (net_close): Disable `lp' variable. * linux/dev/include/linux/blk.h (end_request): Disable `nsect' variable on MACH.
2011-08-27Add prototypes for locore functionsGuillem Jover
* i386/i386at/model_dep.c (discover_x86_cpu_type): Move ... * i386/i386/locore.h: ... here. (inst_fetch, cpu_shutdown): New prototypes. * i386/i386at/kd.c: Include <i386/locore.h>.
2011-08-21Add 8byte breakpoint macroSamuel Thibault
* i386/i386/db_interface.h (I386_DB_LEN_8): Define macro.
2011-04-23Enable all cachesSamuel Thibault
* i386/i386at/model_dep.c (i386at_init): Set CR0_CD and CR0_NW in CR0 register.
2011-04-22Update constants to nowadays standardsSamuel Thibault
Follow-up to fa6c711d * vm/vm_object.c (DEVICE_IO_MAP_SIZE): Increase to 16MiB. * kern/kalloc.c (kalloc_map_size): Increase to 64MiB. * i386/intel/pmap.c (morevm): Increase to 128MiB.
2011-04-19Close call stack on continuationSamuel Thibault
* i386/i386/locore.S (call_continuation): Push dummy return address instead of letting the callee get a random one.
2011-04-03Fix build with kdb from make dist-generated tarballSamuel Thibault
* Makefrag.am (libkernel_a_SOURCES): Add ddb/db_cond.h, ddb/db_examine.h, ddb/db_input.h, ddb/db_macro.h, ddb/db_trap.h. * i386/Makefrag.am (libkernel_a_SOURCES): Add i386/i386/db_interface.h
2011-03-21Fix typoSamuel Thibault
* i386/i386at/kd.c (key_map): Fix K_PERIOD typo.
2011-03-20Clean kd.[ch]Samuel Thibault
* i386/i386at/kd.h (NUMSTATES): Fix comment about NORM_STATE. * i386/i386at/kd.c (key_map): Use K_* macros instead of numeric values.
2011-03-11Fix continuation after keyboard debugger invocationSamuel Thibault
According to stack layout change in 5da1aea7 * i386/i386/locore.S [!MACH_XEN] (RET_OFFSET): Define to 12 instead of 8.
2011-03-06Enable global pages after enabling pagingSamuel Thibault
* i386/i386at/model_dep.c (i386at_init): Enable CR4_PGE after enabling CR0_PG.
2011-03-05Fix temporary direct mapping during page table enablingSamuel Thibault
* i386/i386at/model_dep.c (i386at_init): Count the number of actually needed temporary L1 direct mapping by getting the last used address from init_alloc_aligned(), instead of hardcoding it to 1 or 3, and then use a for loop.
2011-03-03Keep supplementary L1 pages read-onlySamuel Thibault
* i386/intel/pmap.c (pmap_bootstrap): Fix loop which keeps supplementary L1 pages read-only: break as soon as one of the L1 supplementary pages has been recognized, so that its pte does not get rewritten read-write.
2011-02-27Re-enable updating pvlist for kernel_pmapSamuel Thibault
This partially reverts 0744feb6 * i386/intel/pmap.c (pmap_remove_range): Update pvlist for kernel_pmap too.
2011-02-27Acknoledge interrupt after handler callSamuel Thibault
This fixes interrupt overflows when software interrupts processing gets slower than hardware. * i386/i386at/interrupt.S (interrupt): Issue EOI to PICs after having called the interrupt handler and disabled interrupts through cli.
2011-02-27Detect interrupt overflowSamuel Thibault
* i386/i386/locore.S (int_from_instack): Check %esp against _intstack, issue ud2 on stack overflow.
2011-02-27Add x86 debug register Xen supportSamuel Thibault
* i386/xen/xen_boothdr.S: Add global visibility to __hyp_* symbols. * i386/i386/locore.S [MACH_XEN] (dr6,dr0,dr1,dr2,dr3): Make get_debugreg and set_debugreg hypercalls to manipulate debug registers. (dr0,dr1,dr2,dr3): Fix dr7 field shift. * i386/i386/xen.h (hyp_set_debugreg, hyp_get_debugreg): New prototypes.
2011-02-27Add prototypes for x86 debug registersSamuel Thibault
* i386/i386/db_interface.h (I386_DB_TYPE_X, I386_DB_TYPE_W, I386_DB_TYPE_RW, I386_DB_LEN_1, I386_DB_LEN_2, I386_DB_LEN_4, I386_DB_LOCAL, I386_DB_GLOBAL): New macros. (dr0, dr1, dr2, dr3): New function prototypes.
2011-02-27Fix for kdb watch commandSamuel Thibault
* i386/intel/pmap.c (pmap_remove_range): Do not update pvlist for kernel_map. [MACH_KBD] (pmap_enter): Allow physical memory remapping.
2011-02-26Add console=comN boot option to enable serial consoleSamuel Thibault
* i386/configfrag.ac (RCLINE, RCADDR): Remove defines. * i386/i386at/com.c: Include <string.h> and <util/atoi.h> [!RCLINE] (RCBAUD, comcndev, comcnprobe, comcninit, comcngetc, comcnputc): Declare and define macro, variable, and functions. (rcline): New variable. (kernel_cmdline): New declaration. (comcnprobe): Detect "console=comN" option and set rcline accordingly, use rcline instead of RCLINE for serial console selection. * i386/i386at/cons_conf.c [NCOM>0 && !RCLINE] (comcnprobe, comcninit, comcngetc, comcnputc): Declare functions. [NCOM>0 && !RCLINE] (constab): Enable "com" console. * i386/i386at/kd_event.c (kbdopen): Call kdinit function, for when the VGA+pckbd console was not initialized.
2011-01-31Enable pae_extended_cr3 in pmap_bootstrapSamuel Thibault
* i386/i386/gdt.c (gdt_init): Do not enable VMASST_TYPE_pae_extended_cr3. * i386/intel/pmap.c (pmap_bootstrap): Enable VMASST_TYPE_pae_extended_cr3.
2011-01-31Enable Xen >4GiB physical memory supportSamuel Thibault
* i386/i386/gdt.c (gdt_init): Enable VMASST_TYPE_pae_extended_cr3. * i386/i386/xen.h: Drop actually-unneeded comment. * i386/xen/xen_boothdr.S (FEATURES) [MACH_PSEUDO_PHYS]: Add pae_pgdir_above_4gb. (XEN_ELFNOTE_FEATURES) [MACH_PSEUDO_PHYS]: Add pae_pgdir_above_4gb.
2011-01-31Drop kbd device on xenSamuel Thibault
* i386/Makefrag.am (libkernel_a_SOURCES): Move i386/i386at/kd_event.[ch] and i386/i386at/kd_queue.[ch] to [PLATFORM_at]. * i386/i386at/conf.c (dev_name_list): Move kbd device to [!MACH_HYP].
2011-01-15Avoid dropping kd_intr when RCLINE is >= 0Samuel Thibault
* i386/i386at/kd.c (kdintr): Return immediately if !kd_initialized. * i386/i386at/pic_isa.c (ivect) [RCLINE >= 0]: Enable kdintr in that case too.
2011-01-15Move -d and -H parse to kern/startup.cSamuel Thibault
The code is arch-independant, and reboot_on_panic, used by kern/debug.c would be undefined on non-i386. * i386/i386at/model_dep.c (reboot_on_panic, c_boot_entry): Move -d and -H parse to... * kern/startup.c (reboot_on_panic,setup_main): ... here. Include <string.h>
2010-12-09memcpy operands are not supposed to overlapSamuel Thibault
* include/string.h (memmove): Add prototype. * i386/i386at/immc.c (immc_cnputc): Replace memcpy with memmove.
2010-10-24Avoid harmless warningSamuel Thibault
* i386/i386at/kd.c (kd_setleds1): Only display unexpected state warning when debugging is enabled.
2010-10-23Add prototype for discover_x86_cpu_typeSamuel Thibault
* i386/i386at/model_dep.c (discover_x86_cpu_type): Add prototype.
2010-10-23Warn on unknown CPU familySamuel Thibault
* i386/i386at/model_dep.c (c_boot_entry): Warn in the default case for cpu_type.
2010-10-23Recognize P4 and Opteron-like as pentium proSamuel Thibault
* i386/i386at/model_dep.c (c_boot_entry): Treat cpu_type 15 as Pentium pro.
2010-09-14Merge branch 'typo-print'Thomas Schwinge
2010-09-14Typo fix.Thomas Schwinge
* i386/i386/trap.c (user_trap): Call printf, not print.
2010-09-14Fix ifunc entriesSamuel Thibault
* i386/ldscript: Update to the version from binutils 2.20.51.20100617. Remove SEARCH_DIR calls. * Makefile.am (clib_routines): Accept undefined __rel_iplt_start and __rel_iplt_end as these come from the ldscript. * i386/i386at/boothdr.S (boot_entry): Call ifunc hooks at boot. * i386/xen/xen_boothdr.S (start): Likewise.
2010-08-27Fix "make dist"Guillem Jover
* Makefile.am (EXTRA_DIST): Remove ChangeLog.0, ChangeLog.00 and Makefile.correct_output_files_for_.S_files.patch. * Makefrag.am (libkernel_a_SOURCES): Add ipc/mach_port.h, kern/ipc_mig.h, kern/machine.h, util/putchar.h, util/atoi.h, vm/vm_resident.h, vm/vm_types.h and device/subrs.h. Remove kern/time_out.h. * i386/Makefrag.am (libkernel_a_SOURCES): Add i386/i386at/autoconf.h, i386/i386at/com.h, i386/i386at/int_init.h, i386/i386/loose_ends.h, i386/i386/model_dep.h, i386/intel/read_fault.h and i386/i386/xen.h. Remove i386/i386/timer.h. * linux/Makefrag.am (liblinux_a_SOURCES): Add linux/src/drivers/net/sis900.h. * xen/Makefrag.am (libkernel_a_SOURCES): Add xen/public/arch-x86_32.h xen/public/arch-x86_64.h, xen/public/arch-x86/xen.h, xen/public/arch-x86/xen-mca.h, xen/public/arch-x86/xen-x86_32.h, xen/public/arch-x86/xen-x86_64.h, xen/public/callback.h, xen/public/COPYING, xen/public/dom0_ops.h, xen/public/domctl.h, xen/public/elfnote.h, xen/public/elfstructs.h, xen/public/event_channel.h, xen/public/features.h, xen/public/grant_table.h, xen/public/io/blkif.h, xen/public/io/console.h, xen/public/io/fbif.h, xen/public/io/fsif.h, xen/public/io/kbdif.h, xen/public/io/netif.h, xen/public/io/pciif.h, xen/public/io/protocols.h, xen/public/io/ring.h, xen/public/io/tpmif.h, xen/public/io/xenbus.h, xen/public/io/xs_wire.h, xen/public/kexec.h, xen/public/libelf.h, xen/public/memory.h, xen/public/nmi.h, xen/public/physdev.h, xen/public/platform.h, xen/public/sched.h, xen/public/sysctl.h, xen/public/trace.h, xen/public/vcpu.h, xen/public/version.h, xen/public/xencomm.h, xen/public/xen-compat.h, xen/public/xen.h, xen/public/xenoprof.h, xen/block.h, xen/console.h, xen/evt.h, xen/grant.h, xen/net.h, xen/ring.h, xen/store.h, xen/time.h and xen/xen.h.
2010-08-26Do not advice to install libc0.3-xen on 4gb_segment trapSamuel Thibault
ext2fs.static will trigger some anyway. Instead, provide an easy way to track how many traps happen. * i386/i386/gdt.c [MACH_XEN] (gdt_init): Disable enabling VMASST_TYPE_4gb_segments_notify. * i386/i386/trap.c [MACH_XEN] (user_trap): Remove printing libc0.3-xen installation advice on 4gb_segments trap. Instead, print a count every 10000 traps, and disable them on the 1000000th.
2010-08-22Disable 4gb segment emulation notification on first notificationSamuel Thibault
i386/i386/trap.c [MACH_XEN] (user_trap): Disable VMASST_TYPE_4gb_segments_notify on trap 15.
2010-08-22Report Xen 4gb segment emulationSamuel Thibault
* i386/i386/gdt.c [MACH_XEN] (gdt_init): Enable VMASST_TYPE_4gb_segments_notify. * i386/i386/idt_inittab.S [MACH_XEN]: Set trap 15 as pushing an error code. * i386/i386/trap.c [MACH_XEN]: Print trap 15 first occurrence.
2010-08-01Move read-only sections to after text sectionSamuel Thibault
2010-04-16Add memory clobbers to segment selector loadersSamuel Thibault
* i386/i386/seg.h (lldt): Add memory clobber to lldt asm snippet. * i386/i386/tss.h (ltr): Add memory clobber to ltr asm snippet.
2010-04-08Fix bootstrap additional mappingSamuel Thibault
* i386/intel/pmap.c (pmap_bootstrap): Use pt_entry_t type instead of vm_offset_t to map additional kernel space.
2010-04-08Extend machine addresses to 64bit for PAESamuel Thibault
* i386/i386/pcb.c (switch_ktss): Use uint64_t for descriptor type instead of unsigned long long. * i386/i386/seg.h (fill_descriptor): Use uint64_t for descriptor type instead of unsigned long long. Cast result of kv_to_ma() into vm_offset_t before printing. * i386/i386/xen.h (hyp_mmu_update_pte): Use pt_entry_t type instead of unsigned long long, make pte parameter a pt_entry_t too. (hyp_mmu_update_pte): Compute pte address just using pt_entry_t integers. (hyp_high): New macro to fix 32bit right shifting. (hyp_do_update_descriptor): Use pt_entry_t type for machine address instead of unsigned long. Split it in 32bit parts. Use uint64_t for descriptor type instead of unsigned long long. (update_va_mapping): Use pt_entry_t type instead of unsigned long long. Use hyp_high macro. (hyp_invlpg): Use uint64_t for time type instead of unsigned long long. * i386/intel/pmap.c (pmap_bootstrap): Use ptetokv instead of pte_to_pa + phystokv. Cast machine addresses into vm_offset_t before printing. (pmap_set_page_readwrite): Likewise. (pmap_set_page_readonly): Likewise (pmap_set_page_readonly_init): Likewise (pmap_clear_bootstrap_pagetable): Likewise (pmap_destroy): Likewise (pmap_map_mfn): Use pt_entry_t type for machine addresses. Cast machine addresses into vm_offset_t before printing. * i386/intel/pmap.h [PAE] (INTEL_PTE_PFN): Set macro to 0xfffffffffffff000ULL. * include/mach/xen.h [PAE] (pa_to_ma, ma_to_pa): Use pt_entry_t type for machine addresses. [!PAE] (pa_to_ma): Remove cast to vm_offset_t. (mfn_to_kv): Use mfn_to_pfn + ptoa instead of ptoa + ma_to_pa. * xen/xen.c (hyp_invalidate_pte): Cast machine addresses into vm_offset_t before printing.
2010-03-14Add mem deviceSamuel Thibault
* i386/Makefrag.am (libkernel_a_SOURCES): Add i386/i386at/iopl.c. * i386/i386at/conf.c [!MACH_HYP] (memmmap): Declare function. (memname): Add macro. (dev_name_list): Add mem device. * i386/i386at/mem.c: New file.