diff --git a/base/src/test/util_mmio/main.cc b/base/src/test/util_mmio/main.cc
index 5b0f64c327..a369ebd774 100644
--- a/base/src/test/util_mmio/main.cc
+++ b/base/src/test/util_mmio/main.cc
@@ -63,11 +63,15 @@ struct Test_mmio : public Mmio
 
 	struct Reg_64 : Register<0x00, 64>
 	{
-		struct Bits_0 : Bitfield<48,12>  { };
+		struct Bits_0 : Bitfield<48,12> { };
 		struct Bits_1 : Bitfield<24,20> { };
-		struct Bits_2 : Bitfield<44,4>  { };
+		struct Bits_2 : Bitfield<44,4> { };
 		struct Bits_3 : Bitfield<0,24> { };
+		struct Bits_4 : Bitfield<60,4> { };
 	};
+	struct Bitset_64_0 : Bitset_2<Reg_64::Bits_0, Reg_64::Bits_1> { };
+	struct Bitset_64_1 : Bitset_3<Reg_64::Bits_4, Reg_64::Bits_3, Reg_64::Bits_2> { };
+	struct Bitset_64   : Bitset_2<Bitset_64_0, Bitset_64_1> { };
 
 	struct Reg : Register<0x04, 8>
 	{
@@ -469,6 +473,14 @@ int main()
 		if (mmio.read<Reg::Bits_2>() != BITS_2) { error(__LINE__); }
 		if (mmio.read<Reg::Bits_3>() != BITS_3) { error(__LINE__); }
 		if (compare_mem(mmio_mem, cmp_mem, MMIO_SIZE)) { error(__LINE__); }
+
+		/* bitsets */
+		typedef Test_mmio::Bitset_64 Bitset;
+		enum { BITSET = 0x4abcdef056789123 };
+		zero_mem(mmio_mem, MMIO_SIZE);
+		mmio.write<Bitset>(BITSET);
+		if (mmio.read<Bitset>() != BITSET) { error(__LINE__); }
+		if (compare_mem(mmio_mem, cmp_mem, MMIO_SIZE)) { error(__LINE__); }
 	}
 
 	printf("Test done\n");