Part Number: TDA4AL-Q1
HI
uint64 GetSystemTimer_u64(){
uint64 cur_t = 0;
cur_t = (*(volatile uint64_t*)(0x00a90008)) / TICKS_TO_US;
return cur_t;
}
run on r5, r5 is 32 bit width, 0x00a90008 is 64 bit width, when r5 read 64 bit 0x00a90008, it will read low 32 bit then read high 32 bit.
now if high 32 bit is 0x00000001 and low 32 bit is 0xffffffff, and r5 get low 32 bit 0xffffffff;
then the gtc is add to: 0x00000002(high 32) 0x00000000(low 32)
then r5 start get high 32 gtc, so r5 get 0x00000002, at last r5 get an wrong value 0x00000002 0xffffffff.
can it happen ?
