Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Dec 2005 18:52:12 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 88685 for review
Message-ID:  <200512241852.jBOIqC3K041332@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=88685

Change 88685 by imp@imp_harmony on 2005/12/24 18:51:25

	IFC @88682

Affected files ...

.. //depot/projects/arm/src/sys/alpha/alpha/clock.c#5 integrate
.. //depot/projects/arm/src/sys/alpha/alpha/interrupt.c#3 integrate
.. //depot/projects/arm/src/sys/alpha/include/cpu.h#2 integrate
.. //depot/projects/arm/src/sys/alpha/include/cpuconf.h#2 integrate
.. //depot/projects/arm/src/sys/amd64/amd64/db_trace.c#4 integrate
.. //depot/projects/arm/src/sys/amd64/amd64/local_apic.c#7 integrate
.. //depot/projects/arm/src/sys/amd64/amd64/mp_machdep.c#5 integrate
.. //depot/projects/arm/src/sys/amd64/include/apicvar.h#5 integrate
.. //depot/projects/arm/src/sys/amd64/include/clock.h#2 integrate
.. //depot/projects/arm/src/sys/amd64/include/cpu.h#2 integrate
.. //depot/projects/arm/src/sys/amd64/include/frame.h#3 integrate
.. //depot/projects/arm/src/sys/amd64/include/smp.h#5 integrate
.. //depot/projects/arm/src/sys/amd64/isa/clock.c#6 integrate
.. //depot/projects/arm/src/sys/arm/arm/intr.c#8 integrate
.. //depot/projects/arm/src/sys/arm/arm/locore.S#17 integrate
.. //depot/projects/arm/src/sys/arm/include/cpu.h#2 integrate
.. //depot/projects/arm/src/sys/arm/include/frame.h#2 integrate
.. //depot/projects/arm/src/sys/arm/sa11x0/sa11x0_ost.c#2 integrate
.. //depot/projects/arm/src/sys/arm/xscale/i80321/i80321_timer.c#4 integrate
.. //depot/projects/arm/src/sys/arm/xscale/i80321/iq31244_machdep.c#7 integrate
.. //depot/projects/arm/src/sys/boot/i386/libi386/biosmem.c#2 integrate
.. //depot/projects/arm/src/sys/boot/i386/libi386/i386_copy.c#3 integrate
.. //depot/projects/arm/src/sys/boot/i386/libi386/libi386.h#3 integrate
.. //depot/projects/arm/src/sys/boot/i386/loader/main.c#4 integrate
.. //depot/projects/arm/src/sys/boot/pc98/libpc98/biosdisk.c#3 integrate
.. //depot/projects/arm/src/sys/boot/pc98/libpc98/biosmem.c#3 integrate
.. //depot/projects/arm/src/sys/boot/pc98/loader/main.c#3 integrate
.. //depot/projects/arm/src/sys/compat/freebsd32/freebsd32_proto.h#5 integrate
.. //depot/projects/arm/src/sys/compat/freebsd32/freebsd32_syscall.h#5 integrate
.. //depot/projects/arm/src/sys/compat/freebsd32/freebsd32_syscalls.c#5 integrate
.. //depot/projects/arm/src/sys/compat/freebsd32/freebsd32_sysent.c#5 integrate
.. //depot/projects/arm/src/sys/compat/freebsd32/syscalls.master#5 integrate
.. //depot/projects/arm/src/sys/conf/NOTES#9 integrate
.. //depot/projects/arm/src/sys/conf/files#10 integrate
.. //depot/projects/arm/src/sys/dev/acpica/acpi_video.c#4 integrate
.. //depot/projects/arm/src/sys/dev/bge/if_bge.c#6 integrate
.. //depot/projects/arm/src/sys/dev/bge/if_bgereg.h#6 integrate
.. //depot/projects/arm/src/sys/dev/drm/drm_agpsupport.c#3 integrate
.. //depot/projects/arm/src/sys/dev/drm/drm_drv.c#4 integrate
.. //depot/projects/arm/src/sys/dev/drm/i915_drv.c#4 integrate
.. //depot/projects/arm/src/sys/dev/drm/mach64_drv.c#3 integrate
.. //depot/projects/arm/src/sys/dev/drm/mga_drv.c#4 integrate
.. //depot/projects/arm/src/sys/dev/drm/r128_drv.c#4 integrate
.. //depot/projects/arm/src/sys/dev/drm/radeon_drv.c#4 integrate
.. //depot/projects/arm/src/sys/dev/drm/savage_drv.c#3 integrate
.. //depot/projects/arm/src/sys/dev/drm/sis_drv.c#4 integrate
.. //depot/projects/arm/src/sys/dev/drm/tdfx_drv.c#4 integrate
.. //depot/projects/arm/src/sys/dev/em/if_em.c#9 integrate
.. //depot/projects/arm/src/sys/dev/pci/vga_pci.c#1 branch
.. //depot/projects/arm/src/sys/dev/ppbus/if_plip.c#3 integrate
.. //depot/projects/arm/src/sys/dev/ppbus/immio.c#2 integrate
.. //depot/projects/arm/src/sys/dev/ppbus/lpbb.c#2 integrate
.. //depot/projects/arm/src/sys/dev/ppbus/lpt.c#3 integrate
.. //depot/projects/arm/src/sys/dev/ppbus/ppi.c#2 integrate
.. //depot/projects/arm/src/sys/dev/ppbus/pps.c#6 integrate
.. //depot/projects/arm/src/sys/dev/ppc/ppc.c#4 integrate
.. //depot/projects/arm/src/sys/dev/random/nehemiah.c#3 integrate
.. //depot/projects/arm/src/sys/dev/random/randomdev.c#2 integrate
.. //depot/projects/arm/src/sys/dev/random/randomdev.h#2 integrate
.. //depot/projects/arm/src/sys/dev/random/randomdev_soft.c#3 integrate
.. //depot/projects/arm/src/sys/dev/random/randomdev_soft.h#2 integrate
.. //depot/projects/arm/src/sys/dev/random/yarrow.c#3 integrate
.. //depot/projects/arm/src/sys/dev/smbus/smbus.c#4 integrate
.. //depot/projects/arm/src/sys/dev/usb/umass.c#5 integrate
.. //depot/projects/arm/src/sys/i386/conf/NOTES#8 integrate
.. //depot/projects/arm/src/sys/i386/i386/db_trace.c#4 integrate
.. //depot/projects/arm/src/sys/i386/i386/local_apic.c#6 integrate
.. //depot/projects/arm/src/sys/i386/i386/mp_machdep.c#5 integrate
.. //depot/projects/arm/src/sys/i386/include/apicvar.h#4 integrate
.. //depot/projects/arm/src/sys/i386/include/clock.h#4 integrate
.. //depot/projects/arm/src/sys/i386/include/cpu.h#2 integrate
.. //depot/projects/arm/src/sys/i386/include/frame.h#3 integrate
.. //depot/projects/arm/src/sys/i386/include/smp.h#5 integrate
.. //depot/projects/arm/src/sys/i386/isa/clock.c#5 integrate
.. //depot/projects/arm/src/sys/ia64/ia64/interrupt.c#3 integrate
.. //depot/projects/arm/src/sys/ia64/include/cpu.h#2 integrate
.. //depot/projects/arm/src/sys/kern/imgact_aout.c#3 integrate
.. //depot/projects/arm/src/sys/kern/imgact_elf.c#4 integrate
.. //depot/projects/arm/src/sys/kern/imgact_gzip.c#3 integrate
.. //depot/projects/arm/src/sys/kern/init_sysent.c#5 integrate
.. //depot/projects/arm/src/sys/kern/kern_clock.c#4 integrate
.. //depot/projects/arm/src/sys/kern/kern_exit.c#5 integrate
.. //depot/projects/arm/src/sys/kern/kern_lock.c#4 integrate
.. //depot/projects/arm/src/sys/kern/kern_sig.c#6 integrate
.. //depot/projects/arm/src/sys/kern/subr_sbuf.c#2 integrate
.. //depot/projects/arm/src/sys/kern/subr_taskqueue.c#3 integrate
.. //depot/projects/arm/src/sys/kern/sys_process.c#3 integrate
.. //depot/projects/arm/src/sys/kern/syscalls.c#5 integrate
.. //depot/projects/arm/src/sys/kern/syscalls.master#6 integrate
.. //depot/projects/arm/src/sys/modules/Makefile#7 integrate
.. //depot/projects/arm/src/sys/modules/i2c/controllers/Makefile#3 integrate
.. //depot/projects/arm/src/sys/modules/i2c/controllers/amdsmb/Makefile#1 branch
.. //depot/projects/arm/src/sys/modules/i2c/controllers/nfsmb/Makefile#1 branch
.. //depot/projects/arm/src/sys/net/if_bridge.c#4 integrate
.. //depot/projects/arm/src/sys/net/if_ethersubr.c#7 integrate
.. //depot/projects/arm/src/sys/net/if_gif.c#3 integrate
.. //depot/projects/arm/src/sys/net/if_gif.h#3 integrate
.. //depot/projects/arm/src/sys/netatm/uni/unisig_encode.c#2 integrate
.. //depot/projects/arm/src/sys/netgraph/ng_source.c#4 integrate
.. //depot/projects/arm/src/sys/netgraph/ng_source.h#4 integrate
.. //depot/projects/arm/src/sys/netinet/in_gif.c#3 integrate
.. //depot/projects/arm/src/sys/netinet/in_proto.c#4 integrate
.. //depot/projects/arm/src/sys/netinet6/in6_gif.c#3 integrate
.. //depot/projects/arm/src/sys/pc98/cbus/clock.c#2 integrate
.. //depot/projects/arm/src/sys/pc98/conf/NOTES#6 integrate
.. //depot/projects/arm/src/sys/pci/agp_ali.c#3 integrate
.. //depot/projects/arm/src/sys/pci/agp_amd.c#3 integrate
.. //depot/projects/arm/src/sys/pci/agp_amd64.c#4 integrate
.. //depot/projects/arm/src/sys/pci/agp_ati.c#2 integrate
.. //depot/projects/arm/src/sys/pci/agp_i810.c#4 integrate
.. //depot/projects/arm/src/sys/pci/agp_intel.c#4 integrate
.. //depot/projects/arm/src/sys/pci/agp_nvidia.c#4 integrate
.. //depot/projects/arm/src/sys/pci/agp_sis.c#3 integrate
.. //depot/projects/arm/src/sys/pci/agp_via.c#4 integrate
.. //depot/projects/arm/src/sys/pci/agpreg.h#4 integrate
.. //depot/projects/arm/src/sys/pci/amdsmb.c#1 branch
.. //depot/projects/arm/src/sys/pci/if_de.c#6 integrate
.. //depot/projects/arm/src/sys/pci/if_devar.h#5 integrate
.. //depot/projects/arm/src/sys/pci/nfsmb.c#1 branch
.. //depot/projects/arm/src/sys/powerpc/conf/Makefile#1 branch
.. //depot/projects/arm/src/sys/powerpc/conf/NOTES#1 branch
.. //depot/projects/arm/src/sys/powerpc/include/clock.h#2 integrate
.. //depot/projects/arm/src/sys/powerpc/include/cpu.h#2 integrate
.. //depot/projects/arm/src/sys/powerpc/include/frame.h#3 integrate
.. //depot/projects/arm/src/sys/powerpc/powerpc/clock.c#2 integrate
.. //depot/projects/arm/src/sys/powerpc/powerpc/db_trace.c#3 integrate
.. //depot/projects/arm/src/sys/powerpc/powerpc/interrupt.c#2 integrate
.. //depot/projects/arm/src/sys/powerpc/powerpc/trap_subr.S#3 integrate
.. //depot/projects/arm/src/sys/sparc64/conf/GENERIC#7 integrate
.. //depot/projects/arm/src/sys/sparc64/include/cpu.h#2 integrate
.. //depot/projects/arm/src/sys/sparc64/include/frame.h#2 integrate
.. //depot/projects/arm/src/sys/sparc64/sparc64/tick.c#3 integrate
.. //depot/projects/arm/src/sys/sys/param.h#7 integrate
.. //depot/projects/arm/src/sys/sys/syscall.h#5 integrate
.. //depot/projects/arm/src/sys/sys/syscall.mk#5 integrate
.. //depot/projects/arm/src/sys/sys/sysproto.h#5 integrate
.. //depot/projects/arm/src/sys/sys/systm.h#6 integrate
.. //depot/projects/arm/src/sys/ufs/ffs/ffs_softdep.c#5 integrate

