[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.