public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Chung-Lin Tang <cltang@codesourcery.com>
Cc: Ley Foon Tan <lftan@altera.com>,
	linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, lftan.linux@gmail.com
Subject: Re: [PATCH v2 22/29] nios2: Miscellaneous header files
Date: Tue, 15 Jul 2014 14:27:57 +0200	[thread overview]
Message-ID: <4477048.XUlURsz4uq@wuerfel> (raw)
In-Reply-To: <53C50A87.6000902@codesourcery.com>

On Tuesday 15 July 2014 19:03:35 Chung-Lin Tang wrote:
> On 2014/7/15 06:22 PM, Arnd Bergmann wrote:
> >> +
> >> > +#ifndef _UAPI_ASM_NIOS2_STATFS_H
> >> > +#define _UAPI_ASM_NIOS2_STATFS_H
> >> > +
> >> > +#define __statfs_word __s32
> > Why this? Every other architecture except parisc uses the default __u32 here.
> 
> Because include/uapi/asm/statfs.h has this:
> 
> #ifndef __statfs_word
> #if __BITS_PER_LONG == 64
> #define __statfs_word __kernel_long_t
> #else
> #define __statfs_word __u32
> #endif
> #endif
> ...
> struct statfs64 {
>         __statfs_word f_type;
>         __statfs_word f_bsize;
>         __u64 f_blocks;
>         __u64 f_bfree;
> ...
> 
> While the bits/statfs.h header in glibc has this:
> struct statfs
>   {
>     __SWORD_TYPE f_type;
>     __SWORD_TYPE f_bsize;
>     __field64(__fsblkcnt_t, __fsblkcnt64_t, f_blocks);
> ...
> struct statfs64
>   {
>     __SWORD_TYPE f_type;
>     __SWORD_TYPE f_bsize;
>     __fsblkcnt64_t f_blocks;
> ...
> 
> Where __SWORD_TYPE is always a signed integer (int or long int depending
> on 32/64-bit word size).  Hence we define the kernel __statfs_word to be
> signed 32-bit to match.
> 
> Supposedly, tilepro should have a similar issue too, though I guess this
> is quite obscure in practice. We so far haven't encountered any issues
> on nios2 without this __s32 override either, it's just by observation.

I think you should just do what x86 (and presumably most other
architectures) has, that also uses a signed type in user space
and unsigned in kernel space.

It's not really clean, but it doesn't seem to cause problems
elsewhere, and in cases like this you're normally better off
copying the mistakes that everybody else made than doing something
unusual.

> >> > +#include <linux/types.h>
> >> > +#include <asm-generic/swab.h>
> >> > +
> >> > +#ifdef CONFIG_NIOS2_CI_SWAB_SUPPORT
> >> > +#ifdef __GNUC__
> >> > +
> >> > +#define __nios2_swab(x)		\
> >> > +	__builtin_custom_ini(CONFIG_NIOS2_CI_SWAB_NO, (x))
> >> > +
> >> > +static inline __attribute__((const)) __u16 __arch_swab16(__u16 x)
> >> > +{
> >> > +	return (__u16) __nios2_swab(((__u32) x) << 16);
> >> > +}
> > Is this actually better than ___constant_swab16()?
> > 
> > Also, have you checked if you need to support old compiler versions that
> > don't have __builtin_bswap16/32/64? With newer compilers you don't need
> > to define any of these yourself.
> 
> This swap is configured/implemented using Nios II's custom instruction
> facility; it is not part of the compiler supported Nios II core
> instruction set. In fact, even the exact opcode allocated is not fixed.
> 
> So the custom swap will not be in a form usable by the compiler, and
> hence no use of it during code generation (if it is, you might not even
> need to use __builtin_swap*(), there's a optimization pass that
> recognizes the shift+or-ing C code patterns).

Ok, I see.

	Arnd

  reply	other threads:[~2014-07-15 12:28 UTC|newest]

Thread overview: 182+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-15  8:45 [PATCH v2 00/29] nios2 Linux kernel port Ley Foon Tan
2014-07-15  8:45 ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 01/29] nios2: Assembly macros and definitions Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 02/29] nios2: Kernel booting and initialization Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-30  9:12   ` Tobias Klauser
2014-07-30  9:12     ` Tobias Klauser
2014-07-30 10:58     ` Ley Foon Tan
2014-07-30 10:58       ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 03/29] nios2: Exception handling Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 04/29] nios2: Traps exception handling Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 05/29] nios2: Memory management Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-28 14:59   ` Geert Uytterhoeven
2014-07-28 14:59     ` Geert Uytterhoeven
2014-07-30  6:42     ` Ley Foon Tan
2014-07-30  8:18       ` Geert Uytterhoeven
2014-07-30  8:18         ` Geert Uytterhoeven
2014-07-30  8:57         ` Tobias Klauser
2014-07-30  8:57           ` Tobias Klauser
2014-07-30 10:52           ` Ley Foon Tan
2014-07-30 10:52             ` Ley Foon Tan
2014-07-30  9:01   ` Tobias Klauser
2014-07-30  9:01     ` Tobias Klauser
2014-07-30 10:50     ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 06/29] nios2: I/O Mapping Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  9:22   ` Arnd Bergmann
2014-07-15  9:22     ` Arnd Bergmann
2014-07-15 10:51     ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 07/29] nios2: MMU Fault handling Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 08/29] nios2: Page table management Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 09/29] nios2: Process management Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 10/29] nios2: Cache handling Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 11/29] nios2: TLB handling Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 12/29] nios2: Interrupt handling Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  9:27   ` Arnd Bergmann
2014-07-15  9:27     ` Arnd Bergmann
2014-07-17  6:15     ` Ley Foon Tan
2014-07-17  6:15       ` Ley Foon Tan
2014-07-17  9:24       ` Arnd Bergmann
2014-07-17  9:24         ` Arnd Bergmann
2014-07-17 10:48         ` Ley Foon Tan
2014-07-17 10:48           ` Ley Foon Tan
2014-07-15  9:51   ` Thomas Gleixner
2014-07-17  6:33     ` Ley Foon Tan
2014-07-17  6:33       ` Ley Foon Tan
2014-07-17 13:58       ` Thomas Gleixner
2014-07-17 13:58         ` Thomas Gleixner
2014-07-18  6:55         ` Ley Foon Tan
2014-07-18  6:55           ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 13/29] nios2: DMA mapping API Ley Foon Tan
2014-07-15  9:38   ` Arnd Bergmann
2014-07-24 11:37     ` Ley Foon Tan
2014-07-24 11:37       ` Ley Foon Tan
2014-07-24 12:05       ` Arnd Bergmann
2014-07-24 12:05         ` Arnd Bergmann
2014-07-28 15:48         ` rkuo
2014-07-30  3:42         ` Ley Foon Tan
2014-07-30  3:42           ` Ley Foon Tan
2014-07-30 12:56     ` James Bottomley
2014-07-30 12:56       ` James Bottomley
2014-07-15  8:45 ` [PATCH v2 14/29] nios2: ELF definitions Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 15/29] nios2: System calls handling Ley Foon Tan
2014-07-18 12:56   ` James Hogan
2014-07-21 11:17     ` Ley Foon Tan
2014-07-21 11:17       ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 16/29] nios2: Signal handling support Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-18  8:04   ` Richard Weinberger
2014-07-18  8:04     ` Richard Weinberger
2014-08-08  7:21     ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 17/29] nios2: Library functions Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 18/29] nios2: Device tree support Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  9:41   ` Arnd Bergmann
2014-07-15 10:02     ` Ley Foon Tan
2014-07-15 10:02       ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 19/29] nios2: Time keeping Ley Foon Tan
2014-07-15  9:45   ` Arnd Bergmann
2014-07-15  9:45     ` Arnd Bergmann
2014-07-21 10:07     ` Ley Foon Tan
2014-07-21 10:07       ` Ley Foon Tan
2014-07-21 10:51       ` Arnd Bergmann
2014-07-21 11:10         ` Ley Foon Tan
2014-07-21 11:10           ` Ley Foon Tan
2014-07-15 10:00   ` Thomas Gleixner
2014-07-21 11:09     ` Ley Foon Tan
2014-07-21 11:09       ` Ley Foon Tan
2014-07-21 12:35       ` Thomas Gleixner
2014-07-15  8:45 ` [PATCH v2 20/29] nios2: Cpuinfo handling Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  9:47   ` Arnd Bergmann
2014-07-15  9:47     ` Arnd Bergmann
2014-07-18  2:43     ` Ley Foon Tan
2014-08-07  5:06       ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 21/29] nios2: Futex operations Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15 10:03   ` Thomas Gleixner
2014-07-15 10:03     ` Thomas Gleixner
2014-07-17 10:55     ` Ley Foon Tan
2014-07-17 11:07       ` Arnd Bergmann
2014-07-17 11:07         ` Arnd Bergmann
2014-07-18  6:07         ` Ley Foon Tan
2014-07-18  9:09           ` Arnd Bergmann
2014-07-18  9:42             ` Thomas Gleixner
2014-07-18  9:42               ` Thomas Gleixner
2014-07-18  9:55               ` Arnd Bergmann
2014-07-21  3:20                 ` Ley Foon Tan
2014-07-21  3:20                   ` Ley Foon Tan
2014-07-21  8:01                   ` Arnd Bergmann
2014-07-21 10:24                     ` Ley Foon Tan
2014-08-05  8:49                 ` Geert Uytterhoeven
2014-07-15  8:45 ` [PATCH v2 22/29] nios2: Miscellaneous header files Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15 10:22   ` Arnd Bergmann
2014-07-15 10:22     ` Arnd Bergmann
2014-07-15 11:03     ` Chung-Lin Tang
2014-07-15 12:27       ` Arnd Bergmann [this message]
2014-07-18  6:15         ` Chung-Lin Tang
2014-07-18  6:15           ` Chung-Lin Tang
2014-07-18  9:18           ` Arnd Bergmann
2014-07-18  9:18             ` Arnd Bergmann
2014-07-16  7:03     ` Ley Foon Tan
2014-07-16  7:03       ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 23/29] nios2: Nios2 registers Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 24/29] nios2: Module support Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15 10:24   ` Arnd Bergmann
2014-07-15 10:24     ` Arnd Bergmann
2014-07-15 11:12     ` Tobias Klauser
2014-07-15 11:12       ` Tobias Klauser
2014-07-15 12:21       ` Arnd Bergmann
2014-07-15 12:21         ` Arnd Bergmann
2014-07-16  1:36         ` LF.Tan
2014-07-16  1:36           ` LF.Tan
2014-07-16  1:32     ` Ley Foon Tan
2014-07-16  1:32       ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 25/29] nios2: ptrace support Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 26/29] Add ELF machine define for Nios2 Ley Foon Tan
2014-07-15  9:04   ` Tobias Klauser
2014-07-15  9:04     ` Tobias Klauser
2014-07-15  9:40     ` Ley Foon Tan
2014-07-15  9:40       ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 27/29] MAINTAINERS: Add nios2 maintainer Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15 11:10   ` Joe Perches
2014-07-16  1:08     ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 28/29] Documentation: Add documentation for Nios2 architecture Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-15  8:45 ` [PATCH v2 29/29] nios2: Build infrastructure Ley Foon Tan
2014-07-15  8:45   ` Ley Foon Tan
2014-07-16 19:50   ` Paul Bolle
2014-07-16 19:50     ` Paul Bolle
2014-07-17  9:35   ` Sam Ravnborg
2014-07-17  9:35     ` Sam Ravnborg
2014-07-15  9:08 ` [PATCH v2 00/29] nios2 Linux kernel port Tobias Klauser
2014-07-15  9:08   ` Tobias Klauser
2014-07-15  9:38   ` Ley Foon Tan
2014-07-15  9:38     ` Ley Foon Tan
2014-07-15 11:15     ` Tobias Klauser
2014-07-16  1:21       ` Ley Foon Tan
2014-07-16  1:21         ` Ley Foon Tan
2014-07-15 13:16 ` David Howells
2014-07-15 13:16   ` David Howells
2014-07-15 13:19   ` Richard Weinberger
2014-07-15 14:20     ` David Howells
2014-07-15 20:27       ` Richard Weinberger
2014-07-15 22:36         ` David Howells
2014-07-15 22:36           ` David Howells
2014-07-15 22:45           ` Greg KH
2014-07-15 22:45             ` Greg KH

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=4477048.XUlURsz4uq@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox