10.07.2015 Views

PDF version - ARM Information Center

PDF version - ARM Information Center

PDF version - ARM Information Center

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

프로세서 예외 처리특히 SVC 처리기에서는 프로세서 상태를 읽어야 합니다. 이렇게 하려면 SPSR T비트를 검사합니다. 이 비트는 Thumb 상태일 때 설정되고 <strong>ARM</strong> 상태일 때 지워집니다.<strong>ARM</strong> 및 Thumb 명령어 세트에는 SVC 명령어가 있습니다. Thumb 상태에서 SVC를호출할 경우에는 다음 사항을 고려해야 합니다.• 명령어 주소는 lr–4가 아니라 lr–2입니다.• 명령어 자체는 16비트이므로 하프워드 로드가 필요합니다 (그림 6-3 참조) .• SVC 번호는 <strong>ARM</strong> 상태에서 24비트가 아니라 8비트 형식으로 저장됩니다.15 14 13 12 11 10 9 8 7 01 1 0 1 1 1 1 1 8_bit_immediatecomment field그림 6-3 Thumb SVC 명령어예제 6-8에서는 SVC 예외를 처리하는 <strong>ARM</strong> 코드를 보여 줍니다. SVC를 동적으로 호출하면 Thumb 상태에서 액세스할 수 있는 SVC 번호의 범위를 늘릴 수 있습니다.예제 6-8 SVC 처리기PRESERVE8AREA SVC_Area, CODE, READONLYEXPORT SVC_HandlerIMPORT C_SVC_HandlerT_bit EQU 0x20 ; Thumb bit (5) of CPSR/SPSR.SVC_HandlerSTMFD sp!, {r0-r3, r12, lr} ; Store registersMOV r1, sp ; Set pointer to parametersMRS r0, spsr ; Get spsrSTMFD sp!, {r0, r3} ; Store spsr onto stack and another; register to maintain 8-byte-aligned stackTST r0, #T_bit ; Occurred in Thumb state?LDRNEH r0, [lr,#-2]; Yes: Load halfword and...BICNE r0, r0, #0xFF00 ; ...extract comment fieldLDREQ r0, [lr,#-4] ; No: Load word and...BICEQ r0, r0, #0xFF000000 ; ...extract comment field; r0 now contains SVC number; r1 now contains pointer to stacked registers6-20 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0203IKNon-ConfidentialUnrestricted Access

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!