#define LC_ORDER 1
 #define LC_PAGES 2
 
+struct pgm_tdb {
+       u64 data[32];
+};
+
 struct lowcore {
        __u8    pad_0x0000[0x0014-0x0000];      /* 0x0000 */
        __u32   ipl_parmblock_ptr;              /* 0x0014 */
        __u8    pad_0x1400[0x1800-0x1400];      /* 0x1400 */
 
        /* Transaction abort diagnostic block */
-       __u8    pgm_tdb[256];                   /* 0x1800 */
+       struct pgm_tdb pgm_tdb;                 /* 0x1800 */
        __u8    pad_0x1900[0x2000-0x1900];      /* 0x1900 */
 } __packed __aligned(8192);
 
 
        struct runtime_instr_cb *ri_cb;
        struct gs_cb *gs_cb;                    /* Current guarded storage cb */
        struct gs_cb *gs_bc_cb;                 /* Broadcast guarded storage cb */
-       unsigned char trap_tdb[256];            /* Transaction abort diagnose block */
+       struct pgm_tdb trap_tdb;                /* Transaction abort diagnose block */
        /*
         * Warning: 'fpu' is dynamically-sized. It *MUST* be at
         * the end.
 
                        struct membuf to)
 {
        struct pt_regs *regs = task_pt_regs(target);
+       size_t size;
 
        if (!(regs->int_code & 0x200))
                return -ENODATA;
-       return membuf_write(&to, target->thread.trap_tdb, 256);
+       size = sizeof(target->thread.trap_tdb.data);
+       return membuf_write(&to, target->thread.trap_tdb.data, size);
 }
 
 static int s390_tdb_set(struct task_struct *target,
 
        unsigned long address;
 
        if (regs->int_code & 0x200)
-               address = *(unsigned long *)(current->thread.trap_tdb + 24);
+               address = current->thread.trap_tdb.data[3];
        else
                address = regs->psw.addr;
        return (void __user *) (address - (regs->int_code >> 16));
 
        if (S390_lowcore.pgm_code & 0x0200) {
                /* transaction abort */
-               memcpy(¤t->thread.trap_tdb, &S390_lowcore.pgm_tdb, 256);
+               current->thread.trap_tdb = S390_lowcore.pgm_tdb;
        }
 
        if (S390_lowcore.pgm_code & PGM_INT_CODE_PER) {