Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- u32 to_end = min(CMD_BUFF_SIZE - data->cmd_buff.end - 1, cmds_count);
- for (u32 i = 0; i < to_end; ++i) {
- *((u32*)data->cmd_buff.mem.ptr + data->cmd_buff.end + i) = cmds[i];
- }
- if (to_end != cmds_count) {
- *((u32*)data->cmd_buff.mem.ptr + CMD_BUFF_SIZE - 1) = HARDDOOM_CMD_JUMP(data->cmd_buff.mem.dma);
- for (u32 i = 0; i < cmds_count - to_end; ++i) {
- *((u32*)data->cmd_buff.mem.ptr + i) = cmds[to_end + i];
- }
- }
- data->cmd_buff.end = (data->cmd_buff.end + cmds_count + (to_end != cmds_count ? 1 : 0)) % CMD_BUFF_SIZE;
- data->wakeup_counter = data->wakeup_counter + cmds_count + (to_end != cmds_count ? 1 : 0);
- if (data->wakeup_counter >= CMD_PACKET_SIZE + 2) {
- data->wakeup_counter = 0;
- if (data->cmd_buff.end != CMD_BUFF_SIZE - 1) {
- *((u32*)data->cmd_buff.mem.ptr + data->cmd_buff.end) = HARDDOOM_CMD_PING_ASYNC;
- data->cmd_buff.end = data->cmd_buff.end + 1;
- }
- else {
- *((u32*)data->cmd_buff.mem.ptr + data->cmd_buff.end) = HARDDOOM_CMD_JUMP(data->cmd_buff.mem.dma);
- *((u32*)data->cmd_buff.mem.ptr) = HARDDOOM_CMD_PING_ASYNC;
- data->cmd_buff.end = 1;
- }
- }
- iowrite32(data->cmd_buff.mem.dma + sizeof(u32) * data->cmd_buff.end, REG_ADDR(data, HARDDOOM_CMD_WRITE_PTR));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement