How to enter into supervisor mode and user mode in MPC5675K MCU?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

How to enter into supervisor mode and user mode in MPC5675K MCU?

ソリューションへジャンプ
2,932件の閲覧回数
mohammedshibin
Contributor I

Hi,

 

How to enter into supervisor mode and user mode in MPC5675K and how to access CPU special function registers such as MSR(Machine State Register)?

 

Regards,

Mohammed Shibin

ラベル(1)
0 件の賞賛
返信
1 解決策
1,971件の閲覧回数
davidtosenovjan
NXP TechSupport
NXP TechSupport

Screenshot_2.png

Access to MSR and SPR register must be done indirectly with using of mtmsr/mfmsr and mtmsr/mfmsr. Sometimes I am using macros below where ‘address’ points to variable where data are being written from/are read to. Or you can use pure assembler code.

/************** macro for MSR WRITE **************/

// param 'address' is a variable name (thus its address)

#define WRITE_TO_MSR(address)            \

asm (lis r30, (address)@h);              \

asm (ori r30, r30, (address)@l);         \

asm (lwz r31, 0x0(r30));                 \

asm (mtmsr r31);

/************** macro for MSR READ **************/

// param 'address' is a variable name (thus its address)

#define READ_FROM_MSR(address)           \

asm (lis r30, (address)@h);              \

asm (ori r30, r30, (address)@l);         \

asm (mfmsr r31);                         \

asm (stw r31, 0(r30));

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
1,972件の閲覧回数
davidtosenovjan
NXP TechSupport
NXP TechSupport

Screenshot_2.png

Access to MSR and SPR register must be done indirectly with using of mtmsr/mfmsr and mtmsr/mfmsr. Sometimes I am using macros below where ‘address’ points to variable where data are being written from/are read to. Or you can use pure assembler code.

/************** macro for MSR WRITE **************/

// param 'address' is a variable name (thus its address)

#define WRITE_TO_MSR(address)            \

asm (lis r30, (address)@h);              \

asm (ori r30, r30, (address)@l);         \

asm (lwz r31, 0x0(r30));                 \

asm (mtmsr r31);

/************** macro for MSR READ **************/

// param 'address' is a variable name (thus its address)

#define READ_FROM_MSR(address)           \

asm (lis r30, (address)@h);              \

asm (ori r30, r30, (address)@l);         \

asm (mfmsr r31);                         \

asm (stw r31, 0(r30));

0 件の賞賛
返信