Is it possible to execute an IRQ in EL3 (secure monitor) if IRQ was fired in EL1 context? E.g. I have entered EL1 via spsr_el3 (el1h selected) and after that setup a vector table with vbar_el1. Now, some IRQs I want to execute in EL3 mode. How can I do that?
aarch64 execute IRQ from EL1 in EL3
736 Views Asked by samuzu.pazael At
1
There are 1 best solutions below
Related Questions in ARM64
- an app supporting arm64 and armv7 running on arm64 and ios 7 ipad air
- Rustc/LLVM generates faulty code for aarch64 with opt-level=0
- iOS (Xcode 6.2) Paypal (2.11.0) integration - 64 duplicate symbols for architecture arm64
- ARM conditional instruction setting flags
- iOS app displays messy when adding arm64 in Valid Architectures
- Assembler on 64-bit iOS (A64)
- Unity vuforia xcode (iOS: armv7, arm64)
- Range of immediate values in ARMv8 A64 assembly
- openFrameworks / freeimage.a cause error with ios arm 64
- UnsatisfiedLinkError on Samsung S6
- UITableview cell Overlap on each with arm64
- armv7 not included in build
- Why does ARM assign addresses to registers like this?
- PHP7 does not compile on arm64 (OrangePI PC2)
- Using .reloc from assembly
Related Questions in BARE-METAL
- Reserve memory space in m_text memory region of FLASH on embedded target
- Issues with ARMv7-A bare metal call stack
- on reboot revert back to original state
- TFTP boot of a bare-metal program on imx53-QSB
- How to check where a function is referenced from
- Bare metal without global operator new
- U-boot, Qemu and baremetal
- Beaglebone packet sniffer using LWIP and StarterWare
- How to write a bare-metal hello world program for PowerPC
- Where is the root device?
- Set up fast (DMTimer-) Interrupt on BeagleBone Black
- How to build a Lego MindStorm EV3 binary?
- Bare Metal Arm (AM1808) - Read from Kick Registers
- Do MPI library need an OS for heterogeneous multicore system?
- Programming embedded without interrupts
Related Questions in IRQ
- How to make a scanf() type function in a 32bit os in c?
- how single irq line is shared at physical hardware among multiple devices
- How IRQS get assigned
- IRQ 8 isn't working... HW or SW?
- What is a safe and easy way to exchange data from a threaded ISR? (Raspberry Pi)
- how to set state_use_accessors of Linux irq?
- request_threaded_irq with IRQF_ONESHOT from Raspberry PI GPIO PIN doesn't block new IRQ while in
- aarch64 execute IRQ from EL1 in EL3
- Initialize the AD controller in IRQ mode
- how does the linux shell in a multi-processor computer read the keyboard inputs?
- Compiling c program with disable_irq and enable_irq error can't find lib linux/irq.h
- Is it safe to call printk inside spin_lock_irqsave?
- Why does the Linux kernel not stop at the first handler for a shared IRQ that returns IRQ_HANDLED?
- Handling x86 IRQs from secondary PIC: EOI order important?
- Is it possible to achieve that the interruption from network adapter arose on different CPU-cores x86_64?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
What you want is called "Physical IRQ Routing", and is controlled via
scr_el3. From the manual:IRQ, bit [1] Physical IRQ Routing. 0b0 When executing at Exception levels below EL3, physical IRQ interrupts are not taken to EL3. When executing at EL3, physical IRQ interrupts are not taken. 0b1 When executing at any Exception level, physical IRQ interrupts are taken to EL3.If you only want to handle some IRQs at EL3 and leave others to EL1, then you can simply handle that in the EL3 exception vector by setting:
spsr_el1tospsr_el3.elr_el1toelr_el3.elr_el3tovbar_el1plus one of0x80/0x280/0x480/0x680depending on the state bits inspsr_el3.spsr_el3 = (spsr_el3 & ~0xf00fff) | 0x3c5. If your architecture has PAN support, you'll also have to checkspsr_el1for theSPANfield, and if that's zero, OR0x400000intospsr_el3.