Linux Kernel Architecture

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

Appendix A: Architecture Specifics


#else
int dummy; /* f’in gcc bug... */
#endif
};

The memory location for saving the floating-point registers and thelazy stateare held inthread_infoas
shown here:

include/asm-sparc64/thread_info.h
struct thread_info {
/* D$ line 1 */
struct task_struct *task;
unsigned long flags;
__u8 cpu;
__u8 fpsaved[7];
unsigned long ksp;

/* D$ line 2 */
unsigned long fault_address;
struct pt_regs *kregs;
struct exec_domain *exec_domain;
int preempt_count;
__u8 new_child;
__u8 syscall_noerror;
__u16 __pad;

unsigned long *utraps;

struct reg_window reg_window[NSWINS];
unsigned long rwbuf_stkptrs[NSWINS];

unsigned long gsr[7];
unsigned long xfsr[7];

__u64 __user *user_cntd0;
__u64 __user *user_cntd1;
__u64 kernel_cntd0, kernel_cntd1;
__u64 pcr_reg;

__u64 cee_stuff;

struct restart_block restart_block;

struct pt_regs *kern_una_regs;
unsigned int kern_una_insn;

unsigned long fpregs[0] __attribute__ ((aligned(64)));
};

A.7.5 Alpha


As classic RISC machines, Alpha CPUs employ a largeregister set whose members are identified mainly
by numbers according to an orderly principle. As already noted, the Alpha architecture uses the PAL
(privileged architecture level) code to perform system tasks. This code is also used in the implementation of
Free download pdf