Gast
#409754
Hallo, hätte mal ne Frage. Arbeite am OLIMEX LPC2148 Evalboard und möchte für Kritische Bereiche "Critical Sections" wissen wie man die Interrupts kurzfristig sperren kann. Mit bekannte Assemblerbefehle wie CLI/SEI oder DI und EI kennt der Arm ja leider nicht, und soweit ich weiß hab ich auf das CPSR (Prozessor Status Wort) im UserMode keinen zugriff um dieses zu sichern und kurzfristig das F & I Bit auf 1 zu setzen. Hab nen Assembler Code gefunden doch leider kennt die LPC214x.h von Keil die Adresse vom CPSR nicht und ich finde sie selber auch nicht. Assembler Code: /*******************************************/ /* disable interrupts and return old mask */ /*******************************************/ __asm { MRS R0,cpsr orr r1,r0,#PSR_I_BIT msr cpsr_c,r1 bx lr } **************************************** ** restore interrupt mask **************************************** __asm { and r0,r0,#PSR_I_BIT mrs r1,cpsr bic r1,r1,#PSR_I_BIT orr r1,r1,r0 msr cpsr_c,r1 bx lr } Also meine Frage: wie kann ich auf das cpsr zugreifen um zum Beispiel einen Context Switch zu sichern in einer Critial Section durchzuführen?? Kenn mich mit den Modis vom ARM leider noch nicht so gut aus, also falls ich da nachhacken sollte bitte ebenfalls bescheid sagen. Ansonsten noch die Frage: Wie kann ich in Assembler beim LPC2148 den StackPointer auf eine andere Adresse zeigen lassen?? MOV R0,pArray MOV SP,R0 ??