4.1.16. __svc_indirect

__svc_indirect 키워드는 연산 코드를 r12의 SVC 처리기로 전달합니다.

__svc_indirect는 함수 한정자이며 함수 유형에 영향을 주지 않습니다.

구문

__svc_indirect(int svc_num)
        return-type function-name(int real_num[, argument-list]);

인수 설명:

svc_num

SVC 명령어에 사용되는 즉치값입니다.

다음 범위에 있는 정수로 평가되는 식입니다.

  • ARM 명령어의 경우 0 ~ 224-1(24비트 값)

  • 16비트 Thumb 명령어의 경우 0 ~ 255(8비트 값)

real_num

수행할 함수를 결정하기 위해 r12에서 처리기로 전달되는 값

간접 메커니즘을 이용하려면 시스템 처리기가 r12 값을 사용하여 필요한 연산을 선택해야 합니다.

사용법

이 기능을 이용하여 간접 SVC를 구현할 수 있습니다.

예제

int __svc_indirect(0) ioctl(int svcino, int fn, void *argp);

호출:

ioctl(IOCTL+4, RESET, NULL);

r12에서 IOCTL+4와 함께 SVC #0으로 컴파일됩니다.

오류

SVC 명령어를 지원하지 않는 ARM 아키텍처 변형 또는 ARM 아키텍처 기반 프로세서가 --cpu 옵션을 사용하여 명령 행에 지정되면 컴파일러에서 오류를 생성합니다.

추가 참고

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential