1 /******************************************************** 2 * 3 * Warning! 4 * This file was generated automatically. 5 * Please do not edit. Changes should be made in the 6 * appropriate *.tt file. 7 * 8 */ 9 using System; 10 using System.Linq; 11 using System.Collections.Generic; 12 using Antmicro.Renode.Peripherals.CPU.Registers; 13 using Antmicro.Renode.Utilities.Binding; 14 using Antmicro.Renode.Exceptions; 15 16 namespace Antmicro.Renode.Peripherals.CPU 17 { 18 public partial class Xtensa 19 { SetRegister(int register, RegisterValue value)20 public override void SetRegister(int register, RegisterValue value) 21 { 22 if(!mapping.TryGetValue((XtensaRegisters)register, out var r)) 23 { 24 throw new RecoverableException($"Wrong register index: {register}"); 25 } 26 if(r.IsReadonly) 27 { 28 throw new RecoverableException($"The '{(XtensaRegisters)register}' register is read-only."); 29 } 30 31 SetRegisterValue32(r.Index, checked((uint)value)); 32 } 33 GetRegister(int register)34 public override RegisterValue GetRegister(int register) 35 { 36 if(!mapping.TryGetValue((XtensaRegisters)register, out var r)) 37 { 38 throw new RecoverableException($"Wrong register index: {register}"); 39 } 40 return GetRegisterValue32(r.Index); 41 } 42 GetRegisters()43 public override IEnumerable<CPURegister> GetRegisters() 44 { 45 return mapping.Values.OrderBy(x => x.Index); 46 } 47 48 [Register] 49 public override RegisterValue PC 50 { 51 get 52 { 53 return GetRegisterValue32((int)XtensaRegisters.PC); 54 } 55 set 56 { 57 SetRegisterValue32((int)XtensaRegisters.PC, value); 58 } 59 } 60 [Register] 61 public RegisterValue SAR 62 { 63 get 64 { 65 return GetRegisterValue32((int)XtensaRegisters.SAR); 66 } 67 set 68 { 69 SetRegisterValue32((int)XtensaRegisters.SAR, value); 70 } 71 } 72 [Register] 73 public RegisterValue WINDOWBASE 74 { 75 get 76 { 77 return GetRegisterValue32((int)XtensaRegisters.WINDOWBASE); 78 } 79 set 80 { 81 SetRegisterValue32((int)XtensaRegisters.WINDOWBASE, value); 82 } 83 } 84 [Register] 85 public RegisterValue WINDOWSTART 86 { 87 get 88 { 89 return GetRegisterValue32((int)XtensaRegisters.WINDOWSTART); 90 } 91 set 92 { 93 SetRegisterValue32((int)XtensaRegisters.WINDOWSTART, value); 94 } 95 } 96 [Register] 97 public RegisterValue PS 98 { 99 get 100 { 101 return GetRegisterValue32((int)XtensaRegisters.PS); 102 } 103 set 104 { 105 SetRegisterValue32((int)XtensaRegisters.PS, value); 106 } 107 } 108 [Register] 109 public RegisterValue EXPSTATE 110 { 111 get 112 { 113 return GetRegisterValue32((int)XtensaRegisters.EXPSTATE); 114 } 115 set 116 { 117 SetRegisterValue32((int)XtensaRegisters.EXPSTATE, value); 118 } 119 } 120 [Register] 121 public RegisterValue MMID 122 { 123 get 124 { 125 return GetRegisterValue32((int)XtensaRegisters.MMID); 126 } 127 set 128 { 129 SetRegisterValue32((int)XtensaRegisters.MMID, value); 130 } 131 } 132 [Register] 133 public RegisterValue IBREAKENABLE 134 { 135 get 136 { 137 return GetRegisterValue32((int)XtensaRegisters.IBREAKENABLE); 138 } 139 set 140 { 141 SetRegisterValue32((int)XtensaRegisters.IBREAKENABLE, value); 142 } 143 } 144 [Register] 145 public RegisterValue ATOMCTL 146 { 147 get 148 { 149 return GetRegisterValue32((int)XtensaRegisters.ATOMCTL); 150 } 151 set 152 { 153 SetRegisterValue32((int)XtensaRegisters.ATOMCTL, value); 154 } 155 } 156 [Register] 157 public RegisterValue DDR 158 { 159 get 160 { 161 return GetRegisterValue32((int)XtensaRegisters.DDR); 162 } 163 set 164 { 165 SetRegisterValue32((int)XtensaRegisters.DDR, value); 166 } 167 } 168 [Register] 169 public RegisterValue DEPC 170 { 171 get 172 { 173 return GetRegisterValue32((int)XtensaRegisters.DEPC); 174 } 175 set 176 { 177 SetRegisterValue32((int)XtensaRegisters.DEPC, value); 178 } 179 } 180 [Register] 181 public RegisterValue INTERRUPT 182 { 183 get 184 { 185 return GetRegisterValue32((int)XtensaRegisters.INTERRUPT); 186 } 187 set 188 { 189 SetRegisterValue32((int)XtensaRegisters.INTERRUPT, value); 190 } 191 } 192 [Register] 193 public RegisterValue INTSET 194 { 195 get 196 { 197 return GetRegisterValue32((int)XtensaRegisters.INTSET); 198 } 199 set 200 { 201 SetRegisterValue32((int)XtensaRegisters.INTSET, value); 202 } 203 } 204 [Register] 205 public RegisterValue INTCLEAR 206 { 207 get 208 { 209 return GetRegisterValue32((int)XtensaRegisters.INTCLEAR); 210 } 211 set 212 { 213 SetRegisterValue32((int)XtensaRegisters.INTCLEAR, value); 214 } 215 } 216 [Register] 217 public RegisterValue INTENABLE 218 { 219 get 220 { 221 return GetRegisterValue32((int)XtensaRegisters.INTENABLE); 222 } 223 set 224 { 225 SetRegisterValue32((int)XtensaRegisters.INTENABLE, value); 226 } 227 } 228 [Register] 229 public RegisterValue VECBASE 230 { 231 get 232 { 233 return GetRegisterValue32((int)XtensaRegisters.VECBASE); 234 } 235 set 236 { 237 SetRegisterValue32((int)XtensaRegisters.VECBASE, value); 238 } 239 } 240 [Register] 241 public RegisterValue EXCCAUSE 242 { 243 get 244 { 245 return GetRegisterValue32((int)XtensaRegisters.EXCCAUSE); 246 } 247 set 248 { 249 SetRegisterValue32((int)XtensaRegisters.EXCCAUSE, value); 250 } 251 } 252 [Register] 253 public RegisterValue DEBUGCAUSE 254 { 255 get 256 { 257 return GetRegisterValue32((int)XtensaRegisters.DEBUGCAUSE); 258 } 259 set 260 { 261 SetRegisterValue32((int)XtensaRegisters.DEBUGCAUSE, value); 262 } 263 } 264 [Register] 265 public RegisterValue CCOUNT 266 { 267 get 268 { 269 return GetRegisterValue32((int)XtensaRegisters.CCOUNT); 270 } 271 set 272 { 273 SetRegisterValue32((int)XtensaRegisters.CCOUNT, value); 274 } 275 } 276 [Register] 277 public RegisterValue PRID 278 { 279 get 280 { 281 return GetRegisterValue32((int)XtensaRegisters.PRID); 282 } 283 set 284 { 285 SetRegisterValue32((int)XtensaRegisters.PRID, value); 286 } 287 } 288 [Register] 289 public RegisterValue ICOUNT 290 { 291 get 292 { 293 return GetRegisterValue32((int)XtensaRegisters.ICOUNT); 294 } 295 set 296 { 297 SetRegisterValue32((int)XtensaRegisters.ICOUNT, value); 298 } 299 } 300 [Register] 301 public RegisterValue ICOUNTLEVEL 302 { 303 get 304 { 305 return GetRegisterValue32((int)XtensaRegisters.ICOUNTLEVEL); 306 } 307 set 308 { 309 SetRegisterValue32((int)XtensaRegisters.ICOUNTLEVEL, value); 310 } 311 } 312 [Register] 313 public RegisterValue EXCVADDR 314 { 315 get 316 { 317 return GetRegisterValue32((int)XtensaRegisters.EXCVADDR); 318 } 319 set 320 { 321 SetRegisterValue32((int)XtensaRegisters.EXCVADDR, value); 322 } 323 } 324 [Register] 325 public RegisterValue PSINTLEVEL 326 { 327 get 328 { 329 return GetRegisterValue32((int)XtensaRegisters.PSINTLEVEL); 330 } 331 set 332 { 333 SetRegisterValue32((int)XtensaRegisters.PSINTLEVEL, value); 334 } 335 } 336 [Register] 337 public RegisterValue PSUM 338 { 339 get 340 { 341 return GetRegisterValue32((int)XtensaRegisters.PSUM); 342 } 343 set 344 { 345 SetRegisterValue32((int)XtensaRegisters.PSUM, value); 346 } 347 } 348 [Register] 349 public RegisterValue PSWOE 350 { 351 get 352 { 353 return GetRegisterValue32((int)XtensaRegisters.PSWOE); 354 } 355 set 356 { 357 SetRegisterValue32((int)XtensaRegisters.PSWOE, value); 358 } 359 } 360 [Register] 361 public RegisterValue PSEXCM 362 { 363 get 364 { 365 return GetRegisterValue32((int)XtensaRegisters.PSEXCM); 366 } 367 set 368 { 369 SetRegisterValue32((int)XtensaRegisters.PSEXCM, value); 370 } 371 } 372 [Register] 373 public RegisterValue PSCALLINC 374 { 375 get 376 { 377 return GetRegisterValue32((int)XtensaRegisters.PSCALLINC); 378 } 379 set 380 { 381 SetRegisterValue32((int)XtensaRegisters.PSCALLINC, value); 382 } 383 } 384 [Register] 385 public RegisterValue PSOWB 386 { 387 get 388 { 389 return GetRegisterValue32((int)XtensaRegisters.PSOWB); 390 } 391 set 392 { 393 SetRegisterValue32((int)XtensaRegisters.PSOWB, value); 394 } 395 } 396 public RegistersGroup AR { get; private set; } 397 public RegistersGroup CONFIGID { get; private set; } 398 public RegistersGroup SCOMPARE { get; private set; } 399 public RegistersGroup IBREAKA { get; private set; } 400 public RegistersGroup DBREAKA { get; private set; } 401 public RegistersGroup DBREAKC { get; private set; } 402 public RegistersGroup EPC { get; private set; } 403 public RegistersGroup EPS { get; private set; } 404 public RegistersGroup EXCSAVE { get; private set; } 405 public RegistersGroup CCOMPARE { get; private set; } 406 public RegistersGroup MISC { get; private set; } 407 public RegistersGroup A { get; private set; } 408 InitializeRegisters()409 protected override void InitializeRegisters() 410 { 411 var indexValueMapAR = new Dictionary<int, XtensaRegisters> 412 { 413 { 0, XtensaRegisters.AR0 }, 414 { 1, XtensaRegisters.AR1 }, 415 { 2, XtensaRegisters.AR2 }, 416 { 3, XtensaRegisters.AR3 }, 417 { 4, XtensaRegisters.AR4 }, 418 { 5, XtensaRegisters.AR5 }, 419 { 6, XtensaRegisters.AR6 }, 420 { 7, XtensaRegisters.AR7 }, 421 { 8, XtensaRegisters.AR8 }, 422 { 9, XtensaRegisters.AR9 }, 423 { 10, XtensaRegisters.AR10 }, 424 { 11, XtensaRegisters.AR11 }, 425 { 12, XtensaRegisters.AR12 }, 426 { 13, XtensaRegisters.AR13 }, 427 { 14, XtensaRegisters.AR14 }, 428 { 15, XtensaRegisters.AR15 }, 429 { 16, XtensaRegisters.AR16 }, 430 { 17, XtensaRegisters.AR17 }, 431 { 18, XtensaRegisters.AR18 }, 432 { 19, XtensaRegisters.AR19 }, 433 { 20, XtensaRegisters.AR20 }, 434 { 21, XtensaRegisters.AR21 }, 435 { 22, XtensaRegisters.AR22 }, 436 { 23, XtensaRegisters.AR23 }, 437 { 24, XtensaRegisters.AR24 }, 438 { 25, XtensaRegisters.AR25 }, 439 { 26, XtensaRegisters.AR26 }, 440 { 27, XtensaRegisters.AR27 }, 441 { 28, XtensaRegisters.AR28 }, 442 { 29, XtensaRegisters.AR29 }, 443 { 30, XtensaRegisters.AR30 }, 444 { 31, XtensaRegisters.AR31 }, 445 }; 446 AR = new RegistersGroup( 447 indexValueMapAR.Keys, 448 i => GetRegister((int)indexValueMapAR[i]), 449 (i, v) => SetRegister((int)indexValueMapAR[i], v)); 450 451 var indexValueMapCONFIGID = new Dictionary<int, XtensaRegisters> 452 { 453 { 0, XtensaRegisters.CONFIGID0 }, 454 { 1, XtensaRegisters.CONFIGID1 }, 455 }; 456 CONFIGID = new RegistersGroup( 457 indexValueMapCONFIGID.Keys, 458 i => GetRegister((int)indexValueMapCONFIGID[i]), 459 (i, v) => SetRegister((int)indexValueMapCONFIGID[i], v)); 460 461 var indexValueMapSCOMPARE = new Dictionary<int, XtensaRegisters> 462 { 463 { 1, XtensaRegisters.SCOMPARE1 }, 464 }; 465 SCOMPARE = new RegistersGroup( 466 indexValueMapSCOMPARE.Keys, 467 i => GetRegister((int)indexValueMapSCOMPARE[i]), 468 (i, v) => SetRegister((int)indexValueMapSCOMPARE[i], v)); 469 470 var indexValueMapIBREAKA = new Dictionary<int, XtensaRegisters> 471 { 472 { 0, XtensaRegisters.IBREAKA0 }, 473 { 1, XtensaRegisters.IBREAKA1 }, 474 }; 475 IBREAKA = new RegistersGroup( 476 indexValueMapIBREAKA.Keys, 477 i => GetRegister((int)indexValueMapIBREAKA[i]), 478 (i, v) => SetRegister((int)indexValueMapIBREAKA[i], v)); 479 480 var indexValueMapDBREAKA = new Dictionary<int, XtensaRegisters> 481 { 482 { 0, XtensaRegisters.DBREAKA0 }, 483 { 1, XtensaRegisters.DBREAKA1 }, 484 }; 485 DBREAKA = new RegistersGroup( 486 indexValueMapDBREAKA.Keys, 487 i => GetRegister((int)indexValueMapDBREAKA[i]), 488 (i, v) => SetRegister((int)indexValueMapDBREAKA[i], v)); 489 490 var indexValueMapDBREAKC = new Dictionary<int, XtensaRegisters> 491 { 492 { 0, XtensaRegisters.DBREAKC0 }, 493 { 1, XtensaRegisters.DBREAKC1 }, 494 }; 495 DBREAKC = new RegistersGroup( 496 indexValueMapDBREAKC.Keys, 497 i => GetRegister((int)indexValueMapDBREAKC[i]), 498 (i, v) => SetRegister((int)indexValueMapDBREAKC[i], v)); 499 500 var indexValueMapEPC = new Dictionary<int, XtensaRegisters> 501 { 502 { 1, XtensaRegisters.EPC1 }, 503 { 2, XtensaRegisters.EPC2 }, 504 { 3, XtensaRegisters.EPC3 }, 505 { 4, XtensaRegisters.EPC4 }, 506 { 5, XtensaRegisters.EPC5 }, 507 { 6, XtensaRegisters.EPC6 }, 508 { 7, XtensaRegisters.EPC7 }, 509 }; 510 EPC = new RegistersGroup( 511 indexValueMapEPC.Keys, 512 i => GetRegister((int)indexValueMapEPC[i]), 513 (i, v) => SetRegister((int)indexValueMapEPC[i], v)); 514 515 var indexValueMapEPS = new Dictionary<int, XtensaRegisters> 516 { 517 { 2, XtensaRegisters.EPS2 }, 518 { 3, XtensaRegisters.EPS3 }, 519 { 4, XtensaRegisters.EPS4 }, 520 { 5, XtensaRegisters.EPS5 }, 521 { 6, XtensaRegisters.EPS6 }, 522 { 7, XtensaRegisters.EPS7 }, 523 }; 524 EPS = new RegistersGroup( 525 indexValueMapEPS.Keys, 526 i => GetRegister((int)indexValueMapEPS[i]), 527 (i, v) => SetRegister((int)indexValueMapEPS[i], v)); 528 529 var indexValueMapEXCSAVE = new Dictionary<int, XtensaRegisters> 530 { 531 { 1, XtensaRegisters.EXCSAVE1 }, 532 { 2, XtensaRegisters.EXCSAVE2 }, 533 { 3, XtensaRegisters.EXCSAVE3 }, 534 { 4, XtensaRegisters.EXCSAVE4 }, 535 { 5, XtensaRegisters.EXCSAVE5 }, 536 { 6, XtensaRegisters.EXCSAVE6 }, 537 { 7, XtensaRegisters.EXCSAVE7 }, 538 }; 539 EXCSAVE = new RegistersGroup( 540 indexValueMapEXCSAVE.Keys, 541 i => GetRegister((int)indexValueMapEXCSAVE[i]), 542 (i, v) => SetRegister((int)indexValueMapEXCSAVE[i], v)); 543 544 var indexValueMapCCOMPARE = new Dictionary<int, XtensaRegisters> 545 { 546 { 0, XtensaRegisters.CCOMPARE0 }, 547 { 1, XtensaRegisters.CCOMPARE1 }, 548 { 2, XtensaRegisters.CCOMPARE2 }, 549 }; 550 CCOMPARE = new RegistersGroup( 551 indexValueMapCCOMPARE.Keys, 552 i => GetRegister((int)indexValueMapCCOMPARE[i]), 553 (i, v) => SetRegister((int)indexValueMapCCOMPARE[i], v)); 554 555 var indexValueMapMISC = new Dictionary<int, XtensaRegisters> 556 { 557 { 0, XtensaRegisters.MISC0 }, 558 { 1, XtensaRegisters.MISC1 }, 559 }; 560 MISC = new RegistersGroup( 561 indexValueMapMISC.Keys, 562 i => GetRegister((int)indexValueMapMISC[i]), 563 (i, v) => SetRegister((int)indexValueMapMISC[i], v)); 564 565 var indexValueMapA = new Dictionary<int, XtensaRegisters> 566 { 567 { 0, XtensaRegisters.A0 }, 568 { 1, XtensaRegisters.A1 }, 569 { 2, XtensaRegisters.A2 }, 570 { 3, XtensaRegisters.A3 }, 571 { 4, XtensaRegisters.A4 }, 572 { 5, XtensaRegisters.A5 }, 573 { 6, XtensaRegisters.A6 }, 574 { 7, XtensaRegisters.A7 }, 575 { 8, XtensaRegisters.A8 }, 576 { 9, XtensaRegisters.A9 }, 577 { 10, XtensaRegisters.A10 }, 578 { 11, XtensaRegisters.A11 }, 579 { 12, XtensaRegisters.A12 }, 580 { 13, XtensaRegisters.A13 }, 581 { 14, XtensaRegisters.A14 }, 582 { 15, XtensaRegisters.A15 }, 583 }; 584 A = new RegistersGroup( 585 indexValueMapA.Keys, 586 i => GetRegister((int)indexValueMapA[i]), 587 (i, v) => SetRegister((int)indexValueMapA[i], v)); 588 589 } 590 591 // 649: Field '...' is never assigned to, and will always have its default value null 592 #pragma warning disable 649 593 594 [Import(Name = "tlib_set_register_value_32")] 595 protected Action<int, uint> SetRegisterValue32; 596 [Import(Name = "tlib_get_register_value_32")] 597 protected Func<int, uint> GetRegisterValue32; 598 599 #pragma warning restore 649 600 601 private static readonly Dictionary<XtensaRegisters, CPURegister> mapping = new Dictionary<XtensaRegisters, CPURegister> 602 { 603 { XtensaRegisters.PC, new CPURegister(0, 32, isGeneral: true, isReadonly: false, aliases: new [] { "PC" }) }, 604 { XtensaRegisters.AR0, new CPURegister(1, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR0" }) }, 605 { XtensaRegisters.AR1, new CPURegister(2, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR1" }) }, 606 { XtensaRegisters.AR2, new CPURegister(3, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR2" }) }, 607 { XtensaRegisters.AR3, new CPURegister(4, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR3" }) }, 608 { XtensaRegisters.AR4, new CPURegister(5, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR4" }) }, 609 { XtensaRegisters.AR5, new CPURegister(6, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR5" }) }, 610 { XtensaRegisters.AR6, new CPURegister(7, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR6" }) }, 611 { XtensaRegisters.AR7, new CPURegister(8, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR7" }) }, 612 { XtensaRegisters.AR8, new CPURegister(9, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR8" }) }, 613 { XtensaRegisters.AR9, new CPURegister(10, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR9" }) }, 614 { XtensaRegisters.AR10, new CPURegister(11, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR10" }) }, 615 { XtensaRegisters.AR11, new CPURegister(12, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR11" }) }, 616 { XtensaRegisters.AR12, new CPURegister(13, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR12" }) }, 617 { XtensaRegisters.AR13, new CPURegister(14, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR13" }) }, 618 { XtensaRegisters.AR14, new CPURegister(15, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR14" }) }, 619 { XtensaRegisters.AR15, new CPURegister(16, 32, isGeneral: true, isReadonly: false, aliases: new [] { "AR15" }) }, 620 { XtensaRegisters.AR16, new CPURegister(17, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR16" }) }, 621 { XtensaRegisters.AR17, new CPURegister(18, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR17" }) }, 622 { XtensaRegisters.AR18, new CPURegister(19, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR18" }) }, 623 { XtensaRegisters.AR19, new CPURegister(20, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR19" }) }, 624 { XtensaRegisters.AR20, new CPURegister(21, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR20" }) }, 625 { XtensaRegisters.AR21, new CPURegister(22, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR21" }) }, 626 { XtensaRegisters.AR22, new CPURegister(23, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR22" }) }, 627 { XtensaRegisters.AR23, new CPURegister(24, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR23" }) }, 628 { XtensaRegisters.AR24, new CPURegister(25, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR24" }) }, 629 { XtensaRegisters.AR25, new CPURegister(26, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR25" }) }, 630 { XtensaRegisters.AR26, new CPURegister(27, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR26" }) }, 631 { XtensaRegisters.AR27, new CPURegister(28, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR27" }) }, 632 { XtensaRegisters.AR28, new CPURegister(29, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR28" }) }, 633 { XtensaRegisters.AR29, new CPURegister(30, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR29" }) }, 634 { XtensaRegisters.AR30, new CPURegister(31, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR30" }) }, 635 { XtensaRegisters.AR31, new CPURegister(32, 32, isGeneral: false, isReadonly: false, aliases: new [] { "AR31" }) }, 636 { XtensaRegisters.SAR, new CPURegister(33, 32, isGeneral: false, isReadonly: false, aliases: new [] { "SAR" }) }, 637 { XtensaRegisters.WINDOWBASE, new CPURegister(34, 32, isGeneral: false, isReadonly: false, aliases: new [] { "WINDOWBASE" }) }, 638 { XtensaRegisters.WINDOWSTART, new CPURegister(35, 32, isGeneral: false, isReadonly: false, aliases: new [] { "WINDOWSTART" }) }, 639 { XtensaRegisters.CONFIGID0, new CPURegister(36, 32, isGeneral: false, isReadonly: false, aliases: new [] { "CONFIGID0" }) }, 640 { XtensaRegisters.CONFIGID1, new CPURegister(37, 32, isGeneral: false, isReadonly: false, aliases: new [] { "CONFIGID1" }) }, 641 { XtensaRegisters.PS, new CPURegister(38, 32, isGeneral: false, isReadonly: false, aliases: new [] { "PS" }) }, 642 { XtensaRegisters.SCOMPARE1, new CPURegister(39, 32, isGeneral: false, isReadonly: false, aliases: new [] { "SCOMPARE1" }) }, 643 { XtensaRegisters.EXPSTATE, new CPURegister(40, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXPSTATE" }) }, 644 { XtensaRegisters.MMID, new CPURegister(41, 32, isGeneral: false, isReadonly: false, aliases: new [] { "MMID" }) }, 645 { XtensaRegisters.IBREAKENABLE, new CPURegister(42, 32, isGeneral: false, isReadonly: false, aliases: new [] { "IBREAKENABLE" }) }, 646 { XtensaRegisters.ATOMCTL, new CPURegister(43, 32, isGeneral: false, isReadonly: false, aliases: new [] { "ATOMCTL" }) }, 647 { XtensaRegisters.DDR, new CPURegister(44, 32, isGeneral: false, isReadonly: false, aliases: new [] { "DDR" }) }, 648 { XtensaRegisters.IBREAKA0, new CPURegister(45, 32, isGeneral: false, isReadonly: false, aliases: new [] { "IBREAKA0" }) }, 649 { XtensaRegisters.IBREAKA1, new CPURegister(46, 32, isGeneral: false, isReadonly: false, aliases: new [] { "IBREAKA1" }) }, 650 { XtensaRegisters.DBREAKA0, new CPURegister(47, 32, isGeneral: false, isReadonly: false, aliases: new [] { "DBREAKA0" }) }, 651 { XtensaRegisters.DBREAKA1, new CPURegister(48, 32, isGeneral: false, isReadonly: false, aliases: new [] { "DBREAKA1" }) }, 652 { XtensaRegisters.DBREAKC0, new CPURegister(49, 32, isGeneral: false, isReadonly: false, aliases: new [] { "DBREAKC0" }) }, 653 { XtensaRegisters.DBREAKC1, new CPURegister(50, 32, isGeneral: false, isReadonly: false, aliases: new [] { "DBREAKC1" }) }, 654 { XtensaRegisters.EPC1, new CPURegister(51, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPC1" }) }, 655 { XtensaRegisters.EPC2, new CPURegister(52, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPC2" }) }, 656 { XtensaRegisters.EPC3, new CPURegister(53, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPC3" }) }, 657 { XtensaRegisters.EPC4, new CPURegister(54, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPC4" }) }, 658 { XtensaRegisters.EPC5, new CPURegister(55, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPC5" }) }, 659 { XtensaRegisters.EPC6, new CPURegister(56, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPC6" }) }, 660 { XtensaRegisters.EPC7, new CPURegister(57, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPC7" }) }, 661 { XtensaRegisters.DEPC, new CPURegister(58, 32, isGeneral: false, isReadonly: false, aliases: new [] { "DEPC" }) }, 662 { XtensaRegisters.EPS2, new CPURegister(59, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPS2" }) }, 663 { XtensaRegisters.EPS3, new CPURegister(60, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPS3" }) }, 664 { XtensaRegisters.EPS4, new CPURegister(61, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPS4" }) }, 665 { XtensaRegisters.EPS5, new CPURegister(62, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPS5" }) }, 666 { XtensaRegisters.EPS6, new CPURegister(63, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPS6" }) }, 667 { XtensaRegisters.EPS7, new CPURegister(64, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EPS7" }) }, 668 { XtensaRegisters.EXCSAVE1, new CPURegister(65, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCSAVE1" }) }, 669 { XtensaRegisters.EXCSAVE2, new CPURegister(66, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCSAVE2" }) }, 670 { XtensaRegisters.EXCSAVE3, new CPURegister(67, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCSAVE3" }) }, 671 { XtensaRegisters.EXCSAVE4, new CPURegister(68, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCSAVE4" }) }, 672 { XtensaRegisters.EXCSAVE5, new CPURegister(69, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCSAVE5" }) }, 673 { XtensaRegisters.EXCSAVE6, new CPURegister(70, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCSAVE6" }) }, 674 { XtensaRegisters.EXCSAVE7, new CPURegister(71, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCSAVE7" }) }, 675 { XtensaRegisters.INTERRUPT, new CPURegister(72, 32, isGeneral: false, isReadonly: true, aliases: new [] { "INTERRUPT" }) }, 676 { XtensaRegisters.INTSET, new CPURegister(73, 32, isGeneral: false, isReadonly: false, aliases: new [] { "INTSET" }) }, 677 { XtensaRegisters.INTCLEAR, new CPURegister(74, 32, isGeneral: false, isReadonly: false, aliases: new [] { "INTCLEAR" }) }, 678 { XtensaRegisters.INTENABLE, new CPURegister(75, 32, isGeneral: false, isReadonly: false, aliases: new [] { "INTENABLE" }) }, 679 { XtensaRegisters.VECBASE, new CPURegister(76, 32, isGeneral: false, isReadonly: false, aliases: new [] { "VECBASE" }) }, 680 { XtensaRegisters.EXCCAUSE, new CPURegister(77, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCCAUSE" }) }, 681 { XtensaRegisters.DEBUGCAUSE, new CPURegister(78, 32, isGeneral: false, isReadonly: false, aliases: new [] { "DEBUGCAUSE" }) }, 682 { XtensaRegisters.CCOUNT, new CPURegister(79, 32, isGeneral: false, isReadonly: false, aliases: new [] { "CCOUNT" }) }, 683 { XtensaRegisters.PRID, new CPURegister(80, 32, isGeneral: false, isReadonly: false, aliases: new [] { "PRID" }) }, 684 { XtensaRegisters.ICOUNT, new CPURegister(81, 32, isGeneral: false, isReadonly: false, aliases: new [] { "ICOUNT" }) }, 685 { XtensaRegisters.ICOUNTLEVEL, new CPURegister(82, 32, isGeneral: false, isReadonly: false, aliases: new [] { "ICOUNTLEVEL" }) }, 686 { XtensaRegisters.EXCVADDR, new CPURegister(83, 32, isGeneral: false, isReadonly: false, aliases: new [] { "EXCVADDR" }) }, 687 { XtensaRegisters.CCOMPARE0, new CPURegister(84, 32, isGeneral: false, isReadonly: false, aliases: new [] { "CCOMPARE0" }) }, 688 { XtensaRegisters.CCOMPARE1, new CPURegister(85, 32, isGeneral: false, isReadonly: false, aliases: new [] { "CCOMPARE1" }) }, 689 { XtensaRegisters.CCOMPARE2, new CPURegister(86, 32, isGeneral: false, isReadonly: false, aliases: new [] { "CCOMPARE2" }) }, 690 { XtensaRegisters.MISC0, new CPURegister(87, 32, isGeneral: false, isReadonly: false, aliases: new [] { "MISC0" }) }, 691 { XtensaRegisters.MISC1, new CPURegister(88, 32, isGeneral: false, isReadonly: false, aliases: new [] { "MISC1" }) }, 692 { XtensaRegisters.A0, new CPURegister(89, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A0" }) }, 693 { XtensaRegisters.A1, new CPURegister(90, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A1" }) }, 694 { XtensaRegisters.A2, new CPURegister(91, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A2" }) }, 695 { XtensaRegisters.A3, new CPURegister(92, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A3" }) }, 696 { XtensaRegisters.A4, new CPURegister(93, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A4" }) }, 697 { XtensaRegisters.A5, new CPURegister(94, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A5" }) }, 698 { XtensaRegisters.A6, new CPURegister(95, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A6" }) }, 699 { XtensaRegisters.A7, new CPURegister(96, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A7" }) }, 700 { XtensaRegisters.A8, new CPURegister(97, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A8" }) }, 701 { XtensaRegisters.A9, new CPURegister(98, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A9" }) }, 702 { XtensaRegisters.A10, new CPURegister(99, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A10" }) }, 703 { XtensaRegisters.A11, new CPURegister(100, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A11" }) }, 704 { XtensaRegisters.A12, new CPURegister(101, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A12" }) }, 705 { XtensaRegisters.A13, new CPURegister(102, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A13" }) }, 706 { XtensaRegisters.A14, new CPURegister(103, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A14" }) }, 707 { XtensaRegisters.A15, new CPURegister(104, 32, isGeneral: false, isReadonly: false, aliases: new [] { "A15" }) }, 708 { XtensaRegisters.PSINTLEVEL, new CPURegister(105, 32, isGeneral: false, isReadonly: false, aliases: new [] { "PSINTLEVEL" }) }, 709 { XtensaRegisters.PSUM, new CPURegister(106, 32, isGeneral: false, isReadonly: false, aliases: new [] { "PSUM" }) }, 710 { XtensaRegisters.PSWOE, new CPURegister(107, 32, isGeneral: false, isReadonly: false, aliases: new [] { "PSWOE" }) }, 711 { XtensaRegisters.PSEXCM, new CPURegister(108, 32, isGeneral: false, isReadonly: false, aliases: new [] { "PSEXCM" }) }, 712 { XtensaRegisters.PSCALLINC, new CPURegister(109, 32, isGeneral: false, isReadonly: false, aliases: new [] { "PSCALLINC" }) }, 713 { XtensaRegisters.PSOWB, new CPURegister(110, 32, isGeneral: false, isReadonly: false, aliases: new [] { "PSOWB" }) }, 714 }; 715 } 716 717 public enum XtensaRegisters 718 { 719 PC = 0, 720 SAR = 33, 721 WINDOWBASE = 34, 722 WINDOWSTART = 35, 723 PS = 38, 724 EXPSTATE = 40, 725 MMID = 41, 726 IBREAKENABLE = 42, 727 ATOMCTL = 43, 728 DDR = 44, 729 DEPC = 58, 730 INTERRUPT = 72, 731 INTSET = 73, 732 INTCLEAR = 74, 733 INTENABLE = 75, 734 VECBASE = 76, 735 EXCCAUSE = 77, 736 DEBUGCAUSE = 78, 737 CCOUNT = 79, 738 PRID = 80, 739 ICOUNT = 81, 740 ICOUNTLEVEL = 82, 741 EXCVADDR = 83, 742 PSINTLEVEL = 105, 743 PSUM = 106, 744 PSWOE = 107, 745 PSEXCM = 108, 746 PSCALLINC = 109, 747 PSOWB = 110, 748 AR0 = 1, 749 AR1 = 2, 750 AR2 = 3, 751 AR3 = 4, 752 AR4 = 5, 753 AR5 = 6, 754 AR6 = 7, 755 AR7 = 8, 756 AR8 = 9, 757 AR9 = 10, 758 AR10 = 11, 759 AR11 = 12, 760 AR12 = 13, 761 AR13 = 14, 762 AR14 = 15, 763 AR15 = 16, 764 AR16 = 17, 765 AR17 = 18, 766 AR18 = 19, 767 AR19 = 20, 768 AR20 = 21, 769 AR21 = 22, 770 AR22 = 23, 771 AR23 = 24, 772 AR24 = 25, 773 AR25 = 26, 774 AR26 = 27, 775 AR27 = 28, 776 AR28 = 29, 777 AR29 = 30, 778 AR30 = 31, 779 AR31 = 32, 780 CONFIGID0 = 36, 781 CONFIGID1 = 37, 782 SCOMPARE1 = 39, 783 IBREAKA0 = 45, 784 IBREAKA1 = 46, 785 DBREAKA0 = 47, 786 DBREAKA1 = 48, 787 DBREAKC0 = 49, 788 DBREAKC1 = 50, 789 EPC1 = 51, 790 EPC2 = 52, 791 EPC3 = 53, 792 EPC4 = 54, 793 EPC5 = 55, 794 EPC6 = 56, 795 EPC7 = 57, 796 EPS2 = 59, 797 EPS3 = 60, 798 EPS4 = 61, 799 EPS5 = 62, 800 EPS6 = 63, 801 EPS7 = 64, 802 EXCSAVE1 = 65, 803 EXCSAVE2 = 66, 804 EXCSAVE3 = 67, 805 EXCSAVE4 = 68, 806 EXCSAVE5 = 69, 807 EXCSAVE6 = 70, 808 EXCSAVE7 = 71, 809 CCOMPARE0 = 84, 810 CCOMPARE1 = 85, 811 CCOMPARE2 = 86, 812 MISC0 = 87, 813 MISC1 = 88, 814 A0 = 89, 815 A1 = 90, 816 A2 = 91, 817 A3 = 92, 818 A4 = 93, 819 A5 = 94, 820 A6 = 95, 821 A7 = 96, 822 A8 = 97, 823 A9 = 98, 824 A10 = 99, 825 A11 = 100, 826 A12 = 101, 827 A13 = 102, 828 A14 = 103, 829 A15 = 104, 830 } 831 } 832