📄 processor.h
字号:
/* * linux/include/asm-arm/processor.h * * Copyright (C) 1995-2002 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#ifndef __ASM_ARM_PROCESSOR_H#define __ASM_ARM_PROCESSOR_H/* * Default implementation of macro that returns current * instruction pointer ("program counter"). */#define current_text_addr() ({ __label__ _l; _l: &&_l;})#define FP_SIZE 35struct fp_hard_struct { unsigned int save[FP_SIZE]; /* as yet undefined */};struct fp_soft_struct { unsigned int save[FP_SIZE]; /* undefined information */};union fp_state { struct fp_hard_struct hard; struct fp_soft_struct soft;};typedef unsigned long mm_segment_t; /* domain register */#ifdef __KERNEL__#define EISA_bus 0#define MCA_bus 0#define MCA_bus__is_a_macro#include <asm/atomic.h>#include <asm/ptrace.h>#if 0 /* XXX###XXX */#include <asm/arch/memory.h>#endif /* XXX###XXX */#include <asm/proc/processor.h>#include <asm/types.h>union debug_insn { u32 arm; u16 thumb;};struct debug_entry { u32 address; union debug_insn insn;};struct debug_info { int nsaved; struct debug_entry bp[2];};struct thread_struct { atomic_t refcount; /* fault info */ unsigned long address; unsigned long trap_no; unsigned long error_code; /* floating point */ union fp_state fpstate; /* debugging */ struct debug_info debug; /* context info */ struct context_save_struct *save; EXTRA_THREAD_STRUCT};#define INIT_THREAD { \ refcount: ATOMIC_INIT(1), \ EXTRA_THREAD_STRUCT_INIT \}/* * Return saved PC of a blocked thread. */static inline unsigned long thread_saved_pc(struct thread_struct *t){ return t->save ? pc_pointer(t->save->pc) : 0;}static inline unsigned long thread_saved_fp(struct thread_struct *t){ return t->save ? t->save->fp : 0;}/* Forward declaration, a strange C thing */struct task_struct;/* Free all resources held by a thread. */extern void release_thread(struct task_struct *);/* Copy and release all segment info associated with a VM */#define copy_segments(tsk, mm) do { } while (0)#define release_segments(mm) do { } while (0)unsigned long get_wchan(struct task_struct *p);#define THREAD_SIZE (8192)extern struct task_struct *alloc_task_struct(void);extern void __free_task_struct(struct task_struct *);#define get_task_struct(p) atomic_inc(&(p)->thread.refcount)#define free_task_struct(p) \ do { \ if (atomic_dec_and_test(&(p)->thread.refcount)) \ __free_task_struct((p)); \ } while (0)#define init_task (init_task_union.task)#define init_stack (init_task_union.stack)#define cpu_relax() barrier()/* * Create a new kernel thread */extern int arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);#endif#endif /* __ASM_ARM_PROCESSOR_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -