From: fjohnber@zoho.com (Fredrick)
To: kernelnewbies@lists.kernelnewbies.org
Subject: DEFINE Macro
Date: Fri, 06 Jan 2012 08:09:17 -0800 [thread overview]
Message-ID: <4F071CAD.4060908@zoho.com> (raw)
In-Reply-To: <20120106140925.GF14353@joshcartwright.net>
Nice! Thanks for the explanation Josh.
-Fredrick
On 01/06/2012 06:09 AM, Josh Cartwright wrote:
> On Thu, Jan 05, 2012 at 07:32:48PM -0800, Fredrick wrote:
>> Hi,
>>
>> I am not able to understand the DEFINE macro used in
>> arch/powerpc/kernel/asm-offsets.c
>>
>> I suppose the DEFINE is present in
>> include/linux/kbuild.h
>> where it says
>> #define DEFINE(sym, val) \
>> asm volatile("\n->" #sym " %0 " #val : : "i" (val))
>>
>> What does the above mean?
>
> This is just a trick to get the offsets of members into a generated header file
> asm-offsets.h. The inline assembly does NOT contain valid instructions,
> and in fact, asm-offsets.c is never actually assembled into a program.
> Instead, the build process generates the assembly language output
> asm-offsets.s, and processes it with a sed script to generate
> asm-offsets.h.
>
> For example (assume offsetof(struct thread_struct, regs) is 30):
>
> DEFINE(PT_REGS, offsetof(struct thread_struct, regs));
>
> will generate within the assembly language output:
>
> ->PT_REGS $30 offsetof(struct thread_struct, regs)
>
> A sed script, executed on the assembly language output will generate a
> line in include/generated/asm-offsets.h:
>
> #define PT_REGS 30 /* offsetof(struct thread_struct, regs) */
>
> Thats about it. You can find the exact sed script used, and the make
> magic involved in Kbuild (see cmd_offsets).
>
prev parent reply other threads:[~2012-01-06 16:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-06 3:32 DEFINE Macro Fredrick
2012-01-06 6:12 ` mypopy at gmail.com
2012-01-06 14:09 ` Josh Cartwright
2012-01-06 16:09 ` Fredrick [this message]
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=4F071CAD.4060908@zoho.com \
--to=fjohnber@zoho.com \
--cc=kernelnewbies@lists.kernelnewbies.org \
/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.