typedef struct { unsigned char a; unsigned short b :5; unsigned char c; unsigned short d :11; } test_st; typedef union { test_st st; struct { unsigned int v1; unsigned int v2; unsigned int v3; unsigned int v4; }values; } read_st; typedef void __attribute__ ((cmse_nonsecure_call)) (*foo_ns) (test_st); int main (void) { read_st r; foo_ns f; f = (foo_ns) 0x200000; r.values.v1 = 0xFFFFFFFF; r.values.v2 = 0xFFFFFFFF; f (r.st); return 0; }