Index: Sandvine/sys/conf/files.pc98 =================================================================== --- Sandvine/sys/conf/files.pc98 (revision 204275) +++ Sandvine/sys/conf/files.pc98 (working copy) @@ -195,7 +195,6 @@ i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2 i386/ibcs2/imgact_coff.c optional ibcs2 i386/isa/atpic.c optional atpic -#i386/isa/atpic_vector.s standard i386/isa/elink.c optional ep | ie i386/isa/isa.c optional isa i386/isa/npx.c optional npx Index: Sandvine/sys/conf/files.i386 =================================================================== --- Sandvine/sys/conf/files.i386 (revision 204275) +++ Sandvine/sys/conf/files.i386 (working copy) @@ -244,13 +244,6 @@ i386/bios/mca_machdep.c optional mca i386/bios/smapi.c optional smapi i386/bios/smapi_bios.S optional smapi -i386/bios/smbios.c optional smbios -i386/bios/vpd.c optional vpd -i386/cpufreq/est.c optional cpufreq -i386/cpufreq/hwpstate.c optional cpufreq -i386/cpufreq/p4tcc.c optional cpufreq -i386/cpufreq/powernow.c optional cpufreq -i386/cpufreq/smist.c optional cpufreq #i386/i386/apic_vector.s optional apic i386/i386/atomic.c standard \ compile-with "${CC} -c ${CFLAGS} ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}" @@ -329,17 +322,10 @@ i386/ibcs2/ibcs2_xenix.c optional ibcs2 i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2 i386/ibcs2/imgact_coff.c optional ibcs2 -i386/isa/atpic.c optional atpic -#i386/isa/atpic_vector.s standard -i386/isa/clock.c optional native i386/xen/clock.c optional xen i386/xen/xen_clock_util.c optional xen i386/xen/xen_rtc.c optional xen -i386/isa/elcr.c standard i386/isa/elink.c optional ep | ie -i386/isa/isa.c optional isa -i386/isa/isa_dma.c optional isa -i386/isa/nmi.c standard i386/isa/npx.c optional npx i386/isa/pmtimer.c optional pmtimer i386/isa/prof_machdep.c optional profiling-routine @@ -362,8 +348,6 @@ warning "COMPAT_SVR4 is broken and should be avoided" i386/svr4/svr4_machdep.c optional compat_svr4 # -isa/atrtc.c optional atpic -isa/orm.c optional isa isa/syscons_isa.c optional sc isa/vga_isa.c optional vga kern/imgact_aout.c optional compat_aout @@ -387,3 +371,21 @@ # compat/x86bios/x86bios.c optional x86bios | atkbd | dpms | vesa contrib/x86emu/x86emu.c optional x86bios | atkbd | dpms | vesa +# +# x86 shared code between IA32, AMD64 and PC98 architectures +# +x86/bios/smbios.c optional smbios +x86/bios/vpd.c optional vpd +x86/cpufreq/est.c optional cpufreq +x86/cpufreq/hwpstate.c optional cpufreq +x86/cpufreq/p4tcc.c optional cpufreq +x86/cpufreq/powernow.c optional cpufreq +x86/cpufreq/smist.c optional cpufreq +x86/isa/atpic.c optional atpic +x86/isa/atrtc.c optional atpic +x86/isa/clock.c optional native +x86/isa/elcr.c standard +x86/isa/isa.c optional isa +x86/isa/isa_dma.c optional isa +x86/isa/nmi.c standard +x86/isa/orm.c optional isa Index: Sandvine/sys/conf/files.amd64 =================================================================== --- Sandvine/sys/conf/files.amd64 (revision 204275) +++ Sandvine/sys/conf/files.amd64 (working copy) @@ -131,13 +131,6 @@ amd64/amd64/uio_machdep.c standard amd64/amd64/uma_machdep.c standard amd64/amd64/vm_machdep.c standard -amd64/isa/atpic.c optional atpic isa -#amd64/isa/atpic_vector.S optional atpic isa -amd64/isa/clock.c standard -amd64/isa/elcr.c standard -amd64/isa/isa.c standard -amd64/isa/isa_dma.c standard -amd64/isa/nmi.c standard amd64/pci/pci_bus.c optional pci amd64/pci/pci_cfgreg.c optional pci crypto/blowfish/bf_enc.c optional crypto | ipsec @@ -228,8 +221,6 @@ dev/syscons/scvtb.c optional sc dev/uart/uart_cpu_amd64.c optional uart dev/wpi/if_wpi.c optional wpi -isa/atrtc.c standard -isa/orm.c optional isa isa/syscons_isa.c optional sc isa/vga_isa.c optional vga kern/link_elf_obj.c standard @@ -289,12 +280,6 @@ compat/ndis/subr_pe.c optional ndisapi pci compat/ndis/subr_usbd.c optional ndisapi pci compat/ndis/winx64_wrap.S optional ndisapi pci -i386/bios/smbios.c optional smbios -i386/bios/vpd.c optional vpd -i386/cpufreq/powernow.c optional cpufreq -i386/cpufreq/est.c optional cpufreq -i386/cpufreq/hwpstate.c optional cpufreq -i386/cpufreq/p4tcc.c optional cpufreq # libkern/memmove.c standard libkern/memset.c standard @@ -303,3 +288,20 @@ # compat/x86bios/x86bios.c optional x86bios | atkbd | dpms | vesa contrib/x86emu/x86emu.c optional x86bios | atkbd | dpms | vesa +# +# x86 shared code between IA32, AMD64 and PC98 architectures +# +x86/bios/smbios.c optional smbios +x86/bios/vpd.c optional vpd +x86/cpufreq/powernow.c optional cpufreq +x86/cpufreq/est.c optional cpufreq +x86/cpufreq/hwpstate.c optional cpufreq +x86/cpufreq/p4tcc.c optional cpufreq +x86/isa/atpic.c optional atpic isa +x86/isa/atrtc.c optional atpic +x86/isa/clock.c standard +x86/isa/elcr.c standard +x86/isa/isa.c standard +x86/isa/isa_dma.c standard +x86/isa/nmi.c standard +x86/isa/orm.c optional isa Index: Sandvine/sys/modules/bios/vpd/Makefile =================================================================== --- Sandvine/sys/modules/bios/vpd/Makefile (revision 204275) +++ Sandvine/sys/modules/bios/vpd/Makefile (working copy) @@ -1,7 +1,7 @@ # $FreeBSD$ # -.PATH: ${.CURDIR}/../../../i386/bios +.PATH: ${.CURDIR}/../../../x86/bios KMOD= vpd SRCS= vpd.c \ Index: Sandvine/sys/modules/bios/smbios/Makefile =================================================================== --- Sandvine/sys/modules/bios/smbios/Makefile (revision 204275) +++ Sandvine/sys/modules/bios/smbios/Makefile (working copy) @@ -1,7 +1,7 @@ # $FreeBSD$ # -.PATH: ${.CURDIR}/../../../i386/bios +.PATH: ${.CURDIR}/../../../x86/bios KMOD= smbios SRCS= smbios.c \ Index: Sandvine/sys/modules/cpufreq/Makefile =================================================================== --- Sandvine/sys/modules/cpufreq/Makefile (revision 204275) +++ Sandvine/sys/modules/cpufreq/Makefile (working copy) @@ -8,7 +8,7 @@ SRCS+= bus_if.h cpufreq_if.h device_if.h pci_if.h .if ${MACHINE} == "i386" || ${MACHINE} == "amd64" -.PATH: ${.CURDIR}/../../i386/cpufreq +.PATH: ${.CURDIR}/../../x86/cpufreq SRCS+= acpi_if.h opt_acpi.h SRCS+= est.c hwpstate.c p4tcc.c powernow.c Index: Sandvine/sys/pc98/pc98/machdep.c =================================================================== --- Sandvine/sys/pc98/pc98/machdep.c (revision 204275) +++ Sandvine/sys/pc98/pc98/machdep.c (working copy) @@ -129,7 +129,7 @@ #endif #ifdef DEV_ISA -#include +#include #endif /* Sanity check for __curthread() */ Index: Sandvine/sys/i386/i386/nexus.c =================================================================== --- Sandvine/sys/i386/i386/nexus.c (revision 204275) +++ Sandvine/sys/i386/i386/nexus.c (working copy) @@ -72,7 +72,7 @@ #ifdef PC98 #include #else -#include +#include #endif #endif #include Index: Sandvine/sys/i386/i386/vm_machdep.c =================================================================== --- Sandvine/sys/i386/i386/vm_machdep.c (revision 204275) +++ Sandvine/sys/i386/i386/vm_machdep.c (working copy) @@ -95,7 +95,7 @@ #ifdef PC98 #include #else -#include +#include #endif #ifdef XBOX Index: Sandvine/sys/i386/i386/machdep.c =================================================================== --- Sandvine/sys/i386/i386/machdep.c (revision 204275) +++ Sandvine/sys/i386/i386/machdep.c (working copy) @@ -132,7 +132,7 @@ #endif #ifdef DEV_ISA -#include +#include #endif #ifdef XBOX Index: Sandvine/sys/i386/i386/exception.s =================================================================== --- Sandvine/sys/i386/i386/exception.s (revision 204275) +++ Sandvine/sys/i386/i386/exception.s (working copy) @@ -294,7 +294,7 @@ SUPERALIGN_TEXT MCOUNT_LABEL(bintr) -#include +#include #ifdef DEV_APIC .data Index: Sandvine/sys/i386/xen/clock.c =================================================================== --- Sandvine/sys/i386/xen/clock.c (revision 204275) +++ Sandvine/sys/i386/xen/clock.c (working copy) @@ -74,8 +74,8 @@ #include #include -#include -#include +#include +#include #include #include Index: Sandvine/sys/amd64/amd64/nexus.c =================================================================== --- Sandvine/sys/amd64/amd64/nexus.c (revision 204275) +++ Sandvine/sys/amd64/amd64/nexus.c (working copy) @@ -69,7 +69,7 @@ #ifdef DEV_ISA #include -#include +#include #endif #include Index: Sandvine/sys/amd64/amd64/vm_machdep.c =================================================================== --- Sandvine/sys/amd64/amd64/vm_machdep.c (revision 204275) +++ Sandvine/sys/amd64/amd64/vm_machdep.c (working copy) @@ -80,7 +80,7 @@ #include #include -#include +#include static void cpu_reset_real(void); #ifdef SMP Index: Sandvine/sys/amd64/amd64/exception.S =================================================================== --- Sandvine/sys/amd64/amd64/exception.S (revision 204275) +++ Sandvine/sys/amd64/amd64/exception.S (working copy) @@ -595,7 +595,7 @@ .text SUPERALIGN_TEXT -#include +#include #endif .text Index: Sandvine/sys/amd64/amd64/machdep.c =================================================================== --- Sandvine/sys/amd64/amd64/machdep.c (revision 204275) +++ Sandvine/sys/amd64/amd64/machdep.c (working copy) @@ -128,7 +128,7 @@ #endif #ifdef DEV_ATPIC -#include +#include #else #include #endif Index: Sandvine/sys/amd64/amd64/identcpu.c =================================================================== --- Sandvine/sys/amd64/amd64/identcpu.c (revision 204275) +++ Sandvine/sys/amd64/amd64/identcpu.c (working copy) @@ -61,7 +61,7 @@ #include #include -#include +#include /* XXX - should be in header file: */ void printcpuinfo(void); Index: Sandvine/sys/amd64/amd64/intr_machdep.c =================================================================== --- Sandvine/sys/amd64/amd64/intr_machdep.c (revision 204275) +++ Sandvine/sys/amd64/amd64/intr_machdep.c (working copy) @@ -62,8 +62,8 @@ #include #include #include -#include -#include +#include +#include #endif #define MAX_STRAY_LOG 5 Index: Sandvine/sys/x86/isa/atpic.c =================================================================== --- Sandvine/sys/x86/isa/atpic.c (revision 0) +++ Sandvine/sys/x86/isa/atpic.c (working copy) @@ -53,14 +53,22 @@ #include #include -#include +#include #ifdef PC98 #include #else -#include +#include #endif #include +#ifdef __amd64__ +#define SDT_ATPIC SDT_SYSIGT +#define GSEL_ATPIC 0 +#else +#define SDT_ATPIC SDT_SYS386IGT +#define GSEL_ATPIC GSEL(GCODE_SEL, SEL_KPL) +#endif + #define MASTER 0 #define SLAVE 1 @@ -468,8 +476,7 @@ ai->at_intsrc.is_count = &ai->at_count; ai->at_intsrc.is_straycount = &ai->at_straycount; setidt(((struct atpic *)ai->at_intsrc.is_pic)->at_intbase + - ai->at_irq, ai->at_intr, SDT_SYS386IGT, SEL_KPL, - GSEL(GCODE_SEL, SEL_KPL)); + ai->at_irq, ai->at_intr, SDT_ATPIC, SEL_KPL, GSEL_ATPIC); } #ifdef DEV_MCA Index: Sandvine/sys/x86/isa/isa.h =================================================================== --- Sandvine/sys/x86/isa/isa.h (revision 0) +++ Sandvine/sys/x86/isa/isa.h (working copy) @@ -37,8 +37,8 @@ #error isa.h is included from PC-9801 source #endif -#ifndef _I386_ISA_ISA_H_ -#define _I386_ISA_ISA_H_ +#ifndef _X86_ISA_ISA_H_ +#define _X86_ISA_ISA_H_ /* BEWARE: Included in both assembler and C code */ @@ -99,4 +99,4 @@ #define RAM_SIZE (RAM_END - RAM_BEGIN) #endif /* !RAM_BEGIN */ -#endif /* !_I386_ISA_ISA_H_ */ +#endif /* !_X86_ISA_ISA_H_ */ Index: Sandvine/sys/x86/isa/icu.h =================================================================== --- Sandvine/sys/x86/isa/icu.h (revision 0) +++ Sandvine/sys/x86/isa/icu.h (working copy) @@ -38,8 +38,8 @@ * W. Jolitz 8/89 */ -#ifndef _I386_ISA_ICU_H_ -#define _I386_ISA_ICU_H_ +#ifndef _X86_ISA_ICU_H_ +#define _X86_ISA_ICU_H_ #ifdef PC98 #define ICU_IMR_OFFSET 2 @@ -50,4 +50,4 @@ void atpic_handle_intr(u_int vector, struct trapframe *frame); void atpic_startup(void); -#endif /* !_I386_ISA_ICU_H_ */ +#endif /* !_X86_ISA_ICU_H_ */ Index: Sandvine/sys/x86/isa/clock.c =================================================================== --- Sandvine/sys/x86/isa/clock.c (revision 0) +++ Sandvine/sys/x86/isa/clock.c (working copy) @@ -39,12 +39,13 @@ * Routines to handle clock hardware. */ +#ifndef __amd64__ #include "opt_apic.h" +#endif #include "opt_clock.h" #include "opt_kdtrace.h" #include "opt_isa.h" #include "opt_mca.h" -#include "opt_xbox.h" #include #include @@ -62,7 +63,6 @@ #include #include -#include #include #include #include @@ -480,12 +480,15 @@ mtx_unlock_spin(&clock_lock); } +#ifndef __amd64__ /* * Restore all the timers non-atomically (XXX: should be atomically). * * This function is called from pmtimer_resume() to restore all the timers. * This should not be necessary, but there are broken laptops that do not * restore all the timers on resume. + * As long as pmtimer is not part of amd64 suport, skip this for the amd64 + * case. */ void timer_restore(void) @@ -494,6 +497,7 @@ i8254_restore(); /* restore i8254_freq and hz */ atrtc_restore(); /* reenable RTC interrupts */ } +#endif /* This is separate from startrtclock() so that it can be called early. */ void @@ -523,7 +527,7 @@ cpu_initclocks() { -#ifdef DEV_APIC +#if defined(__amd64__) || defined(DEV_APIC) using_lapic_timer = lapic_setup_clock(); #endif /* @@ -625,11 +629,15 @@ static unsigned i8254_get_timecount(struct timecounter *tc) { + register_t flags; u_int count; u_int high, low; - u_int eflags; - eflags = read_eflags(); +#ifdef __amd64__ + flags = read_rflags(); +#else + flags = read_eflags(); +#endif mtx_lock_spin(&clock_lock); /* Select timer0 and latch counter value. */ @@ -640,7 +648,7 @@ count = i8254_max_count - ((high << 8) | low); if (count < i8254_lastcount || (!i8254_ticked && (clkintr_pending || - ((count < 20 || (!(eflags & PSL_I) && + ((count < 20 || (!(flags & PSL_I) && count < i8254_max_count / 2u)) && i8254_pending != NULL && i8254_pending(i8254_intsrc))))) { i8254_ticked = 1; @@ -678,6 +686,14 @@ return(0); } +static int +attimer_resume(device_t dev) +{ + + i8254_restore(); + return (0); +} + static device_method_t attimer_methods[] = { /* Device interface */ DEVMETHOD(device_probe, attimer_probe), @@ -685,7 +701,7 @@ DEVMETHOD(device_detach, bus_generic_detach), DEVMETHOD(device_shutdown, bus_generic_shutdown), DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_resume, attimer_resume), { 0, 0 } }; Index: Sandvine/sys/x86/isa/isa.c =================================================================== --- Sandvine/sys/x86/isa/isa.c (revision 0) +++ Sandvine/sys/x86/isa/isa.c (working copy) @@ -245,7 +245,7 @@ */ int isa_setup_intr(device_t bus, device_t child, struct resource *r, int flags, - driver_filter_t filter, void (*ihand)(void *), void *arg, + driver_filter_t *filter, void (*ihand)(void *), void *arg, void **cookiep) { return (BUS_SETUP_INTR(device_get_parent(bus), child, r, flags, Index: Sandvine/sys/x86/isa/isa_dma.c =================================================================== --- Sandvine/sys/x86/isa/isa_dma.c (revision 0) +++ Sandvine/sys/x86/isa/isa_dma.c (working copy) @@ -61,6 +61,8 @@ #include #include +#define ISARAM_END RAM_END + static int isa_dmarangecheck(caddr_t va, u_int length, int chan); static caddr_t dma_bouncebuf[8]; @@ -244,7 +246,7 @@ panic("isa_dmastart: channel out of range"); if ((chan < 4 && nbytes > (1<<16)) - || (chan >= 4 && (nbytes > (1<<17) || (u_int)addr & 1))) + || (chan >= 4 && (nbytes > (1<<17) || (uintptr_t)addr & 1))) panic("isa_dmastart: impossible request"); mtx_lock(&isa_dma_lock); @@ -403,7 +405,6 @@ endva = (vm_offset_t)round_page((vm_offset_t)va + length); for (; va < (caddr_t) endva ; va += PAGE_SIZE) { phys = trunc_page(pmap_extract(kernel_pmap, (vm_offset_t)va)); -#define ISARAM_END RAM_END if (phys == 0) panic("isa_dmacheck: no physical page present"); if (phys >= ISARAM_END)