Module Name:    src
Committed By:   mrg
Date:           Wed Nov  6 20:19:03 UTC 2013

Modified Files:
        src/sys/arch/x86/x86: i8259.c mpbios.c pmap.c

Log Message:
gcc 4.8 issues:
- avoid running over the end of an array (this is a real bug, but
  i didn't really look closely at what memory is clobbered.  it
  may not actually matter.)
- move variables inside their #if usage.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/x86/x86/i8259.c
cvs rdiff -u -r1.61 -r1.62 src/sys/arch/x86/x86/mpbios.c
cvs rdiff -u -r1.180 -r1.181 src/sys/arch/x86/x86/pmap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/x86/x86/i8259.c
diff -u src/sys/arch/x86/x86/i8259.c:1.15 src/sys/arch/x86/x86/i8259.c:1.16
--- src/sys/arch/x86/x86/i8259.c:1.15	Thu Dec 18 12:18:20 2008
+++ src/sys/arch/x86/x86/i8259.c	Wed Nov  6 20:19:03 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: i8259.c,v 1.15 2008/12/18 12:18:20 cegger Exp $	*/
+/*	$NetBSD: i8259.c,v 1.16 2013/11/06 20:19:03 mrg Exp $	*/
 
 /*
  * Copyright 2002 (c) Wasabi Systems, Inc.
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i8259.c,v 1.15 2008/12/18 12:18:20 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i8259.c,v 1.16 2013/11/06 20:19:03 mrg Exp $");
 
 #include <sys/param.h> 
 #include <sys/systm.h>
@@ -233,9 +233,11 @@ i8259_reinit_irqs(void)
 {
 	int irqs, irq;
 	struct cpu_info *ci = &cpu_info_primary;
+	const size_t array_len = MIN(__arraycount(ci->ci_isources),
+				     NUM_LEGACY_IRQS);
 
 	irqs = 0;
-	for (irq = 0; irq < NUM_LEGACY_IRQS; irq++)
+	for (irq = 0; irq < array_len; irq++)
 		if (ci->ci_isources[irq] != NULL)
 			irqs |= 1 << irq;
 	if (irqs >= 0x100) /* any IRQs >= 8 in use */

Index: src/sys/arch/x86/x86/mpbios.c
diff -u src/sys/arch/x86/x86/mpbios.c:1.61 src/sys/arch/x86/x86/mpbios.c:1.62
--- src/sys/arch/x86/x86/mpbios.c:1.61	Wed Aug 21 16:37:31 2013
+++ src/sys/arch/x86/x86/mpbios.c	Wed Nov  6 20:19:03 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: mpbios.c,v 1.61 2013/08/21 16:37:31 christos Exp $	*/
+/*	$NetBSD: mpbios.c,v 1.62 2013/11/06 20:19:03 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpbios.c,v 1.61 2013/08/21 16:37:31 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpbios.c,v 1.62 2013/11/06 20:19:03 mrg Exp $");
 
 #include "acpica.h"
 #include "lapic.h"
@@ -552,7 +552,9 @@ mpbios_scan(device_t self, int *ncpup)
 	int		count;
 	int		type;
 	int		intr_cnt, cur_intr;
+#if NLAPIC > 0
 	paddr_t		lapic_base;
+#endif
 	const struct dflt_conf_entry *dflt_conf;
 	const int *dflt_bus_irq;
 	const struct mpbios_int *iep;
@@ -580,11 +582,11 @@ mpbios_scan(device_t self, int *ncpup)
 #if NACPICA > 0
 	if (mpacpi_ncpu == 0) {
 #endif
+#if NLAPIC > 0
 		lapic_base = LAPIC_BASE;
 		if (mp_cth != NULL)
 			lapic_base = (paddr_t)mp_cth->apic_address;
 
-#if NLAPIC > 0
 		lapic_boot_init(lapic_base);
 #endif
 #if NACPICA > 0

Index: src/sys/arch/x86/x86/pmap.c
diff -u src/sys/arch/x86/x86/pmap.c:1.180 src/sys/arch/x86/x86/pmap.c:1.181
--- src/sys/arch/x86/x86/pmap.c:1.180	Sat Oct  5 16:50:31 2013
+++ src/sys/arch/x86/x86/pmap.c	Wed Nov  6 20:19:03 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.180 2013/10/05 16:50:31 rmind Exp $	*/
+/*	$NetBSD: pmap.c,v 1.181 2013/11/06 20:19:03 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
@@ -171,7 +171,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.180 2013/10/05 16:50:31 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.181 2013/11/06 20:19:03 mrg Exp $");
 
 #include "opt_user_ldt.h"
 #include "opt_lockdebug.h"
@@ -505,8 +505,8 @@ extern int mem_cluster_cnt;
 #define PTESLEW(pte, id) ((pte)+(id)*NPTECL)
 #define VASLEW(va,id) ((va)+(id)*NPTECL*PAGE_SIZE)
 #else
-#define PTESLEW(pte, id) (pte)
-#define VASLEW(va,id) (va)
+#define PTESLEW(pte, id) ((void)id, pte)
+#define VASLEW(va,id) ((void)id, va)
 #endif
 
 /*
@@ -4220,9 +4220,10 @@ pmap_growkernel(vaddr_t maxkvaddr)
 	struct pmap *kpm = pmap_kernel();
 #if !defined(XEN) || !defined(__x86_64__)
 	struct pmap *pm;
+	long old;
 #endif
 	int s, i;
-	long needed_kptp[PTP_LEVELS], target_nptp, old;
+	long needed_kptp[PTP_LEVELS], target_nptp;
 	bool invalidate = false;
 
 	s = splvm();	/* to be safe */
@@ -4235,7 +4236,10 @@ pmap_growkernel(vaddr_t maxkvaddr)
 	}
 
 	maxkvaddr = x86_round_pdr(maxkvaddr);
+#if !defined(XEN) || !defined(__x86_64__)
 	old = nkptp[PTP_LEVELS - 1];
+#endif
+
 	/*
 	 * This loop could be optimized more, but pmap_growkernel()
 	 * is called infrequently.

Reply via email to