[Armadillo:04835] Re: ht2020.cのht_outb ht_inbに関して

船戸 理生 email@hidden
2009年 12月 19日 (土) 17:26:59 JST


アイ電子 船戸です。

溝渕様、
ご回答ありがとうございます。
明示するための記述だったということですね。

下記の質問では、単に2重定義になっているようでしたので、
何か意図があったのかな、と思っただけだったのですが、
正直なところ、#defineマクロ関連はまだ不勉強で、
grepしながらソースも見ているのですが、

>> #define ht_outb(buf, addr)	__raw_writeb(buf, __io(addr))
> #define inb(p)	({ __u8 __v = __raw_readb(__io(p)); __v; })

から先の動作が、実際どういった動作と解釈するべきか、
完全には理解できておらず、特に

({ __u8 __v = __raw_readb(__io(p)); __v; })

がどう動作するのかが分かりません。

include/asm/io.hでは、
#define inb(p)	({ __u8 __v = __raw_readb(__io(p)); __v; })
なのに、ht_inbでは、
#define ht_inb(addr)		__raw_readb(__io(addr))
となっていたので、困惑しております。

Armadilloの問題とは離れるような気もするので、恐縮なのですが、
({ __u8 __v = __raw_readb(__io(p)); __v; })
はどう解釈したら良いのかご教授願えますでしょうか。

> 溝渕です。
> 
> 船戸 理生 wrote:
>> そのht2020.cにて、
>> #include<asm/io.h>
>> して、さらに
>> #define ht_outb(buf, addr)	__raw_writeb(buf, __io(addr))
>> としてoutbを再定義しているのは、何か理由があるのでしょうか。
> 
> include/asm/io.hでは以下のように定義されていますね。
> #define outb(v,p)		__raw_writeb(v,__io(p))
> 
> ht_outbを使用してもoutbを使用しても問題無いと思います。
> 
> 当時のasm/io.hの定義が今と違っていたか、ht2020としてのI/O空間への書き込
> みということを明確にするためにこうなっていると思います。
> 
>>
>> また、あえて
>> #define ht_inb(addr)		__raw_readb(__io(addr))
>> としてinbを再定義(改変?)されておりますが、
>> その理由はどういった事でしょうか。
>>
>> よろしくお願い致します。
> 
> こちらも上記と同様ですね。
> 
> include/asm/io.h
> #define inb(p)	({ __u8 __v = __raw_readb(__io(p)); __v; })
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 


-- 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

アイ電子株式会社 第一技術部
船戸 理生
〒215-0033 神奈川県川崎市麻生区栗木2-6-5
TEL:044-981-3866
FAX:044-981-3868
Email:email@hidden

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/



armadillo メーリングリストの案内