Port-arm archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Error when building the kernel for NSLU2: Function pmap_vac_me_user in pmap.c
I received the following error while building the kernel for the NSLU2.
# compile NSLU2_ALL/pmap.o
/home/hayford/net60/src/../tools/bin/armeb--netbsdelf-gcc -ffreestanding
-fno-zero-initialized-in-bss -mcpu=xscale -mbig-endian -O2 -std=gnu99
-Werror -Wall -Wno-main -Wno-format-zero-length -Wpointer-arith
-Wmissing-prototypes -Wstrict-prototypes -Wswitch -Wshadow -Wcast-qual
-Wwrite-strings -Wno-unreachable-code -Wno-sign-compare
-Wno-pointer-sign -Wno-attributes -fno-strict-aliasing -Werror -Wall
-Wno-main -Wno-format-zero-length -Wpointer-arith -Wmissing-prototypes
-Wstrict-prototypes -Wswitch -Wshadow -Wcast-qual -Wwrite-strings
-Wno-unreachable-code -Wno-sign-compare -Wno-pointer-sign
-Wno-attributes -Werror -mcpu=xscale -mbig-endian -DIXP425_NPE_MICROCODE
-I. -I/home/hayford/net60/src/sys/../common/include
-I/home/hayford/net60/src/sys/arch -I/home/hayford/net60/src/sys
-nostdinc -DKERNEL_BASE_EXT=0xc0000000 -DCONSPEED=115200 -DCONUNIT=0
-DDIAGNOSTIC -DDEBUG -DMAXUSERS=8 -D_KERNEL -D_KERNEL_OPT
-I/home/hayford/net60/src/sys/lib/libkern/../../../common/lib/libc/quad
-I/home/hayford/net60/src/sys/lib/libkern/../../../common/lib/libc/string
-I/home/hayford/net60/src/sys/lib/libkern/../../../common/lib/libc/arch/arm/string
-c /home/hayford/net60/src/sys/arch/arm/arm32/pmap.c
cc1: warnings being treated as errors
/home/hayford/net60/src/sys/arch/arm/arm32/pmap.c: In function
'pmap_vac_me_user':
/home/hayford/net60/src/sys/arch/arm/arm32/pmap.c:1677: warning: 'npv'
may be used uninitialized in this function
The code in question is:
static void
pmap_vac_me_user(struct vm_page *pg, pmap_t pm, vaddr_t va)
{
pmap_t kpmap = pmap_kernel();
The following is line 1677:
struct pv_entry *pv, *npv;
struct l2_bucket *l2b;
pt_entry_t *ptep, pte;
u_int entries = 0;
u_int writable = 0;
u_int cacheable_entries = 0;
u_int kern_cacheable = 0;
u_int other_writable = 0;
/*
* Count mappings and writable mappings in this pmap.
* Include kernel mappings as part of our own.
* Keep a pointer to the first one.
*/
SLIST_FOREACH(pv, &pg->mdpage.pvh_list, pv_link) {
/* Count mappings in the same pmap */
if (pm == pv->pv_pmap || kpmap == pv->pv_pmap) {
if (entries++ == 0)
npv = pv;
/* Cacheable mappings */
if ((pv->pv_flags & PVF_NC) == 0) {
cacheable_entries++;
if (kpmap == pv->pv_pmap)
kern_cacheable++;
}
/* Writable mappings */
if (pv->pv_flags & PVF_WRITE)
++writable;
} else
if (pv->pv_flags & PVF_WRITE)
other_writable = 1;
}
/*
* Enable or disable caching as necessary.
* Note: the first entry might be part of the kernel pmap,
* so we can't assume this is indicative of the state of the
* other (maybe non-kpmap) entries.
*/
if ((entries > 1 && writable) ||
(entries > 0 && pm == kpmap && other_writable)) {
if (cacheable_entries == 0)
return;
This is probably the line that is causing the problem.
for (pv = npv; pv; pv = SLIST_NEXT(pv, pv_link)) {
if ((pm != pv->pv_pmap && kpmap != pv->pv_pmap) ||
(pv->pv_flags & PVF_NC))
continue;
It appears to me that the warning is valid, since npv may not be set to
anything. The header line for the file is
/* $NetBSD: pmap.c,v 1.183 2008/08/06 19:13:45 matt Exp $ */
Regards,
Don
Home |
Main Index |
Thread Index |
Old Index