|| sizeof (RSEQ_SELF()->member) == 4 \
|| sizeof (RSEQ_SELF()->member) == 8, \
"size of rseq data"); \
- (*(__typeof (RSEQ_SELF()->member) __seg_gs *) \
- (__rseq_offset + offsetof (struct rseq_area, member))); \
+ ((struct rseq_area __seg_gs *)__rseq_offset)->member; \
})
/* Read member of the RSEQ area directly, with single-copy atomicity semantics.
_Static_assert (sizeof (RSEQ_SELF()->member) == 1 \
|| sizeof (RSEQ_SELF()->member) == 4, \
"size of rseq data"); \
- (*(volatile __typeof (RSEQ_SELF()->member) __seg_gs *) \
- (__rseq_offset + offsetof (struct rseq_area, member))); \
+ ((volatile struct rseq_area __seg_gs *)__rseq_offset)->member; \
})
/* Set member of the RSEQ area directly. */
|| sizeof (RSEQ_SELF()->member) == 4 \
|| sizeof (RSEQ_SELF()->member) == 8, \
"size of rseq data"); \
- (*(__typeof (RSEQ_SELF()->member) __seg_gs *) \
- (__rseq_offset + offsetof (struct rseq_area, member)) = (value)); \
+ ((struct rseq_area __seg_gs *)__rseq_offset)->member = (value); \
})
/* Set member of the RSEQ area directly, with single-copy atomicity semantics.
_Static_assert (sizeof (RSEQ_SELF()->member) == 1 \
|| sizeof (RSEQ_SELF()->member) == 4, \
"size of rseq data"); \
- (*(volatile __typeof (RSEQ_SELF()->member) __seg_gs *) \
- (__rseq_offset + offsetof (struct rseq_area, member)) = (value)); \
+ ((volatile struct rseq_area __seg_gs *)__rseq_offset)->member = (value); \
})
|| sizeof (RSEQ_SELF()->member) == 4 \
|| sizeof (RSEQ_SELF()->member) == 8, \
"size of rseq data"); \
- (*(__typeof (RSEQ_SELF()->member) __seg_fs *) \
- (__rseq_offset + offsetof (struct rseq_area, member))); \
+ ((struct rseq_area __seg_fs *)__rseq_offset)->member; \
})
/* Read member of the RSEQ area directly, with single-copy atomicity semantics. */
|| sizeof (RSEQ_SELF()->member) == 4 \
|| sizeof (RSEQ_SELF()->member) == 8, \
"size of rseq data"); \
- (*(volatile __typeof (RSEQ_SELF()->member) __seg_fs *) \
- (__rseq_offset + offsetof (struct rseq_area, member))); \
+ ((volatile struct rseq_area __seg_fs *)__rseq_offset)->member; \
})
/* Set member of the RSEQ area directly. */
|| sizeof (RSEQ_SELF()->member) == 4 \
|| sizeof (RSEQ_SELF()->member) == 8, \
"size of rseq data"); \
- (*(__typeof (RSEQ_SELF()->member) __seg_fs *) \
- (__rseq_offset + offsetof (struct rseq_area, member)) = (value)); \
+ ((struct rseq_area __seg_fs *)__rseq_offset)->member = (value); \
})
/* Set member of the RSEQ area directly, with single-copy atomicity semantics. */
|| sizeof (RSEQ_SELF()->member) == 4 \
|| sizeof (RSEQ_SELF()->member) == 8, \
"size of rseq data"); \
- (*(volatile __typeof (RSEQ_SELF()->member) __seg_fs *) \
- (__rseq_offset + offsetof (struct rseq_area, member)) = (value)); \
+ ((volatile struct rseq_area __seg_fs *)__rseq_offset)->member = (value); \
})