asm and "cc" "memory" volatile etc.. (slightly offtopic)

Richard Henderson rth@cygnus.com
Tue Nov 11 12:13:00 GMT 1997


On Tue, Nov 11, 1997 at 10:59:21AM -0700, Jeffrey A Law wrote:
>   > Is there some way to say gcc, that is just updates given block of memory
>   > (rtl expression for memcpy dont say clobbers:memory but says set BLK...
>   > is there any way to write this in asm?)
> I'm not aware of any way to selectively tell gcc that only a certain block
> of memory is read/clobbered by an asm (or any BLKmode instruction).

The following has been found to be effective.

	struct large_struct { unsigned long buf[1234]; };
	#define m(x) (*(struct large_struct *)(x))
	
	extern inline int test_bit(int nr, void *addr)
	{
		int ret;
		__asm__("btl %2,%1\n\tsbbl %0,%0"
			: "=r"(ret)
			: "m"(m(addr)), "ir"(nr));
		return ret;
	}


r~



More information about the Gcc mailing list