Differences ...

==== //depot/projects/arm/src/sys/alpha/alpha/clock.c#5 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/clock.c,v 1.41 2005/12/14 21:42:12 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/clock.c,v 1.42 2005/12/22 22:16:04 jhb Exp $");
 
 #include "opt_clock.h"
 
@@ -157,7 +157,7 @@
 static u_int32_t max_cycles_per_tick;
 static u_int32_t last_time;
 
-static void handleclock(void* arg);
+static void handleclock(int usermode, uintfptr_t pc);
 static void calibrate_clocks(u_int32_t firmware_freq, u_int32_t *pcc,
     u_int32_t *timer);
 static void set_timer_freq(u_int freq, int intr_freq);
@@ -230,8 +230,7 @@
  */
 
 /*
- * Start the real-time and statistics clocks. Leave stathz 0 since there
- * are no other timers available.
+ * Start the real-time and statistics clocks.
  */
 void
 cpu_initclocks()
@@ -275,7 +274,9 @@
 	 */
 	if (hwrpb->rpb_type != ST_DEC_21000) {
 		tc_init(&i8254_timecounter);
-	}
+		platform.clockintr = handleclock;
+	} else
+		platform.clockintr = hardclock;
 
 	if (ncpus == 1) {
 		alpha_timecounter.tc_frequency = freq;
@@ -283,7 +284,7 @@
 	}
 
 	stathz = hz / 8;
