Try passing the function pointer through an opaque identity transform:
asm("" : "=r"(p) : "0"(main)); if ((uintptr_t)p & 1) /* do thumb case */
Try passing the function pointer through an opaque identity transform:
asm("" : "=r"(p) : "0"(main));
if ((uintptr_t)p & 1) /* do thumb case */