[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCHv5 13/46] uk/arch: Implement ukarch_ffsl for Arm64
Hi Julien, > -----Original Message----- > From: Julien Grall <julien.grall@xxxxxxx> > Sent: 2018年8月31日 1:28 > To: Wei Chen (Arm Technology China) <Wei.Chen@xxxxxxx>; minios- > devel@xxxxxxxxxxxxxxxxxxxx; simon.kuenzer@xxxxxxxxx > Cc: Kaly Xin (Arm Technology China) <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx> > Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 13/46] uk/arch: Implement > ukarch_ffsl for Arm64 > > Hi, > > On 10/08/18 08:08, Wei Chen wrote: > > From: Wei Chen <Wei.Chen@xxxxxxx> > > > > This function is ported from Arm32 and is modified to work > > on Arm64. > > > > Signed-off-by: Wei Chen <Wei.Chen@xxxxxxx> > > --- > > include/uk/arch/arm/arm64/atomic.h | 64 ++++++++++++++++++++++++++++++ > > 1 file changed, 64 insertions(+) > > create mode 100644 include/uk/arch/arm/arm64/atomic.h > > > > diff --git a/include/uk/arch/arm/arm64/atomic.h > b/include/uk/arch/arm/arm64/atomic.h > > new file mode 100644 > > index 0000000..7301265 > > --- /dev/null > > +++ b/include/uk/arch/arm/arm64/atomic.h > > @@ -0,0 +1,64 @@ > > +/* SPDX-License-Identifier: BSD-2-Clause */ > > +/* > > + * Port from Mini-OS: include/arm/os.h > > This seems to be out-of-date as I can't find any ffsl implementation in > Mini-OS. > Yes, but I find it in Unikraft arm32/xen code : ) > > + */ > > +/* > > + * Copyright (c) 2009 Citrix Systems, Inc. All rights reserved. > > The copyright looks wrong. There was no Arm port in Mini-OS at that time. > So, should I remove this copyrights? > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions > > + * are met: > > + * 1. Redistributions of source code must retain the above copyright > > + * notice, this list of conditions and the following disclaimer. > > + * 2. Redistributions in binary form must reproduce the above copyright > > + * notice, this list of conditions and the following disclaimer in the > > + * documentation and/or other materials provided with the distribution. > > + * > > + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND > > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > > + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE > > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > CONSEQUENTIAL > > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, > STRICT > > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY > WAY > > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > > + * SUCH DAMAGE. > > + */ > > + > > +#ifndef __UKARCH_ATOMIC_H__ > > +#error Do not include this header directly > > +#endif > > + > > +/** > > + * ukarch_ffsl - find first (lowest) set bit in word. > > + * @word: The word to search > > + * > > + * Undefined if no bit exists, so code should check against 0 first. > > + */ > > +static inline unsigned long ukarch_ffsl(unsigned long word) > > +{ > > + int clz; > > + > > + /* xxxxx10000 = word > > + * xxxxx01111 = word - 1 > > + * 0000011111 = word ^ (word - 1) > > + * 4 = 63 - clz(word ^ (word - 1)) > > + */ > > + > > + __asm__("sub x0, %[word], #1\n" > > + "eor x0, x0, %[word]\n" > > + "clz %[clz], x0\n" > > + : > > + /* Outputs: */ > > + [clz] "=r"(clz) > > + : > > + /* Inputs: */ > > + [word] "r"(word) > > + : > > + /* Clobbers: */ > > + "x0"); > > + > > + return 63 - clz; > > +} > > > > Cheers, > > -- > Julien Grall _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |