+PRIVATE inline
+L4_msg_tag
+Thread::set_tpidruro(L4_msg_tag tag, Utcb *utcb)
+{
+ if (EXPECT_FALSE(tag.words() < 2))
+ return commit_result(-L4_err::EInval);
+
+ _tpidruro = utcb->values[1];
+ if (EXPECT_FALSE(state() & Thread_vcpu_enabled))
+ arch_update_vcpu_state(vcpu_state().access());
+
+ if (this == current_thread())
+ load_tpidruro();
+
+ return commit_result(0);
+}
+
+PRIVATE inline
+void
+Thread::get_ts_tpidruro(Trap_state *ts)
+{
+ _tpidruro = ts->tpidruro;
+}
+
+PRIVATE inline
+void
+Thread::set_ts_tpidruro(Trap_state *ts)
+{
+ ts->tpidruro = _tpidruro;
+}
+