我目前正在处理与引用%gs
的某些内核模式代码相关的问题。这是正在发生的事情:
我有一个fairly large structure存储在%gs
寄存器中。我试图从该结构中获取/设置cpu_active_thread
值,该值恰好位于该结构内的偏移量0x8处。换句话说,我正试图获得/设置%gs:0x8
。问题是,当我得到值时,结果是文字值0x8。 (由于这不是一个有效的地址,我稍后会崩溃。)我怎样才能改变这一点,以便我将{8}的值加到基于%gs
的结构中?
如果您需要知道我是如何从结构中获取数据的,I am using these macros。谢谢!
编辑:我正在使用clang。上面的宏如下使用:
static inline thread_t
get_active_thread(void)
{
CPU_DATA_GET(cpu_active_thread,thread_t)
}