diff options
author | marcus <marcus> | 2005-01-31 13:56:43 +0000 |
---|---|---|
committer | marcus <marcus> | 2005-01-31 13:56:43 +0000 |
commit | 659a6925317031788a1ea8d28c2f49aa1355674b (patch) | |
tree | 3cc582fe44b38f12859a4d6e1d9b3d25a92cd602 /README | |
parent | 1e16c52a3c55c85344513e07486945c8775a7280 (diff) |
2005-01-31 Marcus Brinkmann <marcus@gnu.org>
* README: Add patch for L4 local and remote xfer timeouts support.
Diffstat (limited to 'README')
-rw-r--r-- | README | 412 |
1 files changed, 412 insertions, 0 deletions
@@ -478,3 +478,415 @@ diff -rupN pistachio/user/include/l4/ia32/vregs.h pistachio/user/include/l4/ia32 : /* outputs */ "=r"(utcb) + + +This patch extends the L4 kernel by allowing to set different xfer +timeouts for local and remote page faults. + +2005-01-31 Matthieu Lemerre <racin@free.fr> + + * kernel/src/api/v4/space.cc (handle_xfer_timeouts): Accept + new argument FAULT_IN_SENDER_AS which specifies if the fault happened + in the sender's address space. Adjust the timeouts taking + this parameter into account. + (space_t::handle_pagefaults): Pass new argument to + handle_xfer_timeouts. + * kernel/include/api/v4/tcb.h (tcb_t): New accessor function + prototypes get_local_xfer_timeout_snd and + get_local_xfer_timeout_rcv. + (tcb_t::get_local_xfer_timeout_snd, tcb_t::get_local_xfer_timeout_rcv): + New inline functions. + * kernel/include/glue/v4-alpha/utcb.h (utcb_t): New members + thread_word_0, thread_word_1 and local_xfer_timeout. Adjust + padding. + * kernel/include/glue/v4/v4-amd64/utcb.h (utcb_t): Likewise. + * kernel/include/glue/v4/v4-arm/utcb.h (utcb_t): Likewise. + * kernel/include/glue/v4/v4-ia32/utcb.h (utcb_t): Likewise. + * kernel/include/glue/v4/v4-ia64/utcb.h (utcb_t): Likewise. + * kernel/include/glue/v4/v4-mips64/utcb.h (utcb_t): Likewise. + * kernel/include/glue/v4/v4-powerpc/utcb.h (utcb_t): Likewise. + * kernel/include/glue/v4/v4-powerpc64/utcb.h (utcb_t): Likewise. + * user/include/l4/alpha/vregs.h, + user/include/l4/amd64/vregs.h, user/include/l4/arm/vregs.h, + user/include/l4/ia32/vregs.h, user/include/l4/ia64/vregs.h, + user/include/l4/mips64/vregs.h, user/include/l4/powerpc/vregs.h, + user/include/l4/powerpc64/vregs.h: For all these files: + (__L4_TCR_LOCAL_XFER_TIMEOUT): Define macro. + (__L4_TCR_XferTimeout): Set local transfer timeout as well. + +diff -rup pistachio/kernel/include/api/v4/tcb.h pistachio-to/kernel/include/api/v4/tcb.h +--- pistachio/kernel/include/api/v4/tcb.h 2005-01-22 01:45:47.000000000 +0100 ++++ pistachio-to/kernel/include/api/v4/tcb.h 2005-01-31 13:56:52.000000000 +0100 +@@ -130,6 +130,8 @@ public: + + time_t get_xfer_timeout_snd (); + time_t get_xfer_timeout_rcv (); ++ time_t get_local_xfer_timeout_snd (); ++ time_t get_local_xfer_timeout_rcv (); + void set_actual_sender(threadid_t tid); + threadid_t get_virtual_sender(); + threadid_t get_intended_receiver(); +@@ -588,6 +590,24 @@ INLINE time_t tcb_t::get_xfer_timeout_rc + return get_utcb()->xfer_timeout.get_rcv(); + } + ++/** ++ * Get a thread's local send transfer timeout ++ * @return local send transfer timeout ++ */ ++INLINE time_t tcb_t::get_local_xfer_timeout_snd (void) ++{ ++ return get_utcb()->local_xfer_timeout.get_snd(); ++} ++ ++/** ++ * Get a thread's local receive transfer timeout ++ * @return local receive transfer timeout ++ */ ++INLINE time_t tcb_t::get_local_xfer_timeout_rcv (void) ++{ ++ return get_utcb()->local_xfer_timeout.get_rcv(); ++} ++ + + /** + * enqueues the tcb into the send queue of tcb +diff -rup pistachio/kernel/include/glue/v4-alpha/utcb.h pistachio-to/kernel/include/glue/v4-alpha/utcb.h +--- pistachio/kernel/include/glue/v4-alpha/utcb.h 2003-09-24 21:12:21.000000000 +0200 ++++ pistachio-to/kernel/include/glue/v4-alpha/utcb.h 2005-01-31 14:15:12.000000000 +0100 +@@ -54,7 +54,10 @@ public: + word_t error_code; /* 56 */ + threadid_t intended_receiver; /* 64 */ + threadid_t virtual_sender; /* 72 */ +- word_t __padding0[6]; /* 80 .. 128 */ ++ word_t thread_word_0; /* 80 */ ++ word_t thread_word_1; /* 88 */ ++ timeout_t local_xfer_timeout; /* 96 */ ++ word_t __padding0[3]; /* 104 .. 128 */ + word_t mr[IPC_NUM_MR]; /* 128 .. 640 */ + word_t br[IPC_NUM_BR]; /* 640 .. 904 */ + word_t __padding1[15]; /* 904 .. 1024 */ +diff -rup pistachio/kernel/include/glue/v4-amd64/utcb.h pistachio-to/kernel/include/glue/v4-amd64/utcb.h +--- pistachio/kernel/include/glue/v4-amd64/utcb.h 2004-06-02 13:26:42.000000000 +0200 ++++ pistachio-to/kernel/include/glue/v4-amd64/utcb.h 2005-01-31 14:17:42.000000000 +0100 +@@ -49,7 +49,10 @@ public: + timeout_t xfer_timeout; /* - 64 */ + threadid_t intended_receiver; /* - 56 */ + threadid_t virtual_sender; /* - 48 */ +- word_t reserved1[5]; /* - 40 .. -1 */ ++ word_t thread_word_1; /* - 40 */ ++ word_t thread_word_0; /* - 32 */ ++ timeout_t local_xfer_timeout; /* - 24 */ ++ word_t reserved1[2]; /* - 16 .. -1 */ + word_t mr[IPC_NUM_MR]; /* 0 .. 511 */ + + /* do not delete this TCB_END_MARKER */ +diff -rup pistachio/kernel/include/glue/v4-arm/utcb.h pistachio-to/kernel/include/glue/v4-arm/utcb.h +--- pistachio/kernel/include/glue/v4-arm/utcb.h 2004-06-04 04:26:52.000000000 +0200 ++++ pistachio-to/kernel/include/glue/v4-arm/utcb.h 2005-01-31 14:19:25.000000000 +0100 +@@ -35,7 +35,7 @@ + #include INC_API(thread.h) + #include INC_API(types.h) + +-#define PADDING_0 ((64-sizeof(threadid_t)*5-sizeof(word_t)*3-sizeof(timeout_t)-sizeof(u8_t)*2-sizeof(u16_t))/4) ++#define PADDING_0 ((64-sizeof(threadid_t)*5-sizeof(word_t)*5-sizeof(timeout_t)*2-sizeof(u8_t)*2-sizeof(u16_t))/4) + + #define PADDING_1 ((448-sizeof(word_t)*(IPC_NUM_MR+IPC_NUM_BR))/4) + +@@ -57,7 +57,10 @@ public: + word_t error_code; /* 28 */ + threadid_t intended_receiver; /* 32 */ + threadid_t virtual_sender; /* 36 */ +- word_t __padding0[PADDING_0]; /* 40 .. 64 */ ++ word_t thread_word_0; /* 40 */ ++ word_t thread_word_1; /* 44 */ ++ timeout_t local_xfer_timeout; /* 48 */ ++ word_t __padding0[PADDING_0]; /* 52 .. 64 */ + word_t mr[IPC_NUM_MR]; /* 64 .. 320 */ + word_t br[IPC_NUM_BR]; /* 320 .. 452 */ + word_t __padding1[PADDING_1]; /* 452 .. 512 */ +diff -rup pistachio/kernel/include/glue/v4-ia32/utcb.h pistachio-to/kernel/include/glue/v4-ia32/utcb.h +--- pistachio/kernel/include/glue/v4-ia32/utcb.h 2003-09-24 21:12:22.000000000 +0200 ++++ pistachio-to/kernel/include/glue/v4-ia32/utcb.h 2005-01-31 14:03:38.000000000 +0100 +@@ -51,7 +51,10 @@ public: + timeout_t xfer_timeout; /* -32 */ + threadid_t intended_receiver; /* -28 */ + threadid_t virtual_sender; /* -24 */ +- word_t reserved1[5]; /* -20 .. -4 */ ++ word_t thread_word_1; /* -20 */ ++ word_t thread_word_0; /* -16 */ ++ timeout_t local_xfer_timeout; /* -12 */ ++ word_t reserved1[2]; /* -8 .. -4 */ + word_t mr[IPC_NUM_MR]; /* 0 .. 252 */ + + /* do not delete this TCB_END_MARKER */ +diff -rup pistachio/kernel/include/glue/v4-ia64/utcb.h pistachio-to/kernel/include/glue/v4-ia64/utcb.h +--- pistachio/kernel/include/glue/v4-ia64/utcb.h 2003-09-24 21:12:23.000000000 +0200 ++++ pistachio-to/kernel/include/glue/v4-ia64/utcb.h 2005-01-31 14:20:56.000000000 +0100 +@@ -55,7 +55,10 @@ public: + word_t error_code; // 72 (9) + + word_t br[IPC_NUM_BR]; // 80 (10) +- word_t __padding1[5]; // 344 (43) ++ word_t thread_word_0; // 88 (11) ++ word_t thread_word_1; // 88 (12) ++ timeout_t local_xfer_timeout; // 96 (13) ++ word_t __padding1[2]; // 368 (46) + + word_t mr[IPC_NUM_MR]; // 384 (48) + word_t __padding2[16]; // 896 (112) +diff -rup pistachio/kernel/include/glue/v4-mips64/utcb.h pistachio-to/kernel/include/glue/v4-mips64/utcb.h +--- pistachio/kernel/include/glue/v4-mips64/utcb.h 2004-10-06 21:13:40.000000000 +0200 ++++ pistachio-to/kernel/include/glue/v4-mips64/utcb.h 2005-01-31 14:21:56.000000000 +0100 +@@ -54,7 +54,10 @@ public: + word_t error_code; /* 56 */ + threadid_t intended_receiver; /* 64 */ + threadid_t virtual_sender; /* 72 */ +- word_t __padding0[6]; /* 80 .. 128 */ ++ word_t thread_word_0; /* 80 */ ++ word_t thread_word_1; /* 88 */ ++ timeout_t local_xfer_timeout; /* 96 */ ++ word_t __padding0[3]; /* 104 .. 128 */ + word_t mr[IPC_NUM_MR]; /* 128 .. 640 */ + word_t br[IPC_NUM_BR]; /* 640 .. 904 */ + word_t __padding1[15]; /* 904 .. 1024 */ +diff -rup pistachio/kernel/include/glue/v4-powerpc/utcb.h pistachio-to/kernel/include/glue/v4-powerpc/utcb.h +--- pistachio/kernel/include/glue/v4-powerpc/utcb.h 2003-11-17 12:17:19.000000000 +0100 ++++ pistachio-to/kernel/include/glue/v4-powerpc/utcb.h 2005-01-31 14:22:40.000000000 +0100 +@@ -52,7 +52,8 @@ public: + threadid_t virtual_sender; /* -24 */ + word_t thread_word1; /* -20 */ + word_t thread_word0; /* -16 */ +- word_t reserved1[3]; /* -12 .. -4 */ ++ timeout_t local_xfer_timeout; /* -12 */ ++ word_t reserved1[2]; /* -8 .. -4 */ + word_t mr[IPC_NUM_MR]; /* 0 .. 252 */ + } __attribute__((packed)); + +diff -rup pistachio/kernel/include/glue/v4-powerpc64/utcb.h pistachio-to/kernel/include/glue/v4-powerpc64/utcb.h +--- pistachio/kernel/include/glue/v4-powerpc64/utcb.h 2004-06-04 04:52:57.000000000 +0200 ++++ pistachio-to/kernel/include/glue/v4-powerpc64/utcb.h 2005-01-31 14:23:32.000000000 +0100 +@@ -49,7 +49,10 @@ public: + word_t error_code; /* 56 */ + threadid_t intended_receiver; /* 64 */ + threadid_t virtual_sender; /* 72 */ +- word_t __padding0[6]; /* 80 .. 128 */ ++ word_t thread_word_0; /* 80 */ ++ word_t thread_word_1; /* 88 */ ++ timeout_t local_xfer_timeout; /* 96 */ ++ word_t __padding0[3]; /* 104 .. 128 */ + word_t mr[IPC_NUM_MR]; /* 128 .. 640 */ + word_t br[IPC_NUM_BR]; /* 640 .. 904 */ + word_t __padding1[15]; /* 904 .. 1024 */ +diff -rup pistachio/kernel/src/api/v4/space.cc pistachio-to/kernel/src/api/v4/space.cc +--- pistachio/kernel/src/api/v4/space.cc 2004-10-06 21:13:42.000000000 +0200 ++++ pistachio-to/kernel/src/api/v4/space.cc 2005-01-31 14:11:48.000000000 +0100 +@@ -149,8 +149,9 @@ void tunnel_pagefault (word_t addr) + * up a timeout for the sender thread. + * + * @param sender sender thread ++ * @param fault_in_sender_as page fault happened in the space of the sender + */ +-static void handle_xfer_timeouts (tcb_t * sender) ++static void handle_xfer_timeouts (tcb_t * sender, bool fault_in_sender_as) + { + #warning Handle priority inversion for xfer timeouts + +@@ -163,9 +164,27 @@ static void handle_xfer_timeouts (tcb_t + ASSERT (! sender->get_partner ().is_nilthread ()); + ASSERT (sender->get_state() == thread_state_t::locked_running); + ASSERT (partner->get_state() == thread_state_t::locked_waiting); +- +- time_t snd_to = sender->get_xfer_timeout_snd (); +- time_t rcv_to = partner->get_xfer_timeout_rcv (); ++ ++ time_t snd_to; ++ time_t rcv_to; ++ time_t timeout; ++ ++ if (fault_in_sender_as) ++ { ++ /* The page fault happened in the sender. So the timeouts ++ that matter are the local pf send timeout of the sender ++ and the remote pf receive timeout of the partner. */ ++ snd_to = sender->get_local_xfer_timeout_snd (); ++ rcv_to = partner->get_xfer_timeout_rcv (); ++ } ++ else ++ { ++ /* The page fault happened in the partner. So the timeouts ++ that matter are the remote pf send timeout of the sender ++ and the local pf receive timeout of the partner. */ ++ snd_to = sender->get_xfer_timeout_snd (); ++ rcv_to = partner->get_local_xfer_timeout_rcv (); ++ } + + if (snd_to.is_zero () || rcv_to.is_zero ()) + { +@@ -225,7 +244,7 @@ void space_t::handle_pagefault(addr_t ad + // Pagefault during IPC copy. Initiate xfer timeout + // counters before handling pagefault. + current->misc.ipc_copy.copy_fault = addr; +- handle_xfer_timeouts (current); ++ handle_xfer_timeouts (current, true); + } + + // if we have a user fault we may have a stale partner +@@ -279,7 +298,7 @@ void space_t::handle_pagefault(addr_t ad + { + // Fault in copy area. Tunnel pagefault through partner. + current->misc.ipc_copy.copy_fault = addr; +- handle_xfer_timeouts (current); ++ handle_xfer_timeouts (current, false); + + // On PF tunneling we temporarily set the current thread + // into waiting for partner. + + +diff -rup pistachio/user/include/l4/alpha/vregs.h pistachio-to/user/include/l4/alpha/vregs.h +--- pistachio/user/include/l4/alpha/vregs.h 2004-10-06 21:13:47.000000000 +0200 ++++ pistachio-to/user/include/l4/alpha/vregs.h 2005-01-31 14:42:41.000000000 +0100 +@@ -52,6 +52,8 @@ L4_INLINE L4_Word_t *__L4_Alpha_Utcb( vo + + #define __L4_TCR_BR_OFFSET (80) + #define __L4_TCR_MR_OFFSET (16) ++#define __L4_TCR_LOCAL_XFER_TIMEOUT (12) ++#define __L4_TCR_THREAD_WORD1 (11) + #define __L4_TCR_THREAD_WORD0 (10) + #define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9) + #define __L4_TCR_INTENDED_RECEIVER (8) +@@ -128,6 +130,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout + L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w ) + { + (__L4_Alpha_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w; ++ (__L4_Alpha_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w; + } + + L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void ) +diff -rup pistachio/user/include/l4/amd64/vregs.h pistachio-to/user/include/l4/amd64/vregs.h +--- pistachio/user/include/l4/amd64/vregs.h 2003-09-24 21:06:22.000000000 +0200 ++++ pistachio-to/user/include/l4/amd64/vregs.h 2005-01-31 14:43:02.000000000 +0100 +@@ -65,6 +65,7 @@ L4_INLINE L4_Word_t * __L4_X86_Utcb (voi + * Location of TCRs within UTCB. (Counted in word_t) + */ + ++#define __L4_TCR_XFER_TIMEOUT (-3) + #define __L4_TCR_THREAD_WORD_0 (-4) + #define __L4_TCR_THREAD_WORD_1 (-5) + #define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6) +@@ -144,6 +145,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout + L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w) + { + (__L4_X86_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w; ++ (__L4_X86_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w; + } + + L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void) +diff -rup pistachio/user/include/l4/arm/vregs.h pistachio-to/user/include/l4/arm/vregs.h +--- pistachio/user/include/l4/arm/vregs.h 2004-06-04 10:20:12.000000000 +0200 ++++ pistachio-to/user/include/l4/arm/vregs.h 2005-01-31 14:43:59.000000000 +0100 +@@ -35,6 +35,9 @@ L4_INLINE L4_Word_t *__L4_ARM_Utcb( void + + #define __L4_TCR_BR_OFFSET (80) + #define __L4_TCR_MR_OFFSET (16) ++#define __L4_TCR_XFER_TIMEOUT (12) ++#define __L4_TCR_THREAD_WORD1 (11) ++#define __L4_TCR_THREAD_WORD0 (10) + #define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9) + #define __L4_TCR_INTENDED_RECEIVER (8) + #define __L4_TCR_ERROR_CODE (7) +diff -rup pistachio/user/include/l4/ia32/vregs.h pistachio-to/user/include/l4/ia32/vregs.h +--- pistachio/user/include/l4/ia32/vregs.h 2004-11-17 01:48:13.000000000 +0100 ++++ pistachio-to/user/include/l4/ia32/vregs.h 2005-01-31 14:40:47.000000000 +0100 +@@ -66,6 +66,7 @@ L4_INLINE L4_Word_t * __L4_X86_Utcb (voi + * Location of TCRs within UTCB. + */ + ++#define __L4_TCR_LOCAL_XFER_TIMEOUT (-3) + #define __L4_TCR_THREAD_WORD_0 (-4) + #define __L4_TCR_THREAD_WORD_1 (-5) + #define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6) +@@ -145,6 +146,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout + L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w) + { + (__L4_X86_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w; ++ (__L4_X86_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w; + } + + L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void) +diff -rup pistachio/user/include/l4/ia64/vregs.h pistachio-to/user/include/l4/ia64/vregs.h +--- pistachio/user/include/l4/ia64/vregs.h 2003-09-24 21:13:50.000000000 +0200 ++++ pistachio-to/user/include/l4/ia64/vregs.h 2005-01-31 14:44:41.000000000 +0100 +@@ -62,6 +62,7 @@ L4_INLINE L4_Word_t * __L4_IA64_Utcb (vo + */ + + #define __L4_TCB_MR_OFFSET (48) ++#define __L4_TCR_LOCAL_XFER_TIMEOUT (45) + #define __L4_TCR_THREAD_WORD_1 (44) + #define __L4_TCR_THREAD_WORD_0 (43) + #define __L4_TCB_BR_OFFSET (10) +@@ -154,6 +155,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout + L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w) + { + (__L4_IA64_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w; ++ (__L4_IA64_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w; + } + + L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void) +diff -rup pistachio/user/include/l4/mips64/vregs.h pistachio-to/user/include/l4/mips64/vregs.h +--- pistachio/user/include/l4/mips64/vregs.h 2004-10-06 21:13:47.000000000 +0200 ++++ pistachio-to/user/include/l4/mips64/vregs.h 2005-01-31 14:45:34.000000000 +0100 +@@ -48,6 +48,7 @@ L4_INLINE L4_Word_t *__L4_Mips64_Utcb( v + + #define __L4_TCR_BR_OFFSET (80) + #define __L4_TCR_MR_OFFSET (16) ++#define __L4_TCR_LOCAL_XFER_TIMEOUT (12) + #define __L4_TCR_THREAD_WORD1 (11) + #define __L4_TCR_THREAD_WORD0 (10) + #define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9) +@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout + L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w ) + { + (__L4_Mips64_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w; ++ (__L4_Mips64_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w; + } + + L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void ) +diff -rup pistachio/user/include/l4/powerpc/vregs.h pistachio-to/user/include/l4/powerpc/vregs.h +--- pistachio/user/include/l4/powerpc/vregs.h 2003-10-27 21:50:41.000000000 +0100 ++++ pistachio-to/user/include/l4/powerpc/vregs.h 2005-01-31 14:46:01.000000000 +0100 +@@ -53,6 +53,7 @@ L4_INLINE L4_Word_t *__L4_PPC_Utcb( void + * Location of TCRs within UTCB. + */ + ++#define __L4_TCR_LOCAL_XFER_TIMEOUT (-3) + #define __L4_TCR_THREAD_WORD_0 (-4) + #define __L4_TCR_THREAD_WORD_1 (-5) + #define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6) +@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout + L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w ) + { + (__L4_PPC_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w; ++ (__L4_PPC_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w; + } + + L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void ) +diff -rup pistachio/user/include/l4/powerpc64/vregs.h pistachio-to/user/include/l4/powerpc64/vregs.h +--- pistachio/user/include/l4/powerpc64/vregs.h 2003-10-28 02:26:17.000000000 +0100 ++++ pistachio-to/user/include/l4/powerpc64/vregs.h 2005-01-31 14:46:25.000000000 +0100 +@@ -48,6 +48,7 @@ L4_INLINE L4_Word_t *__L4_PPC64_Utcb( vo + + #define __L4_TCR_BR_OFFSET (80) + #define __L4_TCR_MR_OFFSET (16) ++#define __L4_TCR_LOCAL_XFER_TIMEOUT (12) + #define __L4_TCR_THREAD_WORD1 (11) + #define __L4_TCR_THREAD_WORD0 (10) + #define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9) +@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout + L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w ) + { + (__L4_PPC64_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w; ++ (__L4_PPC64_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w; + } + + L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void ) |