System-Level Exception
System level exception simpelnya adalah exception yang terjadi pada level sistem. Apa itu exception? Exception artinya meminta layanan (services) kepada sistem OS/processor untuk mendapatkan sumber daya (resources) yang diperlukan dalam hal ini akses ke system-level.
System-level itu yang seperti apa? misalnya user meminta akses kepada OS untuk mendapatkan akses ke driver, lokasi memory tertentu (yang sifatnya restricted), Kernel API, dan sebagainya yang mana resources tersebut sifatnya privileged. Privileged artinya sumber daya yang dimiliki processor hanya dapat diakses melalui cara-cara tertentu.
Lalu bagaimana caranya user (application level) meminta akses ke OS untuk mendapatkan sumber daya (resources) yang diperlukan? Ada 2 cara yaitu dengan menggunakan SVC Exception & PendSV exception (Tutorial selanjutnya)
SVC Exception
SVCall (Supervisor Call) merupakan salah satu dari 16 Tipe exception yang disediakan processor Cortex-M processor. Bisa dilihat dalam table, SVCall bernomor 11 dan memiliki alamat 0x0000002C
SVC (Supervisor) biasanya digunakan untuk meminta layanan pada sistem OS seperti API, peripheral driver, dsb yang semua itu tidak bisa secara langsung dapat diakses oleh user.
Instruksi SVC akan segera dieksekusi seketika setelah Instruksi SVC ditulis, jadi tidak harus mengantri dengan exception/interrupt yang lain. Kecuali jika priority exeption/interupt tersebut lebih tinggi
Syntax
Untuk melakukan SVC exception kita hanya perlu menuliskan perintah SVC instruction yang dibungkus menggunakan inline assembly di dalam main.c
__asm : inline assembly, diperlukan ketika menyisipkan bahasa assembly ke dalam bahasa C
SVC : Instruksi untuk melakukan SVC Exception
imm : Immediate value (SVC number), nomer (0-255) untuk meminta layanan, apabila nomer cocok dengan layanan yang diminta sistem akan memproses, jika tidak tersedia maka dapat diabaikan