> > FPGA_UART_DATA *ptr; > FPGA_UART_DATA kpd; What is the declaration of FPGA_UART_DATA? Could it be you are putting the "volatile" in the wrong place (e.g. making the POINTER volatile, rather than making the data POINTED TO volatile, or vis versa)?