processor-i386.h

来自「linux 内核源代码」· C头文件 代码 · 共 80 行

H
80
字号
/* * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) * Licensed under the GPL */#ifndef __UM_PROCESSOR_I386_H#define __UM_PROCESSOR_I386_H#include "linux/string.h"#include "asm/host_ldt.h"#include "asm/segment.h"extern int host_has_xmm;extern int host_has_cmov;/* include faultinfo structure */#include "sysdep/faultinfo.h"struct uml_tls_struct {	struct user_desc tls;	unsigned flushed:1;	unsigned present:1;};struct arch_thread {	struct uml_tls_struct tls_array[GDT_ENTRY_TLS_ENTRIES];	unsigned long debugregs[8];	int debugregs_seq;	struct faultinfo faultinfo;};#define INIT_ARCH_THREAD { \	.tls_array  		= { [ 0 ... GDT_ENTRY_TLS_ENTRIES - 1 ] = \				    { .present = 0, .flushed = 0 } }, \	.debugregs  		= { [ 0 ... 7 ] = 0 }, \	.debugregs_seq		= 0, \	.faultinfo		= { 0, 0, 0 } \}static inline void arch_flush_thread(struct arch_thread *thread){	/* Clear any TLS still hanging */	memset(&thread->tls_array, 0, sizeof(thread->tls_array));}static inline void arch_copy_thread(struct arch_thread *from,                                    struct arch_thread *to){        memcpy(&to->tls_array, &from->tls_array, sizeof(from->tls_array));}#include "asm/arch/user.h"/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */static inline void rep_nop(void){	__asm__ __volatile__("rep;nop": : :"memory");}#define cpu_relax()	rep_nop()/* * Default implementation of macro that returns current * instruction pointer ("program counter"). Stolen * from asm-i386/processor.h */#define current_text_addr() \	({ void *pc; __asm__("movl $1f,%0\n1:":"=g" (pc)); pc; })#define ARCH_IS_STACKGROW(address) \       (address + 32 >= UPT_SP(&current->thread.regs.regs))#define KSTK_EIP(tsk) KSTK_REG(tsk, EIP)#define KSTK_ESP(tsk) KSTK_REG(tsk, UESP)#define KSTK_EBP(tsk) KSTK_REG(tsk, EBP)#include "asm/processor-generic.h"#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?