NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
port-arm/50635: arm11_setup() cpuctrlmask value causes CPU_CONTROL_VECRELOC bit to toggle
>Number: 50635
>Category: port-arm
>Synopsis: arm11_setup() cpuctrlmask value causes CPU_CONTROL_VECRELOC bit to toggle
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: port-arm-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Jan 08 21:55:01 +0000 2016
>Originator: Frank Zerangue
>Release: NetBSD-7.0
>Organization:
>Environment:
Darwin Franks-Mac-Pro-3.local 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64
>Description:
arch/arm/arm/cpufunc.c: arm11_setup()
// When using high vectors, code below sets CPU_CONTROL_VECRELOC bit in cpuctrl.
// When cpu_control(cpuctrlmask,cpuctrl) is called later cpu_control() will toggle bit if already set rather than set it because cpuctrlmask does not contain this bit.
#ifndef ARM_HAS_VBAR
if (vector_page == ARM_VECTORS_HIGH)
cpuctrl |= CPU_CONTROL_VECRELOC;
#endif
>How-To-Repeat:
>Fix:
#ifndef ARM_HAS_VBAR
if (vector_page == ARM_VECTORS_HIGH) {
cpuctrl |= CPU_CONTROL_VECRELOC;
cpuctrlmask |= CPU_CONTROL_VECRELOC;
}
#endif
Home |
Main Index |
Thread Index |
Old Index