-	platform.clockintr = (void (*)(void *)) handleclock;
+	profhz = hz;
 
 	/*
 	 * Get the clock started.
@@ -424,27 +425,23 @@
 }
 
 static void
-handleclock(void *arg)
+handleclock(int usermode, uintfptr_t pc)
 {
-	/*
-	 * XXX: TurboLaser doesn't have an i8254 counter.
-	 * XXX: A replacement is needed, and another method
-	 * XXX: of determining this would be nice.
-	 */
-	if (hwrpb->rpb_type != ST_DEC_21000) {
-		if (timecounter->tc_get_timecount == i8254_get_timecount) {
-			mtx_lock_spin(&clock_lock);
-			if (i8254_ticked)
-				i8254_ticked = 0;
-			else {
-				i8254_offset += timer0_max_count;
-				i8254_lastcount = 0;
-			}
-			clkintr_pending = 0;
-			mtx_unlock_spin(&clock_lock);
+
+	KASSERT(hwrpb->rpb_type != ST_DEC_21000,
+	    ("custom clock handler called on TurboLaser"));
+	if (timecounter->tc_get_timecount == i8254_get_timecount) {
+		mtx_lock_spin(&clock_lock);
+		if (i8254_ticked)
+			i8254_ticked = 0;
+		else {
+			i8254_offset += timer0_max_count;
+			i8254_lastcount = 0;
 		}
+		clkintr_pending = 0;
+		mtx_unlock_spin(&clock_lock);
 	}
-	hardclock(arg);
+	hardclock(usermode, pc);
 }
 
 void

==== //depot/projects/arm/src/sys/alpha/alpha/interrupt.c#3 (text+ko) ====

@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 /* __KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.23 1998/02/24 07:38:01 thorpej Exp $");*/
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/interrupt.c,v 1.88 2005/10/25 19:48:45 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/interrupt.c,v 1.89 2005/12/22 22:16:04 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -489,23 +489,21 @@
 		 */
 		if (PCPU_GET(cpuid) == 0) {
 #endif
-			(*platform.clockintr)(framep);
-			/* divide hz (1024) by 8 to get stathz (128) */
-			if ((++schedclk2 & 0x7) == 0) {
-				if (profprocs != 0)
-					profclock((struct clockframe *)framep);
-				statclock((struct clockframe *)framep);
-			}
+			(*platform.clockintr)(TRAPF_USERMODE(framep),
+			    TRAPF_PC(framep));
+
+			/* Bump stathz divider. */
+			schedclk2++;
 #ifdef SMP
-		} else {
-			hardclock_process((struct clockframe *)framep);
-			if ((schedclk2 & 0x7) == 0) {
-				if (profprocs != 0)
-					profclock((struct clockframe *)framep);
-				statclock((struct clockframe *)framep);
-			}
-		}
+		} else
+			hardclock_cpu(TRAPF_USERMODE(framep));
 #endif
