This is not right, AHB3 is definitely at 0x60000000 in the datasheet, and adding a cast to a literal is just going to do weird things later.  this should instead be (I believe)

#define PERIPH_BASE_AHB3 0x6000000U
#define FSMC_BASE (PERIPH_BASE_AHB3 + 0x4000000U)

This makes the literals unsigned, which should then do "the right thing"