Technical information

Operating Precautions for CPDW9X/NT-CDR-V85X, Y-GHS-MULTI-V800
TM
Customer Notification r20tu0003ed1812 44
No. a31
Wrong memory access optimization on SFR's volatile variables.
test.s:
void Set_DPRAM8( unsigned short address, unsigned char data )
{
0x6a0 Set_DPRAM8: 00c6 zxh r6
0x6a2 Set_DPRAM8+0x2: 0087 zxb r7
if( (address & 0x0001) == 0x0000 )
0x6a4 Set_DPRAM8+0x4: 86c60001 andi 0x1, r6, r16
0x6a8 Set_DPRAM8+0x8: 6806 mov r6, r13
0x6aa Set_DPRAM8+0xa: 05ca bne Set_DPRAM8+0x12
(0x6b2)
{
FLRAP = address;
FLRDTL = data;
0x6ac Set_DPRAM8+0xc: 3f40fcc8 st.b r7, -824[zero]
0x6b0 Set_DPRAM8+0x10: 05c5 br Set_DPRAM8+0x18
(0x6b8)
}
else
{
FLRAP = address-1;
0x6b2 Set_DPRAM8+0x12: 6a5f add -1, r13
FLRDTH = data;
0x6b4 Set_DPRAM8+0x14: 3f40fcc9 st.b r7, -823[zero]
0x6b8 Set_DPRAM8+0x18: 6f60fcca st.h r13, -822[zero]
}
}
0x6bc Set_DPRAM8+0x1c: 007f jmp [lp]
Workaround
A new compiler (PATCH to 3.5.1b4), which fixes this problem, can be downloaded from the NEC
WEB page(s) at http://www.renesas.eu/updates?id=443