lowcore.h
来自「linux 内核源代码」· C头文件 代码 · 共 428 行 · 第 1/2 页
H
428 行
/* * include/asm-s390/lowcore.h * * S390 version * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation * Author(s): Hartmut Penner (hp@de.ibm.com), * Martin Schwidefsky (schwidefsky@de.ibm.com), * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) */#ifndef _ASM_S390_LOWCORE_H#define _ASM_S390_LOWCORE_H#ifndef __s390x__#define __LC_EXT_OLD_PSW 0x018#define __LC_SVC_OLD_PSW 0x020#define __LC_PGM_OLD_PSW 0x028#define __LC_MCK_OLD_PSW 0x030#define __LC_IO_OLD_PSW 0x038#define __LC_EXT_NEW_PSW 0x058#define __LC_SVC_NEW_PSW 0x060#define __LC_PGM_NEW_PSW 0x068#define __LC_MCK_NEW_PSW 0x070#define __LC_IO_NEW_PSW 0x078#else /* !__s390x__ */#define __LC_EXT_OLD_PSW 0x0130#define __LC_SVC_OLD_PSW 0x0140#define __LC_PGM_OLD_PSW 0x0150#define __LC_MCK_OLD_PSW 0x0160#define __LC_IO_OLD_PSW 0x0170#define __LC_EXT_NEW_PSW 0x01b0#define __LC_SVC_NEW_PSW 0x01c0#define __LC_PGM_NEW_PSW 0x01d0#define __LC_MCK_NEW_PSW 0x01e0#define __LC_IO_NEW_PSW 0x01f0#endif /* !__s390x__ */#define __LC_IPL_PARMBLOCK_PTR 0x014#define __LC_EXT_PARAMS 0x080#define __LC_CPU_ADDRESS 0x084#define __LC_EXT_INT_CODE 0x086#define __LC_SVC_ILC 0x088#define __LC_SVC_INT_CODE 0x08A#define __LC_PGM_ILC 0x08C#define __LC_PGM_INT_CODE 0x08E#define __LC_PER_ATMID 0x096#define __LC_PER_ADDRESS 0x098#define __LC_PER_ACCESS_ID 0x0A1#define __LC_AR_MODE_ID 0x0A3#define __LC_SUBCHANNEL_ID 0x0B8#define __LC_SUBCHANNEL_NR 0x0BA#define __LC_IO_INT_PARM 0x0BC#define __LC_IO_INT_WORD 0x0C0#define __LC_MCCK_CODE 0x0E8#define __LC_RETURN_PSW 0x200#define __LC_SAVE_AREA 0xC00#ifndef __s390x__#define __LC_IRB 0x208#define __LC_SYNC_ENTER_TIMER 0x248#define __LC_ASYNC_ENTER_TIMER 0x250#define __LC_EXIT_TIMER 0x258#define __LC_LAST_UPDATE_TIMER 0x260#define __LC_USER_TIMER 0x268#define __LC_SYSTEM_TIMER 0x270#define __LC_LAST_UPDATE_CLOCK 0x278#define __LC_STEAL_CLOCK 0x280#define __LC_RETURN_MCCK_PSW 0x288#define __LC_KERNEL_STACK 0xC40#define __LC_THREAD_INFO 0xC44#define __LC_ASYNC_STACK 0xC48#define __LC_KERNEL_ASCE 0xC4C#define __LC_USER_ASCE 0xC50#define __LC_PANIC_STACK 0xC54#define __LC_CPUID 0xC60#define __LC_CPUADDR 0xC68#define __LC_IPLDEV 0xC7C#define __LC_JIFFY_TIMER 0xC80#define __LC_CURRENT 0xC90#define __LC_INT_CLOCK 0xC98#else /* __s390x__ */#define __LC_IRB 0x210#define __LC_SYNC_ENTER_TIMER 0x250#define __LC_ASYNC_ENTER_TIMER 0x258#define __LC_EXIT_TIMER 0x260#define __LC_LAST_UPDATE_TIMER 0x268#define __LC_USER_TIMER 0x270#define __LC_SYSTEM_TIMER 0x278#define __LC_LAST_UPDATE_CLOCK 0x280#define __LC_STEAL_CLOCK 0x288#define __LC_RETURN_MCCK_PSW 0x290#define __LC_KERNEL_STACK 0xD40#define __LC_THREAD_INFO 0xD48#define __LC_ASYNC_STACK 0xD50#define __LC_KERNEL_ASCE 0xD58#define __LC_USER_ASCE 0xD60#define __LC_PANIC_STACK 0xD68#define __LC_CPUID 0xD80#define __LC_CPUADDR 0xD88#define __LC_IPLDEV 0xDB8#define __LC_JIFFY_TIMER 0xDC0#define __LC_CURRENT 0xDD8#define __LC_INT_CLOCK 0xDE8#endif /* __s390x__ */#define __LC_PANIC_MAGIC 0xE00#ifndef __s390x__#define __LC_PFAULT_INTPARM 0x080#define __LC_CPU_TIMER_SAVE_AREA 0x0D8#define __LC_CLOCK_COMP_SAVE_AREA 0x0E0#define __LC_PSW_SAVE_AREA 0x100#define __LC_PREFIX_SAVE_AREA 0x108#define __LC_AREGS_SAVE_AREA 0x120#define __LC_FPREGS_SAVE_AREA 0x160#define __LC_GPREGS_SAVE_AREA 0x180#define __LC_CREGS_SAVE_AREA 0x1C0#else /* __s390x__ */#define __LC_PFAULT_INTPARM 0x11B8#define __LC_FPREGS_SAVE_AREA 0x1200#define __LC_GPREGS_SAVE_AREA 0x1280#define __LC_PSW_SAVE_AREA 0x1300#define __LC_PREFIX_SAVE_AREA 0x1318#define __LC_FP_CREG_SAVE_AREA 0x131C#define __LC_TODREG_SAVE_AREA 0x1324#define __LC_CPU_TIMER_SAVE_AREA 0x1328#define __LC_CLOCK_COMP_SAVE_AREA 0x1331#define __LC_AREGS_SAVE_AREA 0x1340#define __LC_CREGS_SAVE_AREA 0x1380#endif /* __s390x__ */#ifndef __ASSEMBLY__#include <asm/processor.h>#include <linux/types.h>#include <asm/sigp.h>void restart_int_handler(void);void ext_int_handler(void);void system_call(void);void pgm_check_handler(void);void mcck_int_handler(void);void io_int_handler(void);struct save_area_s390 { u32 ext_save; u64 timer; u64 clk_cmp; u8 pad1[24]; u8 psw[8]; u32 pref_reg; u8 pad2[20]; u32 acc_regs[16]; u64 fp_regs[4]; u32 gp_regs[16]; u32 ctrl_regs[16];} __attribute__((packed));struct save_area_s390x { u64 fp_regs[16]; u64 gp_regs[16]; u8 psw[16]; u8 pad1[8]; u32 pref_reg; u32 fp_ctrl_reg; u8 pad2[4]; u32 tod_reg; u64 timer; u64 clk_cmp; u8 pad3[8]; u32 acc_regs[16]; u64 ctrl_regs[16];} __attribute__((packed));union save_area { struct save_area_s390 s390; struct save_area_s390x s390x;};#define SAVE_AREA_BASE_S390 0xd4#define SAVE_AREA_BASE_S390X 0x1200#ifndef __s390x__#define SAVE_AREA_SIZE sizeof(struct save_area_s390)#define SAVE_AREA_BASE SAVE_AREA_BASE_S390#else#define SAVE_AREA_SIZE sizeof(struct save_area_s390x)#define SAVE_AREA_BASE SAVE_AREA_BASE_S390X#endifstruct _lowcore{#ifndef __s390x__ /* prefix area: defined by architecture */ psw_t restart_psw; /* 0x000 */ __u32 ccw2[4]; /* 0x008 */ psw_t external_old_psw; /* 0x018 */ psw_t svc_old_psw; /* 0x020 */ psw_t program_old_psw; /* 0x028 */ psw_t mcck_old_psw; /* 0x030 */ psw_t io_old_psw; /* 0x038 */ __u8 pad1[0x58-0x40]; /* 0x040 */ psw_t external_new_psw; /* 0x058 */ psw_t svc_new_psw; /* 0x060 */ psw_t program_new_psw; /* 0x068 */ psw_t mcck_new_psw; /* 0x070 */ psw_t io_new_psw; /* 0x078 */ __u32 ext_params; /* 0x080 */ __u16 cpu_addr; /* 0x084 */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?