NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

port-arm32/50513: Incorrect logic for atomic_nand_xx.S

>Number:         50513
>Category:       port-arm32
>Synopsis:       Incorrect logic for atomic_nand_xx.S
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    port-arm32-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 10 21:35:00 +0000 2015
>Originator:     Frank Zerangue
>Release:        NetBSD-7.0
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

usr/src/common/lib/libc/arch/arm/atomic/atomic_nand_xx.S - defines 
type __sync_fetch_and_nand (type *ptr, type value, ...) as
  { tmp = *ptr; *ptr = ~tmp & value; return tmp; }   // NAND

atomic_nand_xx.S implements the logic defined above (4.1.2) which is not a correct NAND function but should be implemented as defined below (4.4.5) which is a correct NAND function. - defines
type __sync_fetch_and_nand (type *ptr, type value, ...) as
  { tmp = *ptr; *ptr = ~(tmp & value); return tmp; }   // NAND


Home | Main Index | Thread Index | Old Index