From 9c448e1db38c6dd64c885ddfb3fe28de33cd037b Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 19 Feb 1999 00:22:33 +0000 Subject: BSP for Vista Score603e added. --- .../libbsp/powerpc/score603e/startup/Hwr_init.c | 213 +++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 c/src/lib/libbsp/powerpc/score603e/startup/Hwr_init.c (limited to 'c/src/lib/libbsp/powerpc/score603e/startup/Hwr_init.c') diff --git a/c/src/lib/libbsp/powerpc/score603e/startup/Hwr_init.c b/c/src/lib/libbsp/powerpc/score603e/startup/Hwr_init.c new file mode 100644 index 0000000000..6281a31136 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/score603e/startup/Hwr_init.c @@ -0,0 +1,213 @@ +/* Hwr_init.c + * + * $Id: + */ + +#include + +#define PPC603e_SPR_HID0 1008 +#define PPC603e_SPR_HID1 1009 +#define PPC603e_SPR_IBAT0U 528 +#define PPC603e_SPR_IBAT0L 529 +#define PPC603e_SPR_DBAT0U 536 +#define PPC603e_SPR_DBAT0L 537 +#define PPC603e_SPR_IBAT1U 530 +#define PPC603e_SPR_IBAT1L 531 +#define PPC603e_SPR_DBAT1U 538 +#define PPC603e_SPR_DBAT1L 539 +#define PPC603e_SPR_IBAT2U 532 +#define PPC603e_SPR_IBAT2L 533 +#define PPC603e_SPR_DBAT2U 540 +#define PPC603e_SPR_DBAT2L 541 +#define PPC603e_SPR_IBAT3U 534 +#define PPC603e_SPR_IBAT3L 535 +#define PPC603e_SPR_DBAT3U 542 +#define PPC603e_SPR_DBAT3L 543 +#define PPC603e_SPR_DMISS 976 +#define PPC603e_SPR_DCMP 977 +#define PPC603e_SPR_HASH1 978 +#define PPC603e_SPR_HASH2 979 +#define PPC603e_SPR_IMISS 980 +#define PPC603e_SPR_ICMP 981 +#define PPC603e_SPR_RPA 982 +#define PPC603e_SPR_SDR1 25 +#define PPC603e_SPR_PVR 287 +#define PPC603e_SPR_DAR 19 +#define PPC603e_SPR_SPRG0 272 +#define PPC603e_SPR_SPRG1 273 +#define PPC603e_SPR_SPRG2 274 +#define PPC603e_SPR_SPRG3 275 +#define PPC603e_SPR_DSISR 18 +#define PPC603e_SPR_SRR0 26 +#define PPC603e_SPR_SRR1 27 +#define PPC603e_SPR_TBL_WRITE 284 +#define PPC603e_SPR_TBU_WRITE 285 +#define PPC603e_SPR_DEC 22 +#define PPC603e_SPR_IABR 1010 +#define PPC603e_SPR_EAR 282 + + + +#define PCI_MEM_CMD (SCORE603E_PCI_MEM_BASE >> 16) + + +typedef struct { + rtems_unsigned32 counter_1_100; + rtems_unsigned32 counter_hours; + rtems_unsigned32 counter_min; + rtems_unsigned32 counter_sec; + rtems_unsigned32 counter_month; + rtems_unsigned32 counter_date; + rtems_unsigned32 counter_year; + rtems_unsigned32 counter_day_of_week; + + rtems_unsigned32 RAM_1_100; + rtems_unsigned32 RAM_hours; + rtems_unsigned32 RAM_month; + rtems_unsigned32 RAM_date; + rtems_unsigned32 RAM_year; + rtems_unsigned32 RAM_day_of_week; + + rtems_unsigned32 interupt_status_mask; + rtems_unsigned32 command_register; +}Harris_RTC; + +void init_RTC() +{ + volatile Harris_RTC *the_RTC; + + the_RTC = (volatile Harris_RTC *)SCORE603E_RTC_ADDRESS; + + the_RTC->command_register = 0x0; +} + +void init_PCI() +{ + rtems_unsigned32 value; + +#if (SCORE603E_USE_SDS) | (SCORE603E_USE_OPEN_FIRMWARE) | (SCORE603E_USE_NONE) + /* + * NOTE: Accessing any memory location not mapped by the BAT + * registers will cause a TLB miss exception. + * Set the DBAT1 to be configured for 256M of PCI MEM + * at 0xC0000000 with Write-through and Guarded Attributed and + * read/write access allowed + */ + + /* load DBAT1U (spr538) - 256Mbytes, User, Super */ + value = SCORE603E_PCI_MEM_BASE | 0x1FFF; + asm volatile( + "isync;" + "mtspr 538, %0" + : "=r" (value) + : "0" (value) + ); + + /* load DBAT1L (spr539) - Write-through, Guarded and Read/Write */ + value = SCORE603E_PCI_MEM_BASE | 0x0002; + asm volatile ( + "mtspr 539, %0;" + "isync" + : "=r" (value) + : "0" (value) + ); + +#elif (SCORE603E_USE_DINK) + /* DINK Monitor setsup and uses all 4 BAT registers. */ + /* The fourth BAT register can be modified to access this area */ + +#if (0) + /* + * NOTE: Accessing any memory location not mapped by the BAT + * registers will cause a TLB miss exception. + * Set the DBAT3 to be configured for 256M of PCI MEM + * at 0xC0000000 with Write-through and Guarded Attributed and + * read/write access allowed + */ + + /* load DBAT3U (spr542) - 256Mbytes, User, Super */ + value = SCORE603E_PCI_MEM_BASE | 0x1FFF; + asm volatile( + "isync;" + "mtspr 542, %0" + : "=r" (value) + : "0" (value) + ); + + /* load DBAT3L (spr543) - Write-through, Guarded and Read/Write */ + value = SCORE603E_PCI_MEM_BASE | 0x0002; + asm volatile ( + "mtspr 543, %0;" + "isync" + : "=r" (value) + : "0" (value) + ); +#endif + +#else +#error "SCORE603E BSPSTART.C -- what ROM monitor are you using" +#endif +} + +#define PPC_Get_HID0( _value ) \ + do { \ + _value = 0; /* to avoid warnings */ \ + asm volatile( \ + "mfspr %0, 0x3f0;" /* get HID0 */ \ + "isync" \ + : "=r" (_value) \ + : "0" (_value) \ + ); \ + } while (0) + +#define PPC_Set_HID0( _value ) \ + do { \ + asm volatile( \ + "isync;" \ + "mtspr 0x3f0, %0;" /* load HID0 */ \ + "isync" \ + : "=r" (_value) \ + : "0" (_value) \ + ); \ + } while (0) + + +void instruction_cache_enable () +{ + rtems_unsigned32 value; + + /* + * Enable the instruction cache + */ + + PPC_Get_HID0( value ); + + value |= 0x00008000; /* Set ICE bit */ + + PPC_Set_HID0( value ); +} + +void data_cache_enable () +{ + rtems_unsigned32 value; + + /* + * enable data cache + */ + + PPC_Get_HID0( value ); + + value |= 0x00004000; /* set DCE bit */ + + PPC_Set_HID0( value ); +} + + + + + + + + + + -- cgit v1.2.3