From: Arnd Bergmann <arnd@arndb.de>
To: Ley Foon Tan <lftan@altera.com>
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, lftan.linux@gmail.com,
cltang@codesourcery.com
Subject: Re: [PATCH v5 07/29] nios2: I/O Mapping
Date: Tue, 28 Oct 2014 14:30:25 +0100 [thread overview]
Message-ID: <3089586.phhm8NvmXk@wuerfel> (raw)
In-Reply-To: <1414139071-3818-8-git-send-email-lftan@altera.com>
On Friday 24 October 2014 16:24:09 Ley Foon Tan wrote:
> +/* PCI is not supported in nios2, set this to 0. */
> +#define IO_SPACE_LIMIT 0
> +
> +extern void outsb(unsigned long addr, const void *buf, int len);
> +extern void outsw(unsigned long addr, const void *buf, int len);
> +extern void outsl(unsigned long addr, const void *buf, int len);
> +extern void insb(unsigned long addr, void *buf, int len);
> +extern void insw(unsigned long addr, void *buf, int len);
> +extern void insl(unsigned long addr, void *buf, int len);
> +#define outsb outsb
> +#define outsw outsw
> +#define outsl outsl
> +#define insb insb
> +#define insw insw
> +#define insl insl
You don't have inb/outb, so you shouldn't have these either.
> +/*
> + * PCI is not enabled in nios2. Provide dummy implementation to get 'allyesconfig'
> + * to build successfully.
> + */
> +#define inb(addr) ({ 0; })
> +#define inw(addr) ({ 0; })
> +#define inl(addr) ({ 0; })
> +#define outb(x, addr) do { } while (0)
> +#define outw(x, addr) do { } while (0)
> +#define outl(x, addr) do { } while (0)
What fails if you take these out?
> +
> +/* Use "Duff's Device" to unroll the loops. */
> +#define __IO_OUT_LOOP(a, b, l) \
> + do { \
> + if (l > 0) { \
> + int _n = (l + 7) / 8; \
> + switch (l % 8) { \
> + case 0: \
> + do { \
> + *a = *b++; \
> + case 7: \
> + *a = *b++; \
> + case 6: \
> + *a = *b++; \
> + case 5: \
> + *a = *b++; \
> + case 4: \
> + *a = *b++; \
> + case 3: \
> + *a = *b++; \
> + case 2: \
> + *a = *b++; \
> + case 1: \
> + *a = *b++; \
> + } while (--_n > 0); \
> + } \
> + } \
> + } while (0)
> +
> +#define __IO_IN_LOOP(a, b, l) \
> + do { \
> + if (l > 0) { \
> + int _n = (l + 7) / 8; \
> + switch (l % 8) { \
> + case 0: \
> + do { \
> + *b++ = *a; \
> + case 7: \
> + *b++ = *a; \
> + case 6: \
> + *b++ = *a; \
> + case 5: \
> + *b++ = *a; \
> + case 4: \
> + *b++ = *a; \
> + case 3: \
> + *b++ = *a; \
> + case 2: \
> + *b++ = *a; \
> + case 1: \
> + *b++ = *a; \
> + } while (--_n > 0); \
> + } \
> + } \
> + } while (0)
> +
> +#else /* __IO_USE_DUFFS */
> +
> +/* Use simple loops. */
> +#define __IO_OUT_LOOP(a, b, l) \
> + do { \
> + while (l--) \
> + *a = *b++; \
> + } while (0)
> +
> +#define __IO_IN_LOOP(a, b, l) \
> + do { \
> + while (l--) \
> + *b++ = *a; \
> + } while (0)
> +
> +#endif /* __IO_USE_DUFFS */
> +
> +void outsb(unsigned long addr, const void *buf, int len)
> +{
> + volatile unsigned char *ap = (volatile unsigned char *)addr;
> + unsigned char *bp = (unsigned char *)buf;
> + __IO_OUT_LOOP(ap, bp, len);
> +}
> +EXPORT_SYMBOL(outsb);
> +
> +void outsw(unsigned long addr, const void *buf, int len)
> +{
> + volatile unsigned short *ap = (volatile unsigned short *)addr;
> + unsigned short *bp = (unsigned short *)buf;
> + __IO_OUT_LOOP(ap, bp, len);
> +}
> +EXPORT_SYMBOL(outsw);
This implementation makes no sense, so definitely remove them.
Arnd
next prev parent reply other threads:[~2014-10-28 13:30 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-24 8:24 [PATCH v5 00/29] nios2 Linux kernel port Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 01/29] asm-generic: add generic futex for !CONFIG_SMP Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-25 20:50 ` Thomas Gleixner
2014-10-24 8:24 ` [PATCH v5 02/29] nios2: Assembly macros and definitions Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 03/29] nios2: Kernel booting and initialization Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 04/29] nios2: Exception handling Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 9:15 ` Geert Uytterhoeven
2014-10-27 9:43 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 05/29] nios2: Traps exception handling Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 06/29] nios2: Memory management Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 07/29] nios2: I/O Mapping Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-28 13:30 ` Arnd Bergmann [this message]
2014-10-29 7:00 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 08/29] nios2: MMU Fault handling Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 09/29] nios2: Page table management Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 10/29] nios2: Process management Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 11/29] nios2: Cache handling Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 12/29] nios2: TLB handling Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 13/29] nios2: Interrupt handling Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 14/29] nios2: DMA mapping API Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 15/29] Add ELF machine define for Nios2 Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 16/29] nios2: ELF definitions Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 17/29] nios2: System calls handling Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 18/29] nios2: Signal handling support Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 19/29] nios2: Library functions Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 20/29] nios2: Device tree support Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 21/29] nios2: Time keeping Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-25 21:10 ` Thomas Gleixner
2014-10-28 2:46 ` Ley Foon Tan
2014-10-28 9:23 ` Arnd Bergmann
2014-10-28 10:43 ` Ley Foon Tan
2014-10-28 13:39 ` Arnd Bergmann
2014-10-29 7:36 ` Ley Foon Tan
2014-10-28 15:15 ` Thomas Gleixner
2014-10-30 9:03 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 22/29] nios2: Cpuinfo handling Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 23/29] nios2: Miscellaneous header files Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 24/29] nios2: Nios2 registers Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 25/29] nios2: Module support Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 26/29] nios2: ptrace support Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 27/29] MAINTAINERS: Add nios2 maintainer Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 28/29] Documentation: Add documentation for Nios2 architecture Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 8:24 ` [PATCH v5 29/29] nios2: Build infrastructure Ley Foon Tan
2014-10-24 8:24 ` Ley Foon Tan
2014-10-24 9:10 ` Geert Uytterhoeven
2014-10-27 9:44 ` Ley Foon Tan
2014-10-28 13:38 ` Arnd Bergmann
2014-10-30 10:44 ` Ley Foon Tan
2014-10-30 10:49 ` Thomas Gleixner
2014-10-30 11:33 ` Arnd Bergmann
2014-10-31 1:28 ` Ley Foon Tan
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=3089586.phhm8NvmXk@wuerfel \
--to=arnd@arndb.de \
--cc=cltang@codesourcery.com \
--cc=lftan.linux@gmail.com \
--cc=lftan@altera.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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.