typedef struct { unsigned char a; unsigned int :0; unsigned int b :1; unsigned short :0; unsigned short c; unsigned int :0; unsigned int d :21; } 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; r.values.v3 = 0xFFFFFFFF; f (r.st); return 0; }