+		if (profprocs != 0)
+			profclock(TRAPF_USERMODE(framep), TRAPF_PC(framep));
+
+		/* divide hz (1024) by 8 to get stathz (128) */
+		if ((schedclk2 & 0x7) == 0)
+			statclock(TRAPF_USERMODE(framep));
 		critical_exit();
 	}
 }

==== //depot/projects/arm/src/sys/alpha/include/cpu.h#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/alpha/include/cpu.h,v 1.42 2005/01/05 20:05:50 imp Exp $ */
+/* $FreeBSD: src/sys/alpha/include/cpu.h,v 1.43 2005/12/22 22:16:04 jhb Exp $ */
 /* From: NetBSD: cpu.h,v 1.18 1997/09/23 23:17:49 mjacob Exp */
 
 /*-
@@ -48,21 +48,10 @@
 
 #include <machine/frame.h>
 
-/*
- * Arguments to hardclock and gatherstats encapsulate the previous
- * machine state in an opaque clockframe.  One the Alpha, we use
- * what we push on an interrupt (a trapframe).
- */
-struct clockframe {
-	struct trapframe	cf_tf;
-};
 #define	TRAPF_USERMODE(framep)						\
 	(((framep)->tf_regs[FRAME_PS] & ALPHA_PSL_USERMODE) != 0)
 #define	TRAPF_PC(framep)	((framep)->tf_regs[FRAME_PC])
 
-#define	CLKF_USERMODE(framep)	TRAPF_USERMODE(&(framep)->cf_tf)
-#define	CLKF_PC(framep)		TRAPF_PC(&(framep)->cf_tf)
-
 /*
  * CTL_MACHDEP definitions.
  */

==== //depot/projects/arm/src/sys/alpha/include/cpuconf.h#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/alpha/include/cpuconf.h,v 1.14 2005/01/31 23:07:42 ticso Exp $ */
+/* $FreeBSD: src/sys/alpha/include/cpuconf.h,v 1.15 2005/12/22 22:16:04 jhb Exp $ */
 /*	$NetBSD: cpuconf.h,v 1.7 1997/11/06 00:42:03 thorpej Exp $	*/
 #ifndef	_ALPHA_CPUCONF_H
 #define	_ALPHA_CPUCONF_H
@@ -68,7 +68,7 @@
 	void	(*cons_init)(void);
 	void	(*device_register)(struct device *, void *);
 	void	(*iointr)(void *, unsigned long);
-	void	(*clockintr)(void *);
+	void	(*clockintr)(int, uintfptr_t);
 	void	(*mcheck_handler)(unsigned long, struct trapframe *,
 		unsigned long, unsigned long);
 	void	(*cpu_idle)(void);

==== //depot/projects/arm/src/sys/amd64/amd64/db_trace.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.71 2005/12/08 18:33:29 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.72 2005/12/23 21:33:55 jeff Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -180,7 +180,7 @@
  * Stack trace.
  */
 #define	INKERNEL(va) (((va) >= DMAP_MIN_ADDRESS && (va) < DMAP_MAX_ADDRESS) \
-	    || (va) >= KERNBASE)
+	    || ((va) >= KERNBASE && (va) < VM_MAX_KERNEL_ADDRESS))
 
 struct amd64_frame {
 	struct amd64_frame	*f_frame;
@@ -515,6 +515,10 @@
 			break;
 		if (stack_put(st, callpc) == -1)
 			break;
+		if (frame->f_frame <= frame ||
+		    (vm_offset_t)frame->f_frame >=
+		    (vm_offset_t)rbp + KSTACK_PAGES * PAGE_SIZE)
+			break;
 		frame = frame->f_frame;
 	}
 }

==== //depot/projects/arm/src/sys/amd64/amd64/local_apic.c#7 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.22 2005/12/13 18:29:09 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.23 2005/12/22 22:16:05 jhb Exp $");
 
 #include "opt_hwpmc_hooks.h"
 
