diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-01-17 17:20:01 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-01-17 17:20:01 +0100 |
| commit | 8ead82246bc00830d0271933df316e973be4ebcc (patch) | |
| tree | 98cdcd6a7d6f29d38e142ccaaf56fa905035ac36 /csource | |
| parent | 71c76ba158bee72569914f38f77d843649aee8d6 (diff) | |
csource: regenerate
Diffstat (limited to 'csource')
| -rw-r--r-- | csource/common.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/csource/common.go b/csource/common.go index 8117eed94..13034dee5 100644 --- a/csource/common.go +++ b/csource/common.go @@ -142,6 +142,18 @@ static void install_segv_handler() __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \ } +#define BITMASK_LEN(type, bf_len) (type)((1ul << bf_len) - 1) + +#define BITMASK_LEN_OFF(type, bf_off, bf_len) (type)(BITMASK_LEN(type, bf_len) << bf_off) + +#define STORE_BY_BITMASK(type, addr, val, bf_off, bf_len) \ + do { \ + type new_val = *(type*)addr; \ + new_val &= ~BITMASK_LEN_OFF(type, bf_off, bf_len); \ + new_val |= ((type)val & BITMASK_LEN(type, bf_len)) << bf_off; \ + *(type*)addr = new_val; \ + } while (0) + #ifdef __NR_syz_emit_ethernet static void vsnprintf_check(char* str, size_t size, const char* format, va_list args) { |
