[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Minios-devel] [UNIKRAFT PATCHv4 15/43] uk/arch: Add necessary header files for Arm64
Hi all,
On 13.07.2018 11:36, Julien Grall wrote:
Hi,
On 13/07/18 10:13, Wei Chen wrote:
+#ifndef __UKARCH_LCPU_H__
+#error Do not include this header directly
+#endif
+
+struct __regs {
+ /* Generic Purpose registers, from x0 ~ x29 */
+ unsigned long x[30];
+
+ /* Link Register (x30) */
+ unsigned long lr;
+
+ /* Exception Link Register */
+ unsigned long elr_el1;
+
+ /* Processor State Register */
+ unsigned long spsr_el1;
+
+ /* Exception Status Register */
+ unsigned long esr_el1;
+
+ /* Stack Pointer */
+ unsigned long sp;
+};
+
+#define isb() __asm__ __volatile("isb" ::: "memory")
What is this intended for?
This is for instruction memory barrier.
Just to clarify, isb is not a memory barrier ;). It is an instruction
synchronization barrier. Any instructions in program order after the isb
will only be fetched from cache/memory once the instruction has
completed. This is used to ensure the effect of modification such as TLB
invalidation, system registers have been taken into account.
I am not aware of any equivalent on x86.
Cheers,
Nice, now I learned something more about Arm. ;-) I like the
explicitness of the architecture. It is giving you much more control
about when and what should happen on the hardware.
My question: Is it clear for an Arm developer what "isb()" is or should
we add a short comment to this definition?
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|