Rev 2471 | Rev 2745 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2471 | Rev 2626 | ||
|---|---|---|---|
| Line 87... | Line 87... | ||
| 87 | break; |
87 | break; |
| 88 | case CMD_MEM_WRITE_1: |
88 | case CMD_MEM_WRITE_1: |
| 89 | *((uint8_t *) code->cmds[i].addr) = code->cmds[i].value; |
89 | *((uint8_t *) code->cmds[i].addr) = code->cmds[i].value; |
| 90 | break; |
90 | break; |
| 91 | case CMD_MEM_WRITE_2: |
91 | case CMD_MEM_WRITE_2: |
| 92 | *((uint16_t *) code->cmds[i].addr) = code->cmds[i].value; |
92 | *((uint16_t *) code->cmds[i].addr) = |
| - | 93 | code->cmds[i].value; |
|
| 93 | break; |
94 | break; |
| 94 | case CMD_MEM_WRITE_4: |
95 | case CMD_MEM_WRITE_4: |
| 95 | *((uint32_t *) code->cmds[i].addr) = code->cmds[i].value; |
96 | *((uint32_t *) code->cmds[i].addr) = |
| - | 97 | code->cmds[i].value; |
|
| 96 | break; |
98 | break; |
| 97 | case CMD_MEM_WRITE_8: |
99 | case CMD_MEM_WRITE_8: |
| 98 | *((uint64_t *) code->cmds[i].addr) = code->cmds[i].value; |
100 | *((uint64_t *) code->cmds[i].addr) = |
| - | 101 | code->cmds[i].value; |
|
| 99 | break; |
102 | break; |
| 100 | #if defined(ia32) || defined(amd64) |
103 | #if defined(ia32) || defined(amd64) |
| 101 | case CMD_PORT_READ_1: |
104 | case CMD_PORT_READ_1: |
| 102 | dstval = inb((long) code->cmds[i].addr); |
105 | dstval = inb((long) code->cmds[i].addr); |
| 103 | break; |
106 | break; |
| Line 116... | Line 119... | ||
| 116 | break; |
119 | break; |
| 117 | #endif |
120 | #endif |
| 118 | default: |
121 | default: |
| 119 | break; |
122 | break; |
| 120 | } |
123 | } |
| 121 | if (code->cmds[i].dstarg && code->cmds[i].dstarg < 4) { |
124 | if (code->cmds[i].dstarg && code->cmds[i].dstarg < |
| - | 125 | IPC_CALL_LEN) { |
|
| 122 | call->data.args[code->cmds[i].dstarg] = dstval; |
126 | call->data.args[code->cmds[i].dstarg] = dstval; |
| 123 | } |
127 | } |
| 124 | } |
128 | } |
| 125 | } |
129 | } |
| 126 | 130 | ||
| Line 280... | Line 284... | ||
| 280 | * |
284 | * |
| 281 | * @param irq IRQ structure. |
285 | * @param irq IRQ structure. |
| 282 | * @param a1 Driver-specific payload argument. |
286 | * @param a1 Driver-specific payload argument. |
| 283 | * @param a2 Driver-specific payload argument. |
287 | * @param a2 Driver-specific payload argument. |
| 284 | * @param a3 Driver-specific payload argument. |
288 | * @param a3 Driver-specific payload argument. |
| - | 289 | * @param a4 Driver-specific payload argument. |
|
| - | 290 | * @param a5 Driver-specific payload argument. |
|
| 285 | */ |
291 | */ |
| 286 | void ipc_irq_send_msg(irq_t *irq, unative_t a1, unative_t a2, unative_t a3) |
292 | void ipc_irq_send_msg(irq_t *irq, unative_t a1, unative_t a2, unative_t a3, |
| - | 293 | unative_t a4, unative_t a5) |
|
| 287 | { |
294 | { |
| 288 | call_t *call; |
295 | call_t *call; |
| 289 | 296 | ||
| 290 | spinlock_lock(&irq->lock); |
297 | spinlock_lock(&irq->lock); |
| 291 | 298 | ||
| Line 298... | Line 305... | ||
| 298 | call->flags |= IPC_CALL_NOTIF; |
305 | call->flags |= IPC_CALL_NOTIF; |
| 299 | IPC_SET_METHOD(call->data, irq->notif_cfg.method); |
306 | IPC_SET_METHOD(call->data, irq->notif_cfg.method); |
| 300 | IPC_SET_ARG1(call->data, a1); |
307 | IPC_SET_ARG1(call->data, a1); |
| 301 | IPC_SET_ARG2(call->data, a2); |
308 | IPC_SET_ARG2(call->data, a2); |
| 302 | IPC_SET_ARG3(call->data, a3); |
309 | IPC_SET_ARG3(call->data, a3); |
| - | 310 | IPC_SET_ARG4(call->data, a4); |
|
| - | 311 | IPC_SET_ARG5(call->data, a5); |
|
| 303 | /* Put a counter to the message */ |
312 | /* Put a counter to the message */ |
| 304 | call->priv = ++irq->notif_cfg.counter; |
313 | call->priv = ++irq->notif_cfg.counter; |
| 305 | 314 | ||
| 306 | send_call(irq, call); |
315 | send_call(irq, call); |
| 307 | } |
316 | } |