aboutsummaryrefslogtreecommitdiff
path: root/arch/s390/include/asm/lowcore.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/include/asm/lowcore.h')
-rw-r--r--arch/s390/include/asm/lowcore.h26
1 files changed, 10 insertions, 16 deletions
diff --git a/arch/s390/include/asm/lowcore.h b/arch/s390/include/asm/lowcore.h
index c25dfac7dd7..8ed3c745cd0 100644
--- a/arch/s390/include/asm/lowcore.h
+++ b/arch/s390/include/asm/lowcore.h
@@ -144,7 +144,9 @@ void pgm_check_handler(void);
void mcck_int_handler(void);
void io_int_handler(void);
-struct save_area_s390 {
+#ifdef CONFIG_32BIT
+
+struct save_area {
u32 ext_save;
u64 timer;
u64 clk_cmp;
@@ -158,7 +160,11 @@ struct save_area_s390 {
u32 ctrl_regs[16];
} __attribute__((packed));
-struct save_area_s390x {
+#define SAVE_AREA_BASE offsetof(struct _lowcore, extended_save_area_addr)
+
+#else /* CONFIG_32BIT */
+
+struct save_area {
u64 fp_regs[16];
u64 gp_regs[16];
u8 psw[16];
@@ -174,21 +180,9 @@ struct save_area_s390x {
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
+#define SAVE_AREA_BASE offsetof(struct _lowcore, floating_pt_save_area)
-#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
-#endif
+#endif /* CONFIG_32BIT */
#ifndef __s390x__
#define LC_ORDER 0