C2000 MOVDL instruction tries to simultaneously access two memory locations across DP boundary

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: Medium
    • Code Generation Tools
    • CODEGEN-12260
    • Show
      https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1336530/tms320f28379d-c2000-compiler-with-optimization-accidentally-removing-instructions
    • Hide
      C2000_16.9.0.LTS
      C2000_18.1.0.LTS
      C2000_22.6.0.LTS
      C2000_15.12.0.LTS
      C2000_21.6.0.LTS
      C2000_18.12.0.LTS
      C2000_20.2.0.LTS
      Show
      C2000_16.9.0.LTS C2000_18.1.0.LTS C2000_22.6.0.LTS C2000_15.12.0.LTS C2000_21.6.0.LTS C2000_18.12.0.LTS C2000_20.2.0.LTS
    • Hide
      C2000_25.3.0.LTS*
      C2000_22.6.3.LTS*
      C2000_21.6.2.LTS*
      Show
      C2000_25.3.0.LTS* C2000_22.6.3.LTS* C2000_21.6.2.LTS*
    • default
    • Hide
      Detect this issue by looking for occurrences of MOVDL instruction that involve variables at memory locations as the last 32bit location on a data page in mapfile.

      If a MOVDL is generated with this issue, either move the variable definition in C code such that it is no longer allocated at the end of a data page, or use location pragma/attribute, or DATA_SECTION pragma (or section attribute).
      Show
      Detect this issue by looking for occurrences of MOVDL instruction that involve variables at memory locations as the last 32bit location on a data page in mapfile. If a MOVDL is generated with this issue, either move the variable definition in C code such that it is no longer allocated at the end of a data page, or use location pragma/attribute, or DATA_SECTION pragma (or section attribute).

      For C2000 devices, a MOVDL instruction might be generated to access two adjacent 32-bit memory locations, simultaneously issuing a load from the first and a store to the second. If these are direct memory operands, the data page pointer must first be loaded in the DP register. If a MOVDL instruction tries to access two adjacent data elements in the same structure that span a data page boundary (64 words), the DP register can only be loaded correctly for one of the accesses. In this case, a MOVDL instruction cannot be correctly used.

            Assignee:
            TI User
            Reporter:
            TI User
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Connection: Intermediate to External PROD System
                EXTSYNC-4449 - C2000 MOVDL instruction tries to si...
                SYNCHRONIZED
                • Last Sync Date: