Message ID | 1464138802-23503-5-git-send-email-cota@braap.org |
---|---|
State | New |
Headers | show |
On 25/05/16 04:13, Emilio G. Cota wrote: > Taken from the linux kernel. > > Reviewed-by: Richard Henderson <rth@twiddle.net> > Reviewed-by: Alex Bennée <alex.bennee@linaro.org> > Signed-off-by: Emilio G. Cota <cota@braap.org> > --- > include/qemu/processor.h | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > create mode 100644 include/qemu/processor.h > > diff --git a/include/qemu/processor.h b/include/qemu/processor.h > new file mode 100644 > index 0000000..42bcc99 > --- /dev/null > +++ b/include/qemu/processor.h > @@ -0,0 +1,30 @@ > +/* > + * Copyright (C) 2016, Emilio G. Cota <cota@braap.org> > + * If it's taken from the Linux kernel shouldn't it be attributed here? > + * License: GNU GPL, version 2. > + * See the COPYING file in the top-level directory. > + */ > +#ifndef QEMU_PROCESSOR_H > +#define QEMU_PROCESSOR_H > + > +#include "qemu/atomic.h" > + > +#if defined(__i386__) || defined(__x86_64__) > +# define cpu_relax() asm volatile("rep; nop" ::: "memory") > + > +#elif defined(__ia64__) > +# define cpu_relax() asm volatile("hint @pause" ::: "memory") > + > +#elif defined(__aarch64__) > +# define cpu_relax() asm volatile("yield" ::: "memory") > + > +#elif defined(__powerpc64__) > +/* set Hardware Multi-Threading (HMT) priority to low; then back to medium */ > +# define cpu_relax() asm volatile("or 1, 1, 1;" > + "or 2, 2, 2;" ::: "memory") > + > +#else > +# define cpu_relax() barrier() > +#endif > + > +#endif /* QEMU_PROCESSOR_H */
On Fri, May 27, 2016 at 23:53:01 +0300, Sergey Fedorov wrote: > On 25/05/16 04:13, Emilio G. Cota wrote: > > Taken from the linux kernel. > > > > Reviewed-by: Richard Henderson <rth@twiddle.net> > > Reviewed-by: Alex Bennée <alex.bennee@linaro.org> > > Signed-off-by: Emilio G. Cota <cota@braap.org> > > --- > > include/qemu/processor.h | 30 ++++++++++++++++++++++++++++++ > > 1 file changed, 30 insertions(+) > > create mode 100644 include/qemu/processor.h > > > > diff --git a/include/qemu/processor.h b/include/qemu/processor.h > > new file mode 100644 > > index 0000000..42bcc99 > > --- /dev/null > > +++ b/include/qemu/processor.h > > @@ -0,0 +1,30 @@ > > +/* > > + * Copyright (C) 2016, Emilio G. Cota <cota@braap.org> > > + * > > If it's taken from the Linux kernel shouldn't it be attributed here? It's "taken" as in "we do like the kernel does", not as in "we're just copying this code". Emilio
On 28/05/16 00:10, Emilio G. Cota wrote: > On Fri, May 27, 2016 at 23:53:01 +0300, Sergey Fedorov wrote: >> On 25/05/16 04:13, Emilio G. Cota wrote: >>> Taken from the linux kernel. >>> >>> Reviewed-by: Richard Henderson <rth@twiddle.net> >>> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> >>> Signed-off-by: Emilio G. Cota <cota@braap.org> >>> --- >>> include/qemu/processor.h | 30 ++++++++++++++++++++++++++++++ >>> 1 file changed, 30 insertions(+) >>> create mode 100644 include/qemu/processor.h >>> >>> diff --git a/include/qemu/processor.h b/include/qemu/processor.h >>> new file mode 100644 >>> index 0000000..42bcc99 >>> --- /dev/null >>> +++ b/include/qemu/processor.h >>> @@ -0,0 +1,30 @@ >>> +/* >>> + * Copyright (C) 2016, Emilio G. Cota <cota@braap.org> >>> + * >> If it's taken from the Linux kernel shouldn't it be attributed here? > It's "taken" as in "we do like the kernel does", not as in > "we're just copying this code". > Well, then Reviewed-by: Sergey Fedorov <sergey.fedorov@linaro.org> Regards, Sergey
diff --git a/include/qemu/processor.h b/include/qemu/processor.h new file mode 100644 index 0000000..42bcc99 --- /dev/null +++ b/include/qemu/processor.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2016, Emilio G. Cota <cota@braap.org> + * + * License: GNU GPL, version 2. + * See the COPYING file in the top-level directory. + */ +#ifndef QEMU_PROCESSOR_H +#define QEMU_PROCESSOR_H + +#include "qemu/atomic.h" + +#if defined(__i386__) || defined(__x86_64__) +# define cpu_relax() asm volatile("rep; nop" ::: "memory") + +#elif defined(__ia64__) +# define cpu_relax() asm volatile("hint @pause" ::: "memory") + +#elif defined(__aarch64__) +# define cpu_relax() asm volatile("yield" ::: "memory") + +#elif defined(__powerpc64__) +/* set Hardware Multi-Threading (HMT) priority to low; then back to medium */ +# define cpu_relax() asm volatile("or 1, 1, 1;" + "or 2, 2, 2;" ::: "memory") + +#else +# define cpu_relax() barrier() +#endif + +#endif /* QEMU_PROCESSOR_H */