From: "H. Peter Anvin" <hpa@zytor.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
akpm@linux-foundation.org, linux-kernel@vger.kernel.org
Subject: Re: [patch 0/2] Immediate Values - jump patching update
Date: Mon, 28 Apr 2008 15:25:42 -0700 [thread overview]
Message-ID: <48164EE6.8010506@zytor.com> (raw)
In-Reply-To: <20080428221122.GC16153@elte.hu>
Ingo Molnar wrote:
>
> [ .... fastpath head .... ]
> [ immediate value instruction ] --->
> [ branch instruction ] ---> these two get NOP-ed out
> [ .... fastpath tail .... ]
> [ ............................. ]
> [ ... offline area ............ ]
> [ ... parameter preparation ... ]
> [ ... marker call ............. ]
>
> your proposed 5-byte call NOP approach (which btw. was what i proposed
> multiple times in the past 2 years) would do this:
>
> [ .... fastpath head ...... ]
> [ ... parameter preparation ... ]
> [ .... 5-byte CALL .......... ] ---> NOP-ed out
> [ .... fastpath tail .......... ]
> [ ............................. ]
>
> in the first case we have little "marker parameter/value preparation"
> cost: it all happens in the 'offline area' _by GCC_. I.e. the fastpath
> is relatively undisturbed.
No, that's not what I'm proposing at all (and would indeed be bogus.)
What I'm proposing is:
> [ .... fastpath head ...... ]
> [ .... 5-byte CALL .......... ] ---> NOP-ed out
> [ .... fastpath tail .......... ]
> [ ............................. ]
The call site is created with an asm() statement as opposed to a gcc
function call; it is up to the logging function to take the state and
mangle it into whatever format it wants to; the debugging information
(e.g. DWARF) should tell it all it needs to know about how the
register/memory state maps onto the C state. This mapping can either be
done online, with a small piece of dynamic code, or offline (although
offline makes it tricky to know what memory tems to gather.)
For pieces of data which would be dead at the call site, one can add "g"
annotations to the asm() statement to force it to be live without
forcing it to be present in any particular location.
-hpa
next prev parent reply other threads:[~2008-04-28 22:26 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-28 3:34 [patch 0/2] Immediate Values - jump patching update Mathieu Desnoyers
2008-04-28 3:34 ` [patch 1/2] Immediate Values - jump liveliness Mathieu Desnoyers
2008-04-28 3:34 ` [patch 2/2] Markers - use imv_cond " Mathieu Desnoyers
2008-04-28 12:48 ` [patch 0/2] Immediate Values - jump patching update Ingo Molnar
2008-04-28 14:35 ` Mathieu Desnoyers
2008-04-28 17:21 ` H. Peter Anvin
2008-04-28 20:25 ` Ingo Molnar
2008-04-28 21:03 ` H. Peter Anvin
2008-04-28 22:11 ` Ingo Molnar
2008-04-28 22:25 ` H. Peter Anvin [this message]
2008-04-28 22:44 ` Ingo Molnar
2008-04-28 23:06 ` H. Peter Anvin
2008-04-29 0:47 ` Frank Ch. Eigler
2008-04-29 1:08 ` H. Peter Anvin
2008-04-29 12:08 ` Ingo Molnar
2008-05-14 14:53 ` Pavel Machek
2008-04-29 1:46 ` Mathieu Desnoyers
2008-04-29 2:07 ` H. Peter Anvin
2008-04-29 12:18 ` Mathieu Desnoyers
2008-04-29 15:35 ` H. Peter Anvin
2008-05-04 14:54 ` Mathieu Desnoyers
2008-05-04 21:05 ` H. Peter Anvin
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=48164EE6.8010506@zytor.com \
--to=hpa@zytor.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.