[PATCH v3 2/3] Add ARM Paravirtualization support

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Feb 22 11:39:53 UTC 2018


For the XtratuM support on ARMv7-R I simply built the tools via the RSB and added "-mtp=soft" to the C/C++ flags. I also used "-mtp=soft" for the BSP, this instructs GCC to use calls to __aeabi_read_tp().

----- Am 22. Feb 2018 um 3:49 schrieb Sebastian Huber sebastian.huber at embedded-brains.de:

> ----- Am 21. Feb 2018 um 21:07 schrieb joel joel at rtems.org:
> 
>> Closes #3305.
>> ---
>> cpukit/score/cpu/arm/cpu_asm.S                     |  5 +-
>> cpukit/score/cpu/arm/include/rtems/score/cpu.h     |  6 ++
>> .../score/cpu/arm/include/rtems/score/paravirt.h   | 75 ++++++++++++++++++++++
>> cpukit/score/cpu/arm/include/rtems/score/types.h   |  3 +
>> 4 files changed, 88 insertions(+), 1 deletion(-)
>> create mode 100644 cpukit/score/cpu/arm/include/rtems/score/paravirt.h
>> 
>> diff --git a/cpukit/score/cpu/arm/cpu_asm.S b/cpukit/score/cpu/arm/cpu_asm.S
>> index f58b99d..214e67d 100644
>> --- a/cpukit/score/cpu/arm/cpu_asm.S
>> +++ b/cpukit/score/cpu/arm/cpu_asm.S
>> @@ -111,9 +111,12 @@ DEFINE_FUNCTION_ARM(_CPU_Context_switch)
>> #endif
>> 
>> #ifdef ARM_MULTILIB_HAS_THREAD_ID_REGISTER
>> +  #if defined(CPU_ARM_USE_USER_ACCESSIBLE_THREAD_ID_REGISTER)
>> +	mcr	p15, 0, r3, c13, c0, 2
>> +  #else
>> 	mcr	p15, 0, r3, c13, c0, 3
>> +  #endif
>> #endif
>> -
> 
> Why remove this line?
> 
>> 	str	r4, [r2, #PER_CPU_ISR_DISPATCH_DISABLE]
>> 
>> 	/* In ARMv5T and above the load of PC is an interworking branch */
> [...]
>> +/**
>> + * In a paravirtualized environment, RTEMS executes in user space
>> + * and cannot write to the the Thread ID register which is normally
>> + * used. CP15 C13 has three variants of a Thread ID register.
>> + *
>> + * - Opcode_2 = 2: This register is both user and privileged R/W accessible.
>> + * - Opcode_2 = 3: This register is user read-only and privileged
>> + *   R/W accessible.
>> + * - Opcode_2 = 4: This register is privileged R/W accessible only.
>> + */
>> +#define CPU_ARM_USE_USER_ACCESSIBLE_THREAD_ID_REGISTER
> 
> How did you convince GCC that it should use the TPIDRURW?
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel



More information about the devel mailing list