Ignore:
Timestamp:
Oct 22, 2014, 12:43:10 PM (10 years ago)
Author:
cfuguet
Message:

reconf: modification in softs/lib/io.h header file

  • When performing an IO write with the physical address extension, restore the previous extension at the end of the function.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/softs/libs/io.h

    r850 r857  
    2222    uint32_t lsb = paddr & ((1ULL << CLUSTER_OFFSET_BITS)-1);
    2323
    24     asm volatile("mtc2   %2,     $24   \n"  /* DATA_PADDR_EXT <= msb */
     24    asm volatile("mfc2   $8,     $24   \n"  /* t0 <= DATA_PADDR_EXT  */
     25                 "mtc2   %2,     $24   \n"  /* DATA_PADDR_EXT <= msb */
    2526                 "lw     %0,     0(%1) \n"  /* value <= *paddr       */
    26                  "mtc2   $0,     $24   \n"  /* DATA_PADDR_EXT <= 0   */
     27                 "mtc2   $8,     $24   \n"  /* DATA_PADDR_EXT <= 0   */
    2728                 : "=r"(value)
    2829                 : "r"(lsb), "r"(msb)
    29                  : "memory");
     30                 : "$8", "memory");
    3031
    3132    return value;
     
    4243    uint32_t lsb = paddr & ((1ULL << CLUSTER_OFFSET_BITS)-1);
    4344
    44     asm volatile("mtc2   %2,     $24   \n"  /* DATA_PADDR_EXT <= msb */
     45    asm volatile("mfc2   $8,     $24   \n"  /* t0 <= DATA_PADDR_EXT  */
     46                 "mtc2   %2,     $24   \n"  /* DATA_PADDR_EXT <= msb */
    4547                 "sw     %0,     0(%1) \n"  /* value <= *paddr       */
    46                  "mtc2   $0,     $24   \n"  /* DATA_PADDR_EXT <= 0   */
     48                 "mtc2   $8,     $24   \n"  /* DATA_PADDR_EXT <= 0   */
    4749                 "sync                 \n"
    4850                 : /* no outputs */
    4951                 : "r"(value), "r"(lsb), "r"(msb)
    50                  : "memory");
     52                 : "$8", "memory");
    5153}
    5254
Note: See TracChangeset for help on using the changeset viewer.