From: Yoshinori Sato <ysato@users.sourceforge.jp>
To: Richard Weinberger <richard.weinberger@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Linux-Arch <linux-arch@vger.kernel.org>
Subject: Re: [PATCH v11 06/19] h8300: Assembly headers
Date: Mon, 11 May 2015 12:30:33 +0900 [thread overview]
Message-ID: <873833x02u.wl-ysato@users.sourceforge.jp> (raw)
In-Reply-To: <CAFLxGvwb8DfZBgL6Va1jZ3NC8ExDU-zjfwiaBr8yRo5eQhUu4A@mail.gmail.com>
At Sun, 10 May 2015 12:46:14 +0200,
Richard Weinberger wrote:
>
> On Fri, May 8, 2015 at 5:04 PM, Yoshinori Sato
> <ysato@users.sourceforge.jp> wrote:
> > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> > diff --git a/arch/h8300/include/asm/uaccess.h b/arch/h8300/include/asm/uaccess.h
> > new file mode 100644
> > index 0000000..582af79
> > --- /dev/null
> > +++ b/arch/h8300/include/asm/uaccess.h
> > @@ -0,0 +1,131 @@
> > +#ifndef __H8300_UACCESS_H
> > +#define __H8300_UACCESS_H
> > +
> > +/*
> > + * User space memory access functions
> > + */
> > +#include <linux/sched.h>
> > +#include <linux/mm.h>
> > +#include <linux/string.h>
> > +
> > +#include <asm/segment.h>
> > +
> > +#define VERIFY_READ 0
> > +#define VERIFY_WRITE 1
> > +
> > +/* We let the MMU do all checking */
> > +#define access_ok(type, addr, size) __access_ok((unsigned long)addr, size)
> > +static inline int __access_ok(unsigned long addr, unsigned long size)
> > +{
> > + return 1;
> > +}
> > +
> > +/*
> > + * The exception table consists of pairs of addresses: the first is the
> > + * address of an instruction that is allowed to fault, and the second is
> > + * the address at which the program should continue. No registers are
> > + * modified, so it is entirely up to the continuation code to figure out
> > + * what to do.
> > + *
> > + * All the routines below use bits of fixup code that are out of line
> > + * with the main instruction path. This means when everything is well,
> > + * we don't even have to jump over them. Further, they do not intrude
> > + * on our cache or tlb entries.
> > + */
> > +
> > +struct exception_table_entry {
> > + unsigned long insn, fixup;
> > +};
> > +
> > +/* Returns 0 if exception not found and fixup otherwise. */
> > +extern unsigned long search_exception_table(unsigned long);
> > +
> > +
> > +/*
> > + * These are the main single-value transfer routines. They automatically
> > + * use the right size if we just have the right pointer type.
> > + */
> > +
> > +#define put_user(x, ptr) \
> > +({ \
> > + int __pu_err = 0; \
> > + typeof(*(ptr)) __pu_val = (x); \
> > + switch (sizeof(*(ptr))) { \
> > + case 1: \
> > + /* falll through */ \
> > + case 2: \
> > + /* fall through */ \
> > + case 4: \
> > + *(ptr) = x; \
> > + break; \
> > + case 8: \
> > + memcpy(ptr, &__pu_val, sizeof(*(ptr))); \
> > + break; \
> > + default: \
> > + __pu_err = __put_user_bad(); \
> > + break; \
> > + } \
> > + __pu_err; \
> > +})
> > +
> > +#define __put_user(x, ptr) put_user(x, ptr)
> > +
> > +extern int __put_user_bad(void);
> > +
> > +/*
> > + * Tell gcc we read from memory instead of writing: this is because
> > + * we do not write to any memory gcc knows about, so there are no
> > + * aliasing issues.
> > + */
> > +
> > +#define __ptr(x) ((unsigned long *)(x))
> > +
> > +/*
> > + * Tell gcc we read from memory instead of writing: this is because
> > + * we do not write to any memory gcc knows about, so there are no
> > + * aliasing issues.
> > + */
> > +
> > +#define get_user(x, ptr) \
> > +({ \
> > + typeof(*(ptr)) __gu_val; \
> > + int __gu_err = 0; \
> > + switch (sizeof(*(ptr))) { \
> > + case 1: \
> > + *(u8 *)&__gu_val = *((u8 *)(ptr)); \
> > + break; \
> > + case 2: \
> > + *(u16 *)&__gu_val = *((u16 *)ptr); \
> > + break; \
> > + case 4: \
> > + *(u32 *)&__gu_val = *((u32 *)ptr); \
> > + break; \
> > + case 8: \
> > + memcpy((void *)&__gu_val, ptr, sizeof(*(ptr))); \
> > + break; \
> > + default: \
> > + __gu_err = __get_user_bad(); \
> > + break; \
> > + } \
> > + (x) = (typeof(*(ptr)))__gu_val; \
> > + __gu_err; \
> > +})
> > +#define __get_user(x, ptr) get_user(x, ptr)
> > +
> > +extern int __get_user_bad(void);
> > +
> > +#define copy_from_user(to, from, n) (memcpy(to, from, n), 0)
> > +#define copy_to_user(to, from, n) (memcpy(to, from, n), 0)
> > +
> > +#define __copy_from_user(to, from, n) copy_from_user(to, from, n)
> > +#define __copy_to_user(to, from, n) copy_to_user(to, from, n)
> > +#define __copy_to_user_inatomic __copy_to_user
> > +#define __copy_from_user_inatomic __copy_from_user
> > +
> > +unsigned long clear_user(void __user *addr, unsigned long size);
> > +#define strnlen_user(s, n) (strnlen(s, n) + 1)
> > +long strncpy_from_user(char *d, const char *s, long n);
> > +
> > +#define __clear_user clear_user
> > +
> > +#endif /* _H8300_UACCESS_H */
>
> Nothing serious, but I think you can drop most code in this file by
> using asm-generic/uaccess.h.
Yes. Can use generic version.
I'll update next release
> --
> Thanks,
> //richard
Thanks.
--
Yoshinori Sato
<ysato@users.sourceforge.jp>
next prev parent reply other threads:[~2015-05-11 3:30 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-08 15:04 [PATCH v11 00/19] Re-introduce h8300 architecture Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 01/19] MAINTAINERS: Add H8/300 entry Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 02/19] mksysmap: Add h8300 local symbol pattern Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 03/19] Add ELF machine Yoshinori Sato
[not found] ` <1431097479-21101-1-git-send-email-ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.org>
2015-05-08 15:04 ` [PATCH v11 04/19] sh-sci: Add h8300 SCI Yoshinori Sato
2015-05-08 15:04 ` Yoshinori Sato
2015-05-08 15:04 ` Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 05/19] asm-generic: Add common asm-offsets.h Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 06/19] h8300: Assembly headers Yoshinori Sato
2015-05-10 10:46 ` Richard Weinberger
2015-05-11 3:30 ` Yoshinori Sato [this message]
2015-05-08 15:04 ` [PATCH v11 07/19] h8300: UAPI headers Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 08/19] h8300: Exception and Interrupt handling Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 09/19] h8300: kernel booting Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 10/19] h8300: Process and signal Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 11/19] h8300: CPU depend helpers Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 12/19] h8300: miscellaneous functions Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 13/19] h8300: Memory management Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 14/19] h8300: library functions Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 15/19] h8300: Build scripts Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 16/19] h8300: configs Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 17/19] h8300: clock driver Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 18/19] h8300: clocksource Yoshinori Sato
2015-05-08 15:04 ` [PATCH v11 19/19] h8300: devicetree source Yoshinori Sato
2015-05-08 16:50 ` Mark Rutland
2015-05-09 11:19 ` Yoshinori Sato
2015-05-08 18:54 ` [PATCH v11 00/19] Re-introduce h8300 architecture Guenter Roeck
2015-05-09 11:20 ` Yoshinori Sato
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=873833x02u.wl-ysato@users.sourceforge.jp \
--to=ysato@users.sourceforge.jp \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=richard.weinberger@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.