Chinaunix首页 | 论坛 | 博客
  • 博客访问: 201254
  • 博文数量: 213
  • 博客积分: 1685
  • 博客等级: 上尉
  • 技术积分: 1515
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 19:22
文章分类

全部博文(213)

文章存档

2016年(7)

2014年(63)

2013年(87)

2012年(56)

我的朋友

分类: Android平台

2013-05-03 11:31:24


pt_regs结构:
这个结构封装了需要在内核入口中保存的最少的状态信息。比如说每一次的系统调用、中断、陷阱、故障时,pt_regs结构中保存了最少的状态信息。
/*
 * This struct defines the way the registers are stored on the
 * stack during a system call.  Note that sizeof(struct pt_regs)
 * has to be a multiple of 8.
 */
#ifndef __KERNEL__
struct pt_regs {
        long uregs[18];
};
#else /* __KERNEL__ */
struct pt_regs {
        unsigned long uregs[18];
};
#endif /* __KERNEL__ */


#define ARM_cpsr        uregs[16]
#define ARM_pc          uregs[15]
#define ARM_lr          uregs[14]
#define ARM_sp          uregs[13]
#define ARM_ip          uregs[12]
#define ARM_fp          uregs[11]
#define ARM_r10         uregs[10]
#define ARM_r9          uregs[9]
#define ARM_r8          uregs[8]
#define ARM_r7          uregs[7]
#define ARM_r6          uregs[6]
#define ARM_r5          uregs[5]
#define ARM_r4          uregs[4]
#define ARM_r3          uregs[3]
#define ARM_r2          uregs[2]
#define ARM_r1          uregs[1]
#define ARM_r0          uregs[0]
#define ARM_ORIG_r0     uregs[17]


(S_FRAME_SIZE, sizeof(struct ));

 166/* 
 * These are the registers used in the syscall handler, and allow us to  * have in theory up to 7 arguments to a function - r0 to r6.  *  * r7 is reserved for the system call number for thumb mode.  *  * Note that tbl == why is intentional.  *  * We must set at least "tsk" and "why" when calling ret_with_reschedule. 
 */ 
 scno .req    r7 @ syscall number 
 tbl .req    r8 @ syscall table pointer 
 why .req    r8 @ Linux syscall (!= 0) 
 tsk .req    r9 @ current thread_info

阅读(3035) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~