@@ -51,6 +51,7 @@
 #include <vm/pmap.h>
 
 #include <machine/apicreg.h>
+#include <machine/cpu.h>
 #include <machine/cputypes.h>
 #include <machine/frame.h>
 #include <machine/intr_machdep.h>
@@ -617,7 +618,7 @@
 }
 
 void
-lapic_handle_timer(struct clockframe frame)
+lapic_handle_timer(struct trapframe frame)
 {
 	struct lapic *la;
 
@@ -634,16 +635,16 @@
 	if (la->la_hard_ticks >= lapic_timer_hz) {
 		la->la_hard_ticks -= lapic_timer_hz;
 		if (PCPU_GET(cpuid) == 0)
-			hardclock(&frame);
+			hardclock(TRAPF_USERMODE(&frame), TRAPF_PC(&frame));
 		else
-			hardclock_process(&frame);
+			hardclock_cpu(TRAPF_USERMODE(&frame));
 	}
 
 	/* Fire statclock at stathz. */
 	la->la_stat_ticks += stathz;
 	if (la->la_stat_ticks >= lapic_timer_hz) {
 		la->la_stat_ticks -= lapic_timer_hz;
-		statclock(&frame);
+		statclock(TRAPF_USERMODE(&frame));
 	}
 
 	/* Fire profclock at profhz, but only when needed. */
@@ -651,7 +652,7 @@
 	if (la->la_prof_ticks >= lapic_timer_hz) {
 		la->la_prof_ticks -= lapic_timer_hz;
 		if (profprocs != 0)
-			profclock(&frame);
+			profclock(TRAPF_USERMODE(&frame), TRAPF_PC(&frame));
 	}
 	critical_exit();
 }

==== //depot/projects/arm/src/sys/amd64/amd64/mp_machdep.c#5 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.266 2005/12/08 18:33:29 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.267 2005/12/22 22:16:05 jhb Exp $");
 
 #include "opt_cpu.h"
 #include "opt_kstack_pages.h"
@@ -917,7 +917,7 @@
 }
 
 void
-ipi_bitmap_handler(struct clockframe frame)
+ipi_bitmap_handler(struct trapframe frame)
 {
 	int cpu = PCPU_GET(cpuid);
 	u_int ipi_bitmap;

==== //depot/projects/arm/src/sys/amd64/include/apicvar.h#5 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.15 2005/12/08 18:33:30 jhb Exp $
+ * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.16 2005/12/22 22:16:05 jhb Exp $
  */
 
 #ifndef _MACHINE_APICVAR_H_
@@ -202,7 +202,7 @@
 void	lapic_ipi_vectored(u_int vector, int dest);
 int	lapic_ipi_wait(int delay);
 void	lapic_handle_intr(int vector, struct trapframe frame);
-void	lapic_handle_timer(struct clockframe frame);
+void	lapic_handle_timer(struct trapframe frame);
 void	lapic_set_logical_id(u_int apic_id, u_int cluster, u_int cluster_id);
 int	lapic_set_lvt_mask(u_int apic_id, u_int lvt, u_char masked);
 int	lapic_set_lvt_mode(u_int apic_id, u_int lvt, u_int32_t mode);

==== //depot/projects/arm/src/sys/amd64/include/clock.h#2 (text+ko) ====

@@ -3,7 +3,7 @@
  * Garrett Wollman, September 1994.
  * This file is in the public domain.
  *
- * $FreeBSD: src/sys/amd64/include/clock.h,v 1.50 2005/01/05 20:17:20 imp Exp $
+ * $FreeBSD: src/sys/amd64/include/clock.h,v 1.51 2005/12/22 22:16:05 jhb Exp $
  */
 
 #ifndef _MACHINE_CLOCK_H_
@@ -29,7 +29,6 @@
 /*
  * Driver to clock driver interface.
  */
-struct clockframe;
 
 int	acquire_timer2(int mode);
 int	release_timer2(void);

==== //depot/projects/arm/src/sys/amd64/include/cpu.h#2 (text+ko) ====

@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)cpu.h	5.4 (Berkeley) 5/9/91
- * $FreeBSD: src/sys/amd64/include/cpu.h,v 1.74 2004/08/03 18:44:26 mux Exp $
+ * $FreeBSD: src/sys/amd64/include/cpu.h,v 1.75 2005/12/22 22:16:05 jhb Exp $
  */
 
 #ifndef _MACHINE_CPU_H_
@@ -59,10 +59,6 @@
 	(ISPL((framep)->tf_cs) == SEL_UPL)
 #define	TRAPF_PC(framep)	((framep)->tf_rip)
 
-#define	CLKF_USERMODE(framep) \
-	(ISPL((framep)->cf_cs) == SEL_UPL)
-#define	CLKF_PC(framep)		((framep)->cf_rip)
-
 /*
  * CTL_MACHDEP definitions.
  */

==== //depot/projects/arm/src/sys/amd64/include/frame.h#3 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)frame.h	5.2 (Berkeley) 1/18/91
- * $FreeBSD: src/sys/amd64/include/frame.h,v 1.29 2005/12/08 18:33:30 jhb Exp $
+ * $FreeBSD: src/sys/amd64/include/frame.h,v 1.30 2005/12/22 22:16:05 jhb Exp $
  */
 
 #ifndef _MACHINE_FRAME_H_
@@ -76,34 +76,4 @@
 	register_t	tf_ss;
 };
 
-/* frame of clock (same as interrupt frame) */
-
-struct clockframe {
-	register_t	cf_rdi;
-	register_t	cf_rsi;
-	register_t	cf_rdx;
-	register_t	cf_rcx;
-	register_t	cf_r8;
-	register_t	cf_r9;
-	register_t	cf_rax;
-	register_t	cf_rbx;
-	register_t	cf_rbp;
-	register_t	cf_r10;
-	register_t	cf_r11;
-	register_t	cf_r12;
-	register_t	cf_r13;
-	register_t	cf_r14;
-	register_t	cf_r15;
-	register_t	:64;		/* compat with trap frame - trapno */
-	register_t	:64;		/* compat with trap frame - addr */
-	register_t	:64;		/* compat with trap frame - flags */
-	register_t	:64;		/* compat with trap frame - err */
-	/* below portion defined in hardware */
-	register_t	cf_rip;
-	register_t	cf_cs;
-	register_t	cf_rflags;
-	register_t	cf_rsp;
-	register_t	cf_ss;
-};
-
 #endif /* _MACHINE_FRAME_H_ */

==== //depot/projects/arm/src/sys/amd64/include/smp.h#5 (text+ko) ====

@@ -6,7 +6,7 @@
  * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
  * ----------------------------------------------------------------------------
  *
- * $FreeBSD: src/sys/amd64/include/smp.h,v 1.86 2005/12/08 18:33:30 jhb Exp $
+ * $FreeBSD: src/sys/amd64/include/smp.h,v 1.87 2005/12/22 22:16:05 jhb Exp $
  *
  */
 
@@ -52,7 +52,7 @@
 void	ipi_all(u_int ipi);
 void	ipi_all_but_self(u_int ipi);
 void	ipi_self(u_int ipi);
-void 	ipi_bitmap_handler(struct clockframe frame);
+void 	ipi_bitmap_handler(struct trapframe frame);
 u_int	mp_bootaddress(u_int);
 int	mp_grab_cpu_hlt(void);
 void	mp_topology(void);

==== //depot/projects/arm/src/sys/amd64/isa/clock.c#6 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/isa/clock.c,v 1.223 2005/12/12 22:27:07 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/isa/clock.c,v 1.224 2005/12/22 22:16:05 jhb Exp $");
 
 /*
  * Routines to handle clock hardware.
@@ -67,6 +67,7 @@
 #include <sys/power.h>
 
 #include <machine/clock.h>
+#include <machine/cpu.h>
 #include <machine/frame.h>
 #include <machine/intr_machdep.h>
 #include <machine/md_var.h>
@@ -141,7 +142,7 @@
 };
 
 static void
-clkintr(struct clockframe *frame)
+clkintr(struct trapframe *frame)
 {
 
 	if (timecounter->tc_get_timecount == i8254_get_timecount) {
@@ -155,8 +156,8 @@
 		clkintr_pending = 0;
 		mtx_unlock_spin(&clock_lock);
 	}
-	if (!using_lapic_timer)
-		hardclock(frame);
+	KASSERT(!using_lapic_timer, ("clk interrupt enabled with lapic timer"));
+	hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame));
 }
 
 int
@@ -212,17 +213,17 @@
  * in the statistics, but the stat clock will no longer stop.
  */
 static void
-rtcintr(struct clockframe *frame)
+rtcintr(struct trapframe *frame)
 {
 
 	while (rtcin(RTC_INTR) & RTCIR_PERIOD) {
 		if (profprocs != 0) {
 			if (--pscnt == 0)
 				pscnt = psdiv;
-			profclock(frame);
+			profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame));
 		}
 		if (pscnt == psdiv)
-			statclock(frame);
+			statclock(TRAPF_USERMODE(frame));
 	}
 }
 

==== //depot/projects/arm/src/sys/arm/arm/intr.c#8 (text+ko) ====

@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.11 2005/10/25 19:48:46 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.12 2005/12/22 22:16:06 jhb Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/syslog.h> 
@@ -55,7 +55,7 @@
 static int intrcnt_index = 0;
 static int last_printed = 0;
 
-void	arm_handler_execute(void *, int);
+void	arm_handler_execute(struct trapframe *, int);
 
 void
 arm_setup_irqhandler(const char *name, void (*hand)(void*), void *arg, 
@@ -99,7 +99,7 @@
 }
 
 void
