(Revision 0 5 December 2000)
overview This section processes the direct string part of memory messages. It does a simple sanity check, copies the strings from sender's buffer to receiver's buffer with interrupts enabled and stores the number of direct words copied in the result word.
on entry rcv_hdr mapped via XKSSEG to receiver's msg hdr snd_hdr pointer to sender's message header
data L4_IPC_REMSGCUT 0xE0 (7 in error code in result word dope)
| 103,104,125 | if there's a direct string |
| 105-107 | initialize dword pointers and counter |
| 108,109,114 | if send dword buffer size > total buffer size for sending/receiving |
| 111-113 | flush temporary window mappings from tlb and return with "message truncated" error code |
| 116,117 | sp <-- address of first send dword in message rp <-- address of first receive dword in message |
| 118 | CP0<IE> <-- 1 (enable interrupts) |
| 119-122 | copy dwords from sender memory buffer to receiver memory buffer |
| 123 | CP0<IE> <-- 0 (disable interrupts) |
| 124 | result word dword field <-- # of dwords in send msg header send field |