Linux Kernel Architecture

(Jacob Rumans) #1
Mauerer runapp01.tex V1 - 09/04/2008 6:08pm Page 1125

Appendix A: Architecture Specifics


unsigned long ar_unat; /* interrupted task’s NaT register (preserved) */
unsigned long ar_pfs; /* prev function state */
unsigned long ar_rsc; /* RSE configuration */
/* The following two are valid only if cr_ipsr.cpl > 0 || ti->flags & _TIF_MCA_INIT */
unsigned long ar_rnat; /* RSE NaT */
unsigned long ar_bspstore; /* RSE bspstore */

unsigned long pr; /* 64 predicate registers (1 bit each) */
unsigned long b0; /* return pointer (bp) */
unsigned long loadrs; /* size of dirty partition << 16 */

unsigned long r1; /* the gp pointer */
unsigned long r12; /* interrupted task’s memory stack pointer */
unsigned long r13; /* thread pointer */

unsigned long ar_fpsr; /* floating point status (preserved) */
unsigned long r15; /* scratch */

/* The remaining registers are NOT saved for system calls. */

unsigned long r14; /* scratch */
unsigned long r2; /* scratch */
unsigned long r3; /* scratch */

/* The following registers are saved by SAVE_REST: */
unsigned long r16; /* scratch */
unsigned long r17; /* scratch */
unsigned long r18; /* scratch */
unsigned long r19; /* scratch */
unsigned long r20; /* scratch */
unsigned long r21; /* scratch */
unsigned long r22; /* scratch */
unsigned long r23; /* scratch */
unsigned long r24; /* scratch */
unsigned long r25; /* scratch */
unsigned long r26; /* scratch */
unsigned long r27; /* scratch */
unsigned long r28; /* scratch */
unsigned long r29; /* scratch */
unsigned long r30; /* scratch */
unsigned long r31; /* scratch */

unsigned long ar_ccv; /* compare/exchange value (scratch) */

/*



  • Floating point registers that the kernel considers scratch:
    /
    struct ia64_fpreg f6; /
    scratch /
    struct ia64_fpreg f7; /
    scratch /
    struct ia64_fpreg f8; /
    scratch /
    struct ia64_fpreg f9; /
    scratch /
    struct ia64_fpreg f10; /
    scratch /
    struct ia64_fpreg f11; /
    scratch */
    };

Free download pdf