mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "David S. Miller" <davem@davemloft.net>
To: zippel@linux-m68k.org
Cc: rmk+lkml@arm.linux.org.uk, nickpiggin@yahoo.com.au,
	Linux-Kernel@vger.kernel.org, dipankar@in.ibm.com
Subject: Re: [PATCH 2/5] atomic: introduce atomic_inc_not_zero
Date: Sat, 17 Sep 2005 00:18:22 -0700 (PDT)	[thread overview]
Message-ID: <20050917.001822.46482906.davem@davemloft.net> (raw)
In-Reply-To: <Pine.LNX.4.61.0509170234180.3743@scrub.home>

From: Roman Zippel <zippel@linux-m68k.org>
Date: Sat, 17 Sep 2005 02:59:50 +0200 (CEST)

> My biggest problem here is the lack of gcc support to get the
> condition code out of an asm.

I agree, this is the biggest deficiency in gcc inline assembly and I
run into it all the time.

Things like __builtin_trap() would never even be needed if we could
communicate condition code state into and out of inline asm
statements, for example.

Sparc32 and sparc64 both have "trap on condition code" instructions.
__builtin_trap() will do the right thing, _BUT_ I want to emit nice
bug table entries like ppc64 does in asm-ppc64/bug.h, but I can't do
that without generating really crappy code.  And the whole limitation
comes from the fact that I can't tell ask gcc for "the condition codes
that result from test X" as the input for an asm.

So what would be great is something akin to:

	__asm__ __volatile__("t%cc	0x5"
			     : "=C" (test));

or something like that.  The "%cc" thing would be expand to the
appropriate two/three letter condition test type code, for example
"ne", "eq", "ge", "ltu" and the like.  GCC could choose the best
comparison + %cc code, as it already does for conditional branch
generation.

It could even help on platforms like ppc64 where the trap condition
instruction does a test of a register against an immediate value.
Something like "BUG_ON(a != 2)" is probably emitting something like:

	sub	%a, 2, %tmp
	tdnei	%tmp, 0

whereas this could be:

	tdnei	%tmp, 2

if GCC has some inline asm condition code input facility like the
above.

  reply	other threads:[~2005-09-17  7:18 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-14 14:48 [PATCH 1/5] atomic: introduce atomic_cmpxchg Nick Piggin
2005-09-14 14:49 ` [PATCH 2/5] atomic: introduce atomic_inc_not_zero Nick Piggin
2005-09-14 14:51   ` [PATCH 3/5] rcu file: use atomic primitives Nick Piggin
2005-09-14 14:55     ` [PATCH 4/5] atomic: dec_and_lock use cmpxchg Nick Piggin
2005-09-14 15:01       ` [PATCH 5/5] remove HAVE_ARCH_CMPXCHG Nick Piggin
2005-09-14 16:31         ` Roman Zippel
2005-09-14 16:49           ` Nick Piggin
2005-09-14 17:59             ` David S. Miller
2005-09-14 22:03             ` Russell King
2005-09-14 22:26               ` David S. Miller
2005-09-15  7:10                 ` Russell King
2005-09-15 13:08         ` Alan Cox
2005-09-14 15:20       ` [PATCH 4/5] atomic: dec_and_lock use cmpxchg Nick Piggin
2005-09-14 16:24       ` David S. Miller
2005-09-14 16:52         ` Nick Piggin
2005-09-17  0:05           ` David S. Miller
2005-09-14 16:16   ` [PATCH 2/5] atomic: introduce atomic_inc_not_zero Roman Zippel
2005-09-14 16:44     ` Nick Piggin
2005-09-14 17:04       ` Nick Piggin
2005-09-14 17:18       ` Roman Zippel
2005-09-14 22:00         ` Russell King
2005-09-14 22:10           ` Roman Zippel
2005-09-14 22:21             ` Russell King
2005-09-15  1:51               ` Nick Piggin
2005-09-17  1:15                 ` Roman Zippel
2005-09-17  6:36                   ` Andrew Morton
2005-09-17 10:01                     ` Roman Zippel
2005-09-17  7:19                   ` David S. Miller
2005-09-17  7:34                   ` Dipankar Sarma
2005-09-18  8:08                   ` Nick Piggin
2005-09-17  0:59               ` Roman Zippel
2005-09-17  7:18                 ` David S. Miller [this message]
2005-09-17  7:27                   ` Russell King
2005-09-18  6:03                     ` David S. Miller
2005-09-14 15:17 ` [PATCH 1/5] atomic: introduce atomic_cmpxchg Russell King
2005-09-14 15:22   ` Nick Piggin

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=20050917.001822.46482906.davem@davemloft.net \
    --to=davem@davemloft.net \
    --cc=Linux-Kernel@vger.kernel.org \
    --cc=dipankar@in.ibm.com \
    --cc=nickpiggin@yahoo.com.au \
    --cc=rmk+lkml@arm.linux.org.uk \
    --cc=zippel@linux-m68k.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

all inboxes | Powered by JetHome®