[Top] [All Lists]

Re: using mprotect to write to .text

To: Joe Buehler <>
Subject: Re: using mprotect to write to .text
From: David Daney <>
Date: Tue, 11 Oct 2011 11:06:11 -0700
In-reply-to: <>
References: <> <> <>
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10
On 10/11/2011 10:31 AM, Joe Buehler wrote:
David Daney wrote:

No, it does nothing of the sort.  You need cacheflush() for that.

OK, I looked at cacheflush and it can be used to flush the icache on all
CPUs, which is what I want.  My current code sequence is more than that
however.  Something like this:


This only works if you can guarantee that the code will never be run on a different CPU than the current one. For most Linux code you cannot make such an assertion.



        uint64_t tmp;
        asm volatile ("    la %0,10f\n"
                  "    jr.hb %0\n"
                  "    nop\n"
                  "    10:\n" : "=r" (tmp) : : "memory");

jr.hb is equivalent to jr on Octeon.

I can certainly modify cacheflush for my application so the extra hazard
clearing is done when icache is flushed.  Is there any way to avoid that
and use existing kernel functionality?

I cannot parse the meaning out of these last two sentences. The cacheflush() system call both exists and works. You want to change it?

David Daney

<Prev in Thread] Current Thread [Next in Thread>