# HG changeset patch # User Mychaela Falconia # Date 1532054886 0 # Node ID 8019491a67a9821a082d9178b33e5abc988bb551 # Parent 1fb5f04c57d4766cd35fd87852cd87cc0095e8dc .../drv_app/ffs/board/drv.c: gcc has trouble with Thumb bit voodoo diff -r 1fb5f04c57d4 -r 8019491a67a9 src/cs/drivers/drv_app/ffs/board/drv.c --- a/src/cs/drivers/drv_app/ffs/board/drv.c Fri Jul 20 01:09:12 2018 +0000 +++ b/src/cs/drivers/drv_app/ffs/board/drv.c Fri Jul 20 02:48:06 2018 +0000 @@ -1287,7 +1287,12 @@ sizeof(detect_code)); // Combine bit 0 of the thumb mode function pointer with the address // of the code in RAM. Then call the detect function in RAM. +#ifdef __GNUC__ + /* gcc fails to do the needed trick, so force Thumb */ + myfp = (pf_t) (((int) detect_code) | 1); +#else myfp = (pf_t) (((int) &ffsdrv_device_id_read & 1) | (int) detect_code); +#endif (*myfp)(&dev.manufact, device_id); if ((dev.manufact == MANUFACT_AMD || dev.manufact == MANUFACT_FUJITSU) &&