Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: "Kip Walker" <kwalker@broadcom.com>
To: "Ralf Baechle" <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: __volatile__ for asms in unaligned.c
Date: Thu, 20 Feb 2003 14:43:58 -0800	[thread overview]
Message-ID: <3E555A2E.5920F387@broadcom.com> (raw)


I just discovered that my compiler is scheduling the code in the asm
blocks in unaligned.c *before* the 'goto sigbus'.  My gcc is 3.1.1 with
some almost certainly unrelated local mods.

Anyway, is there a reason these aren't marked as volatile?  The gcc docs
have the scary comment "You can prevent an `asm' instruction from being
deleted, MOVED SIGNIFICANTLY, or combined, by writing the keyword
`volatile' after the`asm'."

Here's an example, for the lw_op case in the mips64 kernel:
---------
	case lw_op:
		if (verify_area(VERIFY_READ, addr, 4))
			goto sigbus;

		__asm__(
			"1:\tlwl\t%0, (%2)\n"
			"2:\tlwr\t%0, 3(%2)\n\t"
---------

Compiled with normal mips64 build flags (for SB1) was turned into:
---------
	### verify_area
        ld      $2,2400($28)
        daddu   $3,$5,4
        or      $3,$5,$3
        and     $2,$2,$3
        li      $4,-14                  # 0xfffffffffffffff2
        movz    $4,$0,$2
...
	### the asm code
        1:      lwl     $9, ($5)
2:      lwr     $9, 3($5)
        li      $3, 0
3:      .section        .fixup,"ax"
        4:      li      $3, -14
        j       3b

...
	### finally, the verify_area result check
        beq     $4,$0,$L1131

---------

Kip

             reply	other threads:[~2003-02-20 22:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-20 22:43 Kip Walker [this message]
2003-02-21  1:09 ` __volatile__ for asms in unaligned.c Ralf Baechle

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=3E555A2E.5920F387@broadcom.com \
    --to=kwalker@broadcom.com \
    --cc=linux-mips@linux-mips.org \
    --cc=ralf@linux-mips.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