From 4960370602a54e10388ad03378ad3377a27661c5 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher <alexander.boettcher@genode-labs.com> Date: Thu, 5 Jul 2012 10:47:14 +0200 Subject: [PATCH] NOVA: fix some enum *_MASK to fit for 32 as 64 bit The BASE_MASK and QUANTUM_MASK fitted only for 32 bit, for 64 bit they are bigger. Adjust them to fit for both architectures. --- base-nova/include/nova/syscall-generic.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/base-nova/include/nova/syscall-generic.h b/base-nova/include/nova/syscall-generic.h index 462b10773b..871272c4de 100644 --- a/base-nova/include/nova/syscall-generic.h +++ b/base-nova/include/nova/syscall-generic.h @@ -124,7 +124,7 @@ namespace Nova { /** * Assign bitfield to descriptor */ - template<int MASK, int SHIFT> + template<mword_t MASK, mword_t SHIFT> void _assign(mword_t new_bits) { _value &= ~(MASK << SHIFT); @@ -134,7 +134,7 @@ namespace Nova { /** * Query bitfield from descriptor */ - template<int MASK, int SHIFT> + template<mword_t MASK, mword_t SHIFT> mword_t _query() const { return (_value >> SHIFT) & MASK; } public: @@ -183,10 +183,10 @@ namespace Nova { * Bitfield holding the descriptor type */ enum { - TYPE_MASK = 0x3, TYPE_SHIFT = 0, - BASE_MASK = 0xfffff, BASE_SHIFT = 12, - ORDER_MASK = 0x1f, ORDER_SHIFT = 7, - RIGHTS_MASK = 0x7c + TYPE_MASK = 0x3, TYPE_SHIFT = 0, + BASE_SHIFT = 12, RIGHTS_MASK = 0x7c, + ORDER_MASK = 0x1f, ORDER_SHIFT = 7, + BASE_MASK = (~0UL) >> BASE_SHIFT }; /** @@ -324,8 +324,9 @@ namespace Nova { private: enum { - QUANTUM_MASK = 0xfffff, QUANTUM_SHIFT = 12, - PRIORITY_MASK = 0xff, PRIORITY_SHIFT = 0 + PRIORITY_MASK = 0xff, PRIORITY_SHIFT = 0, + QUANTUM_SHIFT = 12, + QUANTUM_MASK = (~0UL) >> QUANTUM_SHIFT }; void _quantum(mword_t quantum)