-arm_handler_execute(void *frame, int irqnb)
+arm_handler_execute(struct trapframe *frame, int irqnb)
 {
 	struct intr_event *event;
 	struct intr_handler *ih;

==== //depot/projects/arm/src/sys/arm/arm/locore.S#17 (text+ko) ====

@@ -37,7 +37,7 @@
 #include <machine/asm.h>
 #include <machine/armreg.h>
 #include <machine/pte.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/locore.S,v 1.12 2005/12/20 01:29:17 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/locore.S,v 1.13 2005/12/21 15:02:31 cognet Exp $");
 
 /* What size should this really be ? It is only used by init_arm() */
 #define INIT_ARM_STACK_SIZE	2048
@@ -140,6 +140,9 @@
 Lstart_off:	.word start_inram-_C_LABEL(_start)
 start_inram:
 	adr	r7, Lunmapped
+	bic     r7, r7, #0xff000000
+	orr     r7, r7, #PHYSADDR
+			
 
 	/* Disable MMU for a while */
 	mrc     p15, 0, r2, c1, c0, 0
@@ -160,8 +163,6 @@
 	/* build page table from scratch */
 	ldr	r0, Lstartup_pagetable
 	adr	r4, mmu_init_table
-	bic	r4, r4, #0xff000000
-	orr	r4, r4, #PHYSADDR
 	b	3f
 
 2:

==== //depot/projects/arm/src/sys/arm/include/cpu.h#2 (text+ko) ====

@@ -1,5 +1,5 @@
 /* $NetBSD: cpu.h,v 1.2 2001/02/23 21:23:52 reinoud Exp $ */
-/* $FreeBSD: src/sys/arm/include/cpu.h,v 1.4 2005/02/01 06:36:27 njl Exp $ */
+/* $FreeBSD: src/sys/arm/include/cpu.h,v 1.5 2005/12/22 22:16:06 jhb Exp $ */
 
 #ifndef MACHINE_CPU_H
 #define MACHINE_CPU_H
@@ -29,10 +29,7 @@
 #define CPU_MAXID               6       /* number of valid machdep ids */
 
 
-#define CLKF_USERMODE(frame)    ((frame->if_spsr & PSR_MODE) == PSR_USR32_MODE)
-
 #define TRAPF_USERMODE(frame)	((frame->tf_spsr & PSR_MODE) == PSR_USR32_MODE)
-#define CLKF_PC(frame)          (frame->if_pc)
 
 #define TRAPF_PC(tfp)		((tfp)->tf_pc)
 

==== //depot/projects/arm/src/sys/arm/include/frame.h#2 (text+ko) ====

@@ -42,7 +42,7 @@
  *
  * Created      : 30/09/94
  *
- * $FreeBSD: src/sys/arm/include/frame.h,v 1.3 2005/01/05 21:58:48 imp Exp $
+ * $FreeBSD: src/sys/arm/include/frame.h,v 1.4 2005/12/22 22:16:06 jhb Exp $
  *
  */
 
@@ -137,28 +137,6 @@
 	unsigned int if_pc;
 } irqframe_t;
 
-typedef struct clockframe {
-	unsigned int if_spsr;
-	unsigned int if_r0;
-	unsigned int if_r1;
-	unsigned int if_r2;
-	unsigned int if_r3;
-	unsigned int if_r4;
-	unsigned int if_r5;
-	unsigned int if_r6;
-	unsigned int if_r7;
-	unsigned int if_r8;
-	unsigned int if_r9;
-	unsigned int if_r10;
-	unsigned int if_r11;
-	unsigned int if_r12;
-	unsigned int if_usr_sp;
-	unsigned int if_usr_lr;
-	unsigned int if_svc_sp;
-	unsigned int if_svc_lr;
-	unsigned int if_pc;
-} clockframe_t;
-
 /*
  * Switch frame
  */

==== //depot/projects/arm/src/sys/arm/sa11x0/sa11x0_ost.c#2 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0_ost.c,v 1.3 2005/01/05 21:58:48 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0_ost.c,v 1.4 2005/12/22 22:16:06 jhb Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -54,7 +54,9 @@
 #include <machine/resource.h>
 #include <machine/intr.h>
 
+#include <machine/cpu.h>
 #include <machine/cpufunc.h>
+#include <machine/frame.h>
 
 #include <machine/katelib.h>
 
@@ -144,7 +146,7 @@
 clockintr(arg)
 	void *arg;
 {
-	struct clockframe *frame = arg;
+	struct trapframe *frame = arg;
 	u_int32_t oscr, nextmatch, oldmatch;
 	int s;
 
@@ -179,7 +181,7 @@
 	saost_sc->sc_clock_count = nextmatch;
 	bus_space_write_4(saost_sc->sc_iot, saost_sc->sc_ioh, SAOST_MR0,
 			  nextmatch);
-	hardclock(frame);
+	hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame));
 #if 0
 	mtx_unlock_spin(&clock_lock);
 #endif
@@ -190,7 +192,7 @@
 statintr(arg)
 	void *arg;
 {
-	struct clockframe *frame = arg;
+	struct trapframe *frame = arg;
 	u_int32_t oscr, nextmatch, oldmatch;
 	int s;
 
@@ -225,7 +227,7 @@
 	}
 
 	saost_sc->sc_statclock_count = nextmatch;
-	statclock(frame);
+	statclock(TRAPF_USERMODE(frame));
 
 }
 #endif

==== //depot/projects/arm/src/sys/arm/xscale/i80321/i80321_timer.c#4 (text+ko) ====

@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_timer.c,v 1.8 2005/12/09 23:52:51 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_timer.c,v 1.9 2005/12/22 22:16:06 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -53,7 +53,9 @@
 #include <sys/timetc.h>
 
 #include <machine/bus.h>
+#include <machine/cpu.h>
 #include <machine/cpufunc.h>
+#include <machine/frame.h>
 #include <machine/resource.h>
 #include <machine/intr.h>
 #include <arm/xscale/i80321/i80321reg.h>
