1 /****************************************************************
3 * Creator: lschor, 2008-10-30
4 * Description: Specifies some structs and Constants for the CBE-DOL-Implementation
7 * - 2008-10-30: Created
20 #define SPE_READ_DEMAND 0
21 #define SPE_READ_COMPLETE 1
22 #define SPE_COMPLETE 2
24 // Context for one process --> 384 bit
27 uint64_t port_queue_id;
29 uint64_t processName; // Address for the name of the process
30 uint64_t processNameLen; // Len of the process Name
32 uint32_t number_of_ports;
34 uint32_t padd[2]; // dummy - for alignment --> It always has to be a multiple of 128 bit!
37 // Context for one SPU --> This is send to him!
39 uint64_t procContents;
40 uint64_t procContentsLen;
42 uint64_t procContentsAll;
43 uint64_t queueFromSPU;
48 uint64_t ea_base; // Base address of the context
49 uint32_t padd[2]; // dummy - for alignment --> It always has to be a multiple of 128 bit!
53 // Create a message to send the queue offset
54 // 8 bit: queue number
55 // 24 bit: offset of the LS
56 #define CREATEQUEUEMESSAGE(_queue, _offset) \
57 ((_queue << 24) | (_offset))
59 #define QUEUEMSGQUEUE(_message) \
60 ((_message >> 24) & 0xFF)
62 #define QUEUEMSGOFFSET(_message) \
63 ((_message >> 0) & 0xFFFFFF)
66 // Create the message we like to send, format:
67 // 4 bit: code (total 16 possibilities)
68 // 9 bit: queue (total 512 possibilities)
70 #define CREATEFASTMESSAGE(_code, _queue, _len) \
71 ((_code << 28) | (_queue << 19) | (_len))
73 // Get the code from a message
74 #define GETFASTCODE(_message) \
75 ((_message >> 28) & 0xF)
77 // Get the queue from a message
78 #define GETFASTQUEUE(_message) \
79 ((_message >> 19) & 0x1FF)
81 // Get the len from a message
82 #define GETFASTLEN(_message) \
83 ((_message >> 0) & 0x7FFFF)
87 // Round a number ot the right DMA number --> Is used for DMA transfers
88 uint32_t roundDMA(uint32_t number);