2012-09-14 2 views
1

재설정 (0으로 설정) 특수 목적 레지스터 527 (Alt Time Base 레지스터 상단)을 재설정해야합니다.PowerPC 특수 용도 레지스터 재설정 방법

FUNC_BEGIN(sysAltTimeBaseUreset) 
    mtspr  527, 0x0000    /* reset high 32-bits of Alt. Time Base register */ 
    bclr  20,0     /* Return to caller */ 
FUNC_END(sysAltTimeBaseUreset) 

다음 기능은 확인을 작동하고, AltTimeBase 상위 레지스터의 내용을 반환 는하지만이 기능 sysAltTimeBaseUreset 내 Vx 웍스 대상의 파워 PC (프리 스케일 P2020)가 충돌합니다.

FUNC_BEGIN(sysAltTimeBaseUGet) 
    mfspr  r3, 527   /* high 32-bits of Alt. Time Base register */ 
    bclr  20,0     /* Return to caller */ 
FUNC_END(sysAltTimeBaseUGet) 

답변

1

감독자 레벨 소프트웨어 용으로 작성됩니다. 사용자 레벨 소프트웨어는 시간축 레지스터에 기록하는 것이 허용되지 않으며 일반적으로 두 개의 다른 시간에 레지스터를 읽고 경과 시간을 찾기 위해 빼기 충분합니다.

또한 더 낮은 시간 기준 레지스터가 래핑 될 때마다 변경되기 때문에 상위 시간 기준 레지스터를 쓰면 안됩니다. 레지스터 설정을위한 권장 절차는 더 낮은 시간 기준 레지스터를 0으로 설정하는 것입니다 (시간 기준의 다음 2 틱내에서 랩이 발생하는 것을 방지 함). 그런 다음 상위 시간축 레지스터를 원하는 값으로 설정하고, 낮은 시간축 레지스터를 원하는 값으로 설정하십시오. (읽을 때 상위 레지스터를 읽고 하위 레지스터를 읽은 다음 상위 레지스터를 다시 읽어야하며 하위 레지스터에서 값을 버리고 반복해야합니다.)

또한 하드 코드 된 특수 레지스터 번호가 아닌 시간 기반 레지스터에 쓰기 위해 니모닉을 사용하는 것이 좋습니다 (mttbumttbl). 세부 사항을 기억하지는 않지만 일부 PowerPC 구현은 대체 레지스터 번호에 시간 기반 레지스터의 메아리가 있습니다.이 레지스터 번호는 읽을 수는 있지만 기록 할 수는 없다고 생각합니다.