From beddca16cdf25522c1c2ea612611e31a867932cc Mon Sep 17 00:00:00 2001 From: Anna Lyons Date: Wed, 22 Mar 2017 16:46:56 +1100 Subject: [PATCH] libsel4: Add seL4_FastMessageRegisters This allows benchmarks and utility code to only set registers in the ipc buffer as required. --- include/arch/arm/arch/32/mode/machine/registerset.h | 2 +- include/arch/arm/arch/64/mode/machine/registerset.h | 2 +- include/arch/x86/arch/32/mode/machine/registerset.h | 2 +- include/arch/x86/arch/64/mode/machine/registerset.h | 2 +- libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/constants.h | 2 ++ libsel4/sel4_arch_include/aarch64/sel4/sel4_arch/constants.h | 1 + libsel4/sel4_arch_include/ia32/sel4/sel4_arch/constants.h | 1 + libsel4/sel4_arch_include/x86_64/sel4/sel4_arch/constants.h | 1 + 8 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/arch/arm/arch/32/mode/machine/registerset.h b/include/arch/arm/arch/32/mode/machine/registerset.h index 3a6752ef0..0e25d1291 100644 --- a/include/arch/arm/arch/32/mode/machine/registerset.h +++ b/include/arch/arm/arch/32/mode/machine/registerset.h @@ -116,7 +116,7 @@ compile_assert(r8_offset_correct, R8 * sizeof(word_t) == PT_R8) typedef word_t register_t; enum messageSizes { - n_msgRegisters = 4, + n_msgRegisters = seL4_FastMessageRegisters, n_frameRegisters = 10, n_gpRegisters = 7, n_exceptionMessage = 3, diff --git a/include/arch/arm/arch/64/mode/machine/registerset.h b/include/arch/arm/arch/64/mode/machine/registerset.h index 781751f5e..0a709d794 100644 --- a/include/arch/arm/arch/64/mode/machine/registerset.h +++ b/include/arch/arm/arch/64/mode/machine/registerset.h @@ -144,7 +144,7 @@ compile_assert(faultinstruction_offset_correct, FaultInstruction * sizeof(word_t typedef word_t register_t; enum messageSizes { - n_msgRegisters = 4, + n_msgRegisters = seL4_FastMessageRegisters, n_frameRegisters = 17, n_gpRegisters = 17, n_exceptionMessage = 3, diff --git a/include/arch/x86/arch/32/mode/machine/registerset.h b/include/arch/x86/arch/32/mode/machine/registerset.h index 644e43238..50ff9e837 100644 --- a/include/arch/x86/arch/32/mode/machine/registerset.h +++ b/include/arch/x86/arch/32/mode/machine/registerset.h @@ -61,7 +61,7 @@ enum _register { typedef word_t register_t; enum messageSizes { - n_msgRegisters = 2, + n_msgRegisters = seL4_FastMessageRegisters, n_frameRegisters = 10, n_gpRegisters = 3, n_exceptionMessage = 3, diff --git a/include/arch/x86/arch/64/mode/machine/registerset.h b/include/arch/x86/arch/64/mode/machine/registerset.h index 7db445c1e..442d7c100 100644 --- a/include/arch/x86/arch/64/mode/machine/registerset.h +++ b/include/arch/x86/arch/64/mode/machine/registerset.h @@ -71,7 +71,7 @@ enum _register { typedef uint32_t register_t; enum messageSizes { - n_msgRegisters = 4, + n_msgRegisters = seL4_FastMessageRegisters, n_frameRegisters = 18, n_gpRegisters = 1, n_exceptionMessage = 3, diff --git a/libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/constants.h b/libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/constants.h index d67153ced..eafcf21b2 100644 --- a/libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/constants.h +++ b/libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/constants.h @@ -142,4 +142,6 @@ enum { #define seL4_NumDualFunctionMonitors (0) #endif +#define seL4_FastMessageRegisters 4 + #endif diff --git a/libsel4/sel4_arch_include/aarch64/sel4/sel4_arch/constants.h b/libsel4/sel4_arch_include/aarch64/sel4/sel4_arch/constants.h index a181d1e78..036c81f9e 100644 --- a/libsel4/sel4_arch_include/aarch64/sel4/sel4_arch/constants.h +++ b/libsel4/sel4_arch_include/aarch64/sel4/sel4_arch/constants.h @@ -96,4 +96,5 @@ enum { #define seL4_NumDualFunctionMonitors (0) #endif +#define seL4_FastMessageRegisters 4 #endif diff --git a/libsel4/sel4_arch_include/ia32/sel4/sel4_arch/constants.h b/libsel4/sel4_arch_include/ia32/sel4/sel4_arch/constants.h index e262b4f8c..409619b58 100644 --- a/libsel4/sel4_arch_include/ia32/sel4/sel4_arch/constants.h +++ b/libsel4/sel4_arch_include/ia32/sel4/sel4_arch/constants.h @@ -104,4 +104,5 @@ enum { } seL4_UserException_Msg; #endif /* __ASSEMBLER__ */ +#define seL4_FastMessageRegisters 2 #endif diff --git a/libsel4/sel4_arch_include/x86_64/sel4/sel4_arch/constants.h b/libsel4/sel4_arch_include/x86_64/sel4/sel4_arch/constants.h index 576289a62..7f58f233e 100644 --- a/libsel4/sel4_arch_include/x86_64/sel4/sel4_arch/constants.h +++ b/libsel4/sel4_arch_include/x86_64/sel4/sel4_arch/constants.h @@ -95,4 +95,5 @@ enum { } seL4_UserException_Msg; #endif /* __ASSEMBLER__ */ +#define seL4_FastMessageRegisters 4 #endif /* __LIBSEL4_SEL4_SEL4_ARCH_CONSTANTS_H_ */