@@ -377,11 +379,11 @@
 void
 clockhandler(void *arg)
 {
-	struct clockframe *frame = arg;
+	struct trapframe *frame = arg;
 
 	ticked++;
 	tisr_write(TISR_TMR0);
-	hardclock(frame);
+	hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame));
 
 	if (i80321_hardclock_hook != NULL)
 		(*i80321_hardclock_hook)();

==== //depot/projects/arm/src/sys/arm/xscale/i80321/iq31244_machdep.c#7 (text+ko) ====

@@ -49,7 +49,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.17 2005/12/09 23:54:50 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.18 2005/12/21 15:01:49 cognet Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -94,7 +94,6 @@
 #include <machine/bus.h>
 #include <sys/reboot.h>
 
-#undef DDB
 #include <arm/xscale/i80321/i80321reg.h>
 #include <arm/xscale/i80321/i80321var.h>
 #include <arm/xscale/i80321/iq80321reg.h>

==== //depot/projects/arm/src/sys/boot/i386/libi386/biosmem.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/biosmem.c,v 1.7 2003/08/25 23:28:31 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/biosmem.c,v 1.8 2005/12/21 02:17:58 sobomax Exp $");
 
 /*
  * Obtain memory configuration information from the BIOS
@@ -34,7 +34,7 @@
 #include "libi386.h"
 #include "btxv86.h"
 
-vm_offset_t	memtop;
+vm_offset_t	memtop, memtop_copyin;
 u_int32_t	bios_basemem, bios_extmem;
 
 #define SMAPSIG	0x534D4150
@@ -101,7 +101,7 @@
     }
 
     /* Set memtop to actual top of memory */
-    memtop = 0x100000 + bios_extmem;
+    memtop = memtop_copyin = 0x100000 + bios_extmem;
 
 }    
 

==== //depot/projects/arm/src/sys/boot/i386/libi386/i386_copy.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/i386_copy.c,v 1.11 2005/12/19 09:00:11 sobomax Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/i386_copy.c,v 1.12 2005/12/21 02:17:58 sobomax Exp $");
 
 /*
  * MD primitives supporting placement of module data 
@@ -66,7 +66,7 @@
 i386_readin(const int fd, vm_offset_t dest, const size_t len)
 {
 
-    if (dest + len >= memtop) {
+    if (dest + len >= memtop_copyin) {
 	errno = EFBIG;
 	return(-1);
     }

==== //depot/projects/arm/src/sys/boot/i386/libi386/libi386.h#3 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/boot/i386/libi386/libi386.h,v 1.22 2005/09/22 15:14:12 ru Exp $
+ * $FreeBSD: src/sys/boot/i386/libi386/libi386.h,v 1.23 2005/12/21 02:17:58 sobomax Exp $
  */
 
 
@@ -91,7 +91,10 @@
 void	bios_getmem(void);
 extern u_int32_t	bios_basemem;				/* base memory in bytes */
 extern u_int32_t	bios_extmem;				/* extended memory in bytes */
-extern vm_offset_t	memtop;
+extern vm_offset_t	memtop;		/* last address of physical memory + 1 */
+extern vm_offset_t	memtop_copyin;	/* memtop less heap size for the cases */
+					/*  when heap is at the top of extended memory */
+					/*  for other cases - just the same as memtop */
 
 int biospci_find_devclass(uint32_t class, int index);
 int biospci_write_config(uint32_t locator, int offset, int width, int val);

==== //depot/projects/arm/src/sys/boot/i386/loader/main.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/loader/main.c,v 1.35 2005/12/19 18:39:01 sobomax Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/loader/main.c,v 1.36 2005/12/21 02:17:58 sobomax Exp $");
 
 /*
  * MD bootstrap main() and assorted miscellaneous
@@ -92,8 +92,9 @@
     bios_getmem();
 
 #ifdef LOADER_BZIP2_SUPPORT
-    heap_top = PTOV(0x400000);
-    heap_bottom = PTOV(0x100000);
+    heap_top = PTOV(memtop_copyin);
+    memtop_copyin -= 0x300000;
+    heap_bottom = PTOV(memtop_copyin);
 #else
     heap_top = (void *)bios_basemem;
     heap_bottom = (void *)end;

==== //depot/projects/arm/src/sys/boot/pc98/libpc98/biosdisk.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/biosdisk.c,v 1.32 2005/05/08 14:17:28 nyan Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/biosdisk.c,v 1.33 2005/12/21 06:09:09 nyan Exp $");
 
 /*
  * BIOS disk device handling.
@@ -754,16 +754,18 @@
     p = dest;
 
     /* Decide whether we have to bounce */
-    if (((VTOP(dest) >> 16) != (VTOP(dest + blks * BIOSDISK_SECSIZE) >> 16))) {
+    if (VTOP(dest) >> 20 != 0 ||
+	((VTOP(dest) >> 16) != (VTOP(dest + blks * BIOSDISK_SECSIZE) >> 16))) {
 
 	/* 
-	 * There is a 64k physical boundary somewhere in the destination buffer, so we have
+	 * There is a 64k physical boundary somewhere in the destination buffer, or the

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200512241852.jBOIqC3K041332>