pl011.cc (7733:08d6a773d1b6) pl011.cc (7823:dac01f14f20f)
1/*
2 * Copyright (c) 2010 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 173 unchanged lines hidden (view full) ---

182 exitSimLoop("UART received EOT", 0);
183
184 term->out(data & 0xFF);
185
186 if (imsc.txim) {
187 DPRINTF(Uart, "TX int enabled, scheduling interruptt\n");
188 rawInt.txim = 1;
189 if (!intEvent.scheduled())
1/*
2 * Copyright (c) 2010 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 173 unchanged lines hidden (view full) ---

182 exitSimLoop("UART received EOT", 0);
183
184 term->out(data & 0xFF);
185
186 if (imsc.txim) {
187 DPRINTF(Uart, "TX int enabled, scheduling interruptt\n");
188 rawInt.txim = 1;
189 if (!intEvent.scheduled())
190 schedule(intEvent, curTick + intDelay);
190 schedule(intEvent, curTick() + intDelay);
191 }
192
193 break;
194 case UART_CR:
195 control = data;
196 break;
197 case UART_IBRD:
198 ibrd = data;

--- 13 unchanged lines hidden (view full) ---

212 if (imsc.rimim || imsc.ctsmim || imsc.dcdmim || imsc.dsrmim
213 || imsc.feim || imsc.peim || imsc.beim || imsc.oeim || imsc.rsvd)
214 panic("Unknown interrupt enabled\n");
215
216 if (imsc.txim) {
217 DPRINTF(Uart, "Writing to IMSC: TX int enabled, scheduling interruptt\n");
218 rawInt.txim = 1;
219 if (!intEvent.scheduled())
191 }
192
193 break;
194 case UART_CR:
195 control = data;
196 break;
197 case UART_IBRD:
198 ibrd = data;

--- 13 unchanged lines hidden (view full) ---

212 if (imsc.rimim || imsc.ctsmim || imsc.dcdmim || imsc.dsrmim
213 || imsc.feim || imsc.peim || imsc.beim || imsc.oeim || imsc.rsvd)
214 panic("Unknown interrupt enabled\n");
215
216 if (imsc.txim) {
217 DPRINTF(Uart, "Writing to IMSC: TX int enabled, scheduling interruptt\n");
218 rawInt.txim = 1;
219 if (!intEvent.scheduled())
220 schedule(intEvent, curTick + intDelay);
220 schedule(intEvent, curTick() + intDelay);
221 }
222
223 break;
224
225 case UART_ICR:
226 DPRINTF(Uart, "Clearing interrupts 0x%x\n", data);
227 rawInt = rawInt & ~data;
228 maskInt = rawInt & imsc;

--- 18 unchanged lines hidden (view full) ---

247 /*@todo ignore the fifo, just say we have data now
248 * We might want to fix this, or we might not care */
249 rawInt.rxim = 1;
250 rawInt.rtim = 1;
251
252 DPRINTF(Uart, "Data available, scheduling interrupt\n");
253
254 if (!intEvent.scheduled())
221 }
222
223 break;
224
225 case UART_ICR:
226 DPRINTF(Uart, "Clearing interrupts 0x%x\n", data);
227 rawInt = rawInt & ~data;
228 maskInt = rawInt & imsc;

--- 18 unchanged lines hidden (view full) ---

247 /*@todo ignore the fifo, just say we have data now
248 * We might want to fix this, or we might not care */
249 rawInt.rxim = 1;
250 rawInt.rtim = 1;
251
252 DPRINTF(Uart, "Data available, scheduling interrupt\n");
253
254 if (!intEvent.scheduled())
255 schedule(intEvent, curTick + intDelay);
255 schedule(intEvent, curTick() + intDelay);
256}
257
258void
259Pl011::generateInterrupt()
260{
261 DPRINTF(Uart, "Generate Interrupt: imsc=0x%x rawInt=0x%x maskInt=0x%x\n",
262 imsc, rawInt, maskInt);
263 maskInt = imsc & rawInt;

--- 65 unchanged lines hidden ---
256}
257
258void
259Pl011::generateInterrupt()
260{
261 DPRINTF(Uart, "Generate Interrupt: imsc=0x%x rawInt=0x%x maskInt=0x%x\n",
262 imsc, rawInt, maskInt);
263 maskInt = imsc & rawInt;

--- 65 unchanged lines hidden ---