Force consecutive operation when using asm volatile macro
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: gcc-help@xxxxxxxxxxx
- Subject: Force consecutive operation when using asm volatile macro
- From: Jari Kuusisto <jari.h.kuusisto@xxxxxxxxx>
- Date: Mon, 06 Oct 2008 16:01:04 +0300
- User-agent: Thunderbird 2.0.0.17 (Windows/20080914)
Hello,
I've successfully updated gcc 2.95.3 to 4.3.2 (made necessary syntax
changes to code etc.).
With GCC 2.95.3 I've used a critical section asm volatile macro to enter
and exit critical sections in the code. When entering critical section,
there are two asm volatile lines needed. On critical section exit only
one asm volatile line is required.
After upgrading from gcc 2.95.3 to 4.3.2 the critical section handling
in the code stopped working. It seems that some of the code that should
be in critical section seems to be relocated outside the critical
section. I do know that asm volatile does not guarantee consecutive
execution of the code. I also know that using singe asm would fix this
problem, but in my case it is not possible.
I've managed to to get around this problem by replacing the critical
section macros with assembler functions as the blr instruction forces
the correct consecutive operation when entering and exiting critical
section. However, this function call type implementation seems to
significantly slow down runtime operation of the software. The result is
that the performance improvement gained with new gcc optimizations is
waisted due to this function call type implementation.
If I enable all other optimizations from -O2 but not the
-freorder-blocks the code is working with the old asm volatile macros,
but this is not an option.
Is there any other way to force the consecutive operation of asm
volatile macros?
BR. Jari Kuusisto
[Index of Archives]
[Linux C Programming]
[Linux Kernel]
[eCos]
[Fedora Development]
[Fedora Announce]
[Autoconf]
[The DWARVES Debugging Tools]
[Yosemite Campsites]
[Yosemite News]
[Linux GCC]