Messages in this thread | | | Date | Mon, 25 Sep 2006 17:06:55 -0700 | From | Jeremy Fitzhardinge <> | Subject | Re: [PATCH] Linux Kernel Markers 0.13 for 2.6.17 |
| |
Mathieu Desnoyers wrote: > +/* Note : max 256 bytes between over_label and near_jump */ > +#define MARK_JUMP(name, format, args...) \ > + do { \ > + asm volatile( ".section .markers, \"a\";\n\t" \ > + ".long 0f, 1f, 2f;\n\t" \ > + ".previous;\n\t" \ > + ".align 16;\n\t" \ > + ".byte 0xeb;\n\t" \ > + "0:\n\t" \ > + ".byte 2f-1f;\n\t" \ > + "1:\n\t" \ > + : "+m" (__marker_sequencer) : ); \ > + MARK_CALL(name, format, ## args); \ > + asm volatile ( "2:\n\t" : "+m" (__marker_sequencer) : ); \ >
Unfortunately this doesn't work either. The two asms are ordered with respect to each other, but there's nothing to 1) stop the MARK_CALL from being moved out between them, 2) something else being moved in between them. I don't really see a way out of this without implementing the whole call in assembler as well, which is a big pain.
J - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |