summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Lioncash2015-01-30 12:43:58 -0500
committerGravatar Lioncash2015-01-30 12:43:58 -0500
commit3dfef1701c528bea52c4c5ae4bf5e2efb9d6598f (patch)
tree47476be511679300e9c2a130760fed592b0933f7 /src
parentMerge pull request #503 from yuriks/kernel-lifetime4 (diff)
downloadyuzu-3dfef1701c528bea52c4c5ae4bf5e2efb9d6598f.tar.gz
yuzu-3dfef1701c528bea52c4c5ae4bf5e2efb9d6598f.tar.xz
yuzu-3dfef1701c528bea52c4c5ae4bf5e2efb9d6598f.zip
armdefs: Move some defines over to enums
Diffstat (limited to 'src')
-rw-r--r--src/core/arm/skyeye_common/armdefs.h243
1 files changed, 112 insertions, 131 deletions
diff --git a/src/core/arm/skyeye_common/armdefs.h b/src/core/arm/skyeye_common/armdefs.h
index 560b51a9f..d5939313b 100644
--- a/src/core/arm/skyeye_common/armdefs.h
+++ b/src/core/arm/skyeye_common/armdefs.h
@@ -395,53 +395,41 @@ So, if lateabtSig=1, then it means Late Abort Model(Base Updated Abort Model)
395#define DIFF_WRITE 0 395#define DIFF_WRITE 0
396 396
397typedef ARMul_State arm_core_t; 397typedef ARMul_State arm_core_t;
398#define ResetPin NresetSig
399#define FIQPin NfiqSig
400#define IRQPin NirqSig
401#define AbortPin abortSig
402#define TransPin NtransSig
403#define BigEndPin bigendSig
404#define Prog32Pin prog32Sig
405#define Data32Pin data32Sig
406#define LateAbortPin lateabtSig
407 398
408/***************************************************************************\ 399/***************************************************************************\
409* Types of ARM we know about * 400* Types of ARM we know about *
410\***************************************************************************/ 401\***************************************************************************/
411 402
412/* The bitflags */ 403enum {
413#define ARM_Fix26_Prop 0x01 404 ARM_Fix26_Prop = 0x01,
414#define ARM_Nexec_Prop 0x02 405 ARM_Nexec_Prop = 0x02,
415#define ARM_Debug_Prop 0x10 406 ARM_Debug_Prop = 0x10,
416#define ARM_Isync_Prop ARM_Debug_Prop 407 ARM_Isync_Prop = ARM_Debug_Prop,
417#define ARM_Lock_Prop 0x20 408 ARM_Lock_Prop = 0x20,
418#define ARM_v4_Prop 0x40 409 ARM_v4_Prop = 0x40,
419#define ARM_v5_Prop 0x80 410 ARM_v5_Prop = 0x80,
420#define ARM_v6_Prop 0xc0 411 ARM_v6_Prop = 0xc0,
421 412
422#define ARM_v5e_Prop 0x100 413 ARM_v5e_Prop = 0x100,
423#define ARM_XScale_Prop 0x200 414 ARM_XScale_Prop = 0x200,
424#define ARM_ep9312_Prop 0x400 415 ARM_ep9312_Prop = 0x400,
425#define ARM_iWMMXt_Prop 0x800 416 ARM_iWMMXt_Prop = 0x800,
426#define ARM_PXA27X_Prop 0x1000 417 ARM_PXA27X_Prop = 0x1000,
427#define ARM_v7_Prop 0x2000 418 ARM_v7_Prop = 0x2000,
428 419
429/* ARM2 family */ 420 // ARM2 family
430#define ARM2 (ARM_Fix26_Prop) 421 ARM2 = ARM_Fix26_Prop,
431#define ARM2as ARM2 422 ARM2as = ARM2,
432#define ARM61 ARM2 423 ARM61 = ARM2,
433#define ARM3 ARM2 424 ARM3 = ARM2,
434 425
435#ifdef ARM60 /* previous definition in armopts.h */ 426 // ARM6 family
436#undef ARM60 427 ARM6 = ARM_Lock_Prop,
437#endif 428 ARM60 = ARM6,
438 429 ARM600 = ARM6,
439/* ARM6 family */ 430 ARM610 = ARM6,
440#define ARM6 (ARM_Lock_Prop) 431 ARM620 = ARM6
441#define ARM60 ARM6 432};
442#define ARM600 ARM6
443#define ARM610 ARM6
444#define ARM620 ARM6
445 433
446 434
447/***************************************************************************\ 435/***************************************************************************\
@@ -456,41 +444,44 @@ typedef ARMul_State arm_core_t;
456* The hardware vector addresses * 444* The hardware vector addresses *
457\***************************************************************************/ 445\***************************************************************************/
458 446
459#define ARMResetV 0L 447enum {
460#define ARMUndefinedInstrV 4L 448 ARMResetV = 0,
461#define ARMSWIV 8L 449 ARMUndefinedInstrV = 4,
462#define ARMPrefetchAbortV 12L 450 ARMSWIV = 8,
463#define ARMDataAbortV 16L 451 ARMPrefetchAbortV = 12,
464#define ARMAddrExceptnV 20L 452 ARMDataAbortV = 16,
465#define ARMIRQV 24L 453 ARMAddrExceptnV = 20,
466#define ARMFIQV 28L 454 ARMIRQV = 24,
467#define ARMErrorV 32L /* This is an offset, not an address ! */ 455 ARMFIQV = 28,
468 456 ARMErrorV = 32, // This is an offset, not an address!
469#define ARMul_ResetV ARMResetV 457
470#define ARMul_UndefinedInstrV ARMUndefinedInstrV 458 ARMul_ResetV = ARMResetV,
471#define ARMul_SWIV ARMSWIV 459 ARMul_UndefinedInstrV = ARMUndefinedInstrV,
472#define ARMul_PrefetchAbortV ARMPrefetchAbortV 460 ARMul_SWIV = ARMSWIV,
473#define ARMul_DataAbortV ARMDataAbortV 461 ARMul_PrefetchAbortV = ARMPrefetchAbortV,
474#define ARMul_AddrExceptnV ARMAddrExceptnV 462 ARMul_DataAbortV = ARMDataAbortV,
475#define ARMul_IRQV ARMIRQV 463 ARMul_AddrExceptnV = ARMAddrExceptnV,
476#define ARMul_FIQV ARMFIQV 464 ARMul_IRQV = ARMIRQV,
465 ARMul_FIQV = ARMFIQV
466};
477 467
478/***************************************************************************\ 468/***************************************************************************\
479* Mode and Bank Constants * 469* Mode and Bank Constants *
480\***************************************************************************/ 470\***************************************************************************/
481 471
482#define USER26MODE 0L 472enum {
483#define FIQ26MODE 1L 473 USER26MODE = 0,
484#define IRQ26MODE 2L 474 FIQ26MODE = 1,
485#define SVC26MODE 3L 475 IRQ26MODE = 2,
486#define USER32MODE 16L 476 SVC26MODE = 3,
487#define FIQ32MODE 17L 477 USER32MODE = 16,
488#define IRQ32MODE 18L 478 FIQ32MODE = 17,
489#define SVC32MODE 19L 479 IRQ32MODE = 18,
490#define ABORT32MODE 23L 480 SVC32MODE = 19,
491#define UNDEF32MODE 27L 481 ABORT32MODE = 23,
492//chy 2006-02-15 add system32 mode 482 UNDEF32MODE = 27,
493#define SYSTEM32MODE 31L 483 SYSTEM32MODE = 31
484};
494 485
495#define ARM32BITMODE (state->Mode > 3) 486#define ARM32BITMODE (state->Mode > 3)
496#define ARM26BITMODE (state->Mode <= 3) 487#define ARM26BITMODE (state->Mode <= 3)
@@ -499,14 +490,17 @@ typedef ARMul_State arm_core_t;
499#define ARMul_MODE32BIT ARM32BITMODE 490#define ARMul_MODE32BIT ARM32BITMODE
500#define ARMul_MODE26BIT ARM26BITMODE 491#define ARMul_MODE26BIT ARM26BITMODE
501 492
502#define USERBANK 0 493enum {
503#define FIQBANK 1 494 USERBANK = 0,
504#define IRQBANK 2 495 FIQBANK = 1,
505#define SVCBANK 3 496 IRQBANK = 2,
506#define ABORTBANK 4 497 SVCBANK = 3,
507#define UNDEFBANK 5 498 ABORTBANK = 4,
508#define DUMMYBANK 6 499 UNDEFBANK = 5,
509#define SYSTEMBANK USERBANK 500 DUMMYBANK = 6,
501 SYSTEMBANK = USERBANK
502};
503
510#define BANK_CAN_ACCESS_SPSR(bank) \ 504#define BANK_CAN_ACCESS_SPSR(bank) \
511 ((bank) != USERBANK && (bank) != SYSTEMBANK && (bank) != DUMMYBANK) 505 ((bank) != USERBANK && (bank) != SYSTEMBANK && (bank) != DUMMYBANK)
512 506
@@ -613,40 +607,44 @@ extern ARMword ARMul_MemAccess(ARMul_State* state, ARMword, ARMword,
613* Definitons of things in the co-processor interface * 607* Definitons of things in the co-processor interface *
614\***************************************************************************/ 608\***************************************************************************/
615 609
616#define ARMul_FIRST 0 610enum {
617#define ARMul_TRANSFER 1 611 ARMul_FIRST = 0,
618#define ARMul_BUSY 2 612 ARMul_TRANSFER = 1,
619#define ARMul_DATA 3 613 ARMul_BUSY = 2,
620#define ARMul_INTERRUPT 4 614 ARMul_DATA = 3,
621#define ARMul_DONE 0 615 ARMul_INTERRUPT = 4,
622#define ARMul_CANT 1 616 ARMul_DONE = 0,
623#define ARMul_INC 3 617 ARMul_CANT = 1,
624 618 ARMul_INC = 3
625#define ARMul_CP13_R0_FIQ 0x1 619};
626#define ARMul_CP13_R0_IRQ 0x2 620
627#define ARMul_CP13_R8_PMUS 0x1 621enum {
628 622 ARMul_CP13_R0_FIQ = 0x1,
629#define ARMul_CP14_R0_ENABLE 0x0001 623 ARMul_CP13_R0_IRQ = 0x2,
630#define ARMul_CP14_R0_CLKRST 0x0004 624 ARMul_CP13_R8_PMUS = 0x1,
631#define ARMul_CP14_R0_CCD 0x0008 625
632#define ARMul_CP14_R0_INTEN0 0x0010 626 ARMul_CP14_R0_ENABLE = 0x0001,
633#define ARMul_CP14_R0_INTEN1 0x0020 627 ARMul_CP14_R0_CLKRST = 0x0004,
634#define ARMul_CP14_R0_INTEN2 0x0040 628 ARMul_CP14_R0_CCD = 0x0008,
635#define ARMul_CP14_R0_FLAG0 0x0100 629 ARMul_CP14_R0_INTEN0 = 0x0010,
636#define ARMul_CP14_R0_FLAG1 0x0200 630 ARMul_CP14_R0_INTEN1 = 0x0020,
637#define ARMul_CP14_R0_FLAG2 0x0400 631 ARMul_CP14_R0_INTEN2 = 0x0040,
638#define ARMul_CP14_R10_MOE_IB 0x0004 632 ARMul_CP14_R0_FLAG0 = 0x0100,
639#define ARMul_CP14_R10_MOE_DB 0x0008 633 ARMul_CP14_R0_FLAG1 = 0x0200,
640#define ARMul_CP14_R10_MOE_BT 0x000c 634 ARMul_CP14_R0_FLAG2 = 0x0400,
641#define ARMul_CP15_R1_ENDIAN 0x0080 635 ARMul_CP14_R10_MOE_IB = 0x0004,
642#define ARMul_CP15_R1_ALIGN 0x0002 636 ARMul_CP14_R10_MOE_DB = 0x0008,
643#define ARMul_CP15_R5_X 0x0400 637 ARMul_CP14_R10_MOE_BT = 0x000c,
644#define ARMul_CP15_R5_ST_ALIGN 0x0001 638 ARMul_CP15_R1_ENDIAN = 0x0080,
645#define ARMul_CP15_R5_IMPRE 0x0406 639 ARMul_CP15_R1_ALIGN = 0x0002,
646#define ARMul_CP15_R5_MMU_EXCPT 0x0400 640 ARMul_CP15_R5_X = 0x0400,
647#define ARMul_CP15_DBCON_M 0x0100 641 ARMul_CP15_R5_ST_ALIGN = 0x0001,
648#define ARMul_CP15_DBCON_E1 0x000c 642 ARMul_CP15_R5_IMPRE = 0x0406,
649#define ARMul_CP15_DBCON_E0 0x0003 643 ARMul_CP15_R5_MMU_EXCPT = 0x0400,
644 ARMul_CP15_DBCON_M = 0x0100,
645 ARMul_CP15_DBCON_E1 = 0x000c,
646 ARMul_CP15_DBCON_E0 = 0x0003
647};
650 648
651extern unsigned ARMul_CoProInit(ARMul_State* state); 649extern unsigned ARMul_CoProInit(ARMul_State* state);
652extern void ARMul_CoProExit(ARMul_State* state); 650extern void ARMul_CoProExit(ARMul_State* state);
@@ -675,12 +673,9 @@ extern unsigned ARMul_OSHandleSWI(ARMul_State* state, ARMword number);
675} 673}
676#endif 674#endif
677 675
678
679extern ARMword ARMul_OSLastErrorP(ARMul_State* state); 676extern ARMword ARMul_OSLastErrorP(ARMul_State* state);
680
681extern ARMword ARMul_Debug(ARMul_State* state, ARMword pc, ARMword instr); 677extern ARMword ARMul_Debug(ARMul_State* state, ARMword pc, ARMword instr);
682extern unsigned ARMul_OSException(ARMul_State* state, ARMword vector, ARMword pc); 678extern unsigned ARMul_OSException(ARMul_State* state, ARMword vector, ARMword pc);
683extern int rdi_log;
684 679
685enum ConditionCode { 680enum ConditionCode {
686 EQ = 0, 681 EQ = 0,
@@ -729,12 +724,6 @@ enum ConditionCode {
729#define IFFLAGS state->IFFlags 724#define IFFLAGS state->IFFlags
730#endif //VFLAG 725#endif //VFLAG
731 726
732#define FLAG_MASK 0xf0000000
733#define NBIT_SHIFT 31
734#define ZBIT_SHIFT 30
735#define CBIT_SHIFT 29
736#define VBIT_SHIFT 28
737
738#define SKYEYE_OUTREGS(fd) { fprintf ((fd), "R %x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,C %x,S %x,%x,%x,%x,%x,%x,%x,M %x,B %x,E %x,I %x,P %x,T %x,L %x,D %x,",\ 727#define SKYEYE_OUTREGS(fd) { fprintf ((fd), "R %x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,C %x,S %x,%x,%x,%x,%x,%x,%x,M %x,B %x,E %x,I %x,P %x,T %x,L %x,D %x,",\
739 state->Reg[0],state->Reg[1],state->Reg[2],state->Reg[3], \ 728 state->Reg[0],state->Reg[1],state->Reg[2],state->Reg[3], \
740 state->Reg[4],state->Reg[5],state->Reg[6],state->Reg[7], \ 729 state->Reg[4],state->Reg[5],state->Reg[6],state->Reg[7], \
@@ -778,14 +767,6 @@ RUn %x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n",\
778 state->RegBank[5][12],state->RegBank[5][13],state->RegBank[5][14],state->RegBank[5][15] \ 767 state->RegBank[5][12],state->RegBank[5][13],state->RegBank[5][14],state->RegBank[5][15] \
779 );} 768 );}
780 769
781
782#define SA1110 0x6901b110
783#define SA1100 0x4401a100
784#define PXA250 0x69052100
785#define PXA270 0x69054110
786//#define PXA250 0x69052903
787// 0x69052903; //PXA250 B1 from intel 278522-001.pdf
788
789extern bool AddOverflow(ARMword, ARMword, ARMword); 770extern bool AddOverflow(ARMword, ARMword, ARMword);
790extern bool SubOverflow(ARMword, ARMword, ARMword); 771extern bool SubOverflow(ARMword, ARMword, ARMword);
791 772