Commit 3464c5899891efa0b7cb86b5a8090da50a3e6c88

Authored by ths
1 parent 2f062c72

Add INTC controller prototype, by Magnus Damm.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3271 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 51 additions and 0 deletions
hw/sh7750.c
... ... @@ -51,6 +51,14 @@ typedef struct SH7750State {
51 51 uint16_t periph_pdtrb; /* Imposed by the peripherals */
52 52 uint16_t periph_portdirb; /* Direction seen from the peripherals */
53 53 sh7750_io_device *devices[NB_DEVICES]; /* External peripherals */
  54 +
  55 + uint16_t icr;
  56 + uint16_t ipra;
  57 + uint16_t iprb;
  58 + uint16_t iprc;
  59 + uint16_t iprd;
  60 + uint32_t intpri00;
  61 + uint32_t intmsk00;
54 62 /* Cache */
55 63 uint32_t ccr;
56 64  
... ... @@ -207,6 +215,16 @@ static uint32_t sh7750_mem_readw(void *opaque, target_phys_addr_t addr)
207 215 return porta_lines(s);
208 216 case SH7750_PDTRB_A7:
209 217 return portb_lines(s);
  218 + case 0x1fd00000:
  219 + return s->icr;
  220 + case 0x1fd00004:
  221 + return s->ipra;
  222 + case 0x1fd00008:
  223 + return s->iprb;
  224 + case 0x1fd0000c:
  225 + return s->iprc;
  226 + case 0x1fd00010:
  227 + return s->iprd;
210 228 default:
211 229 error_access("word read", addr);
212 230 assert(0);
... ... @@ -242,6 +260,14 @@ static uint32_t sh7750_mem_readl(void *opaque, target_phys_addr_t addr)
242 260 return 0x00110000; /* Minimum caches */
243 261 case 0x1f000044: /* Processor version PRR */
244 262 return 0x00000100; /* SH7750R */
  263 + case 0x1e080000:
  264 + return s->intpri00;
  265 + case 0x1e080020:
  266 + return 0;
  267 + case 0x1e080040:
  268 + return s->intmsk00;
  269 + case 0x1e080060:
  270 + return 0;
245 271 default:
246 272 error_access("long read", addr);
247 273 assert(0);
... ... @@ -300,6 +326,21 @@ static void sh7750_mem_writew(void *opaque, target_phys_addr_t addr,
300 326 assert(0);
301 327 }
302 328 return;
  329 + case 0x1fd00000:
  330 + s->icr = mem_value;
  331 + return;
  332 + case 0x1fd00004:
  333 + s->ipra = mem_value;
  334 + return;
  335 + case 0x1fd00008:
  336 + s->iprb = mem_value;
  337 + return;
  338 + case 0x1fd0000c:
  339 + s->iprc = mem_value;
  340 + return;
  341 + case 0x1fd00010:
  342 + s->iprd = mem_value;
  343 + return;
303 344 default:
304 345 error_access("word write", addr);
305 346 assert(0);
... ... @@ -364,6 +405,16 @@ static void sh7750_mem_writel(void *opaque, target_phys_addr_t addr,
364 405 case SH7750_CCR_A7:
365 406 s->ccr = mem_value;
366 407 return;
  408 + case 0x1e080000:
  409 + s->intpri00 = mem_value;
  410 + return;
  411 + case 0x1e080020:
  412 + return;
  413 + case 0x1e080040:
  414 + s->intmsk00 = mem_value;
  415 + return;
  416 + case 0x1e080060:
  417 + return;
367 418 default:
368 419 error_access("long write", addr);
369 420 assert(0);
... ...