SLAZ281AA October   2012  – May 2021 MSP430F5419

 

  1.   1
  2.   2
  3.   3
  4.   4
  5.   5
    1.     6
    2.     7
      1.      8
    3.     9
  6.   10
    1.     11
    2.     12
    3.     13
    4.     14
    5.     15
    6.     16
    7.     17
    8.     18
    9.     19
    10.     20
    11.     21
    12.     22
    13.     23
    14.     24
    15.     25
    16.     26
    17.     27
    18.     28
    19.     29
    20.     30
    21.     31
    22.     32
    23.     33
    24.     34
    25.     35
    26.     36
    27.     37
    28.     38
    29.     39
    30.     40
    31.     41
    32.     42
    33.     43
    34.     44
    35.     45
    36.     46
    37.     47
    38.     48
    39.     49
    40.     50
    41.     51
    42.     52
    43.     53
    44.     54
    45.     55
    46.     56
    47.     57
    48.     58
    49.     59
    50.     60
    51.     61
    52.     62
    53.     63
    54.     64
    55.     65
    56.     66
    57.     67
    58.     68
    59.     69
    60.     70
    61.     71
    62.     72
    63.     73
    64.     74
    65.     75
    66.     76
    67.     77
    68.     78
    69.     79
    70.     80
    71.     81
    72.     82
    73.     83
    74.     84
    75.     85
    76.     86
    77.     87
    78.     88
    79.     89
    80.     90
    81.     91
    82.     92
    83.     93
    84.     94
    85.     95
    86.     96
    87.     97
    88.     98
    89.     99
    90.     100
    91.     101
    92.     102
    93.     103
    94.     104
    95.     105
    96.     106
    97.     107
    98.     108
    99.     109
    100.     110
    101.     111
    102.     112
    103.     113
    104.     114
    105.     115
    106.     116
    107.     117
    108.     118
    109.     119
    110.     120
    111.     121
    112.     122
    113.     123
    114.     124
    115.     125
    116.     126
    117.     127
    118.     128
  7.   129

CPU30

CPU Module

Category

Compiler-Fixed

Function

ADDA, SUBA, CMPA [immediate],PC behave as if immediate value were offset by -2

Description

The extended address instructions ADDA, SUBA, CMPA in immediate addressing mode are represented by 4-bytes of opcode (see the MSP430F5xx Family User's Guide MSP430F5xx Family User's Guide for more details). In cases where the program counter (PC) is used as the destination register only 2 bytes of the current instruction's 4-byte opcode are accounted for in the PC value. The resulting operation executes as if the immediate value were offset by a value of -2.

Ideal: ADDA #Immediate-4, PC

...is equivalent to...

Actual: ADDA #Immediate-2, PC

** NOTE: The MOV instruction is not affected **

Workaround

1) Modify immediate value in software to account for the offset of 2.  

OR

2) Use extended 20-bit instructions (addx.a, subx.a, cmpx.a).

Refer to the table below for compiler-specific fix implementation information.

IDE/Compiler Version Number Notes
IAR Embedded Workbench IAR EW430 v5.30 or later IDE-based usage enables the workaround automatically. When using the command line, user is required to add the option below: Linker: -D?CPU30_OFFSET=2
TI MSP430 Compiler Tools (Code Composer Studio) v4.0 or later
MSP430 GNU Compiler (MSP430-GCC) Not affected