| /* |
| * init.S |
| * ------ |
| * |
| * Wind River PPMC 7xx/74xx init code. |
| * |
| * By Richard Danter (richard.danter@windriver.com) |
| * Copyright (C) 2005 Wind River Systems |
| * |
| * NOTE: The following code was generated automatically by Workbench |
| * from the ppmc7400_107.reg register file. |
| */ |
| |
| #include <ppc_asm.tmpl> |
| |
| |
| .globl board_asm_init |
| board_asm_init: |
| |
| lis r4,0xFEC0 |
| ori r4,r4,0x0000 |
| lis r5,0xFEE0 |
| ori r5,r5,0x0000 |
| lis r3,0x8000 # ADDR_00 |
| ori r3,r3,0x0000 |
| stwbrx r3,0,r4 |
| li r3,0x1057 # VENDOR |
| li r8, 0x0 |
| sthbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_02 |
| ori r3,r3,0x0002 |
| stwbrx r3,0,r4 |
| li r3,0x0004 # ID |
| li r8, 0x2 |
| sthbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_04 |
| ori r3,r3,0x0004 |
| stwbrx r3,0,r4 |
| li r3,0x0006 # PCICMD |
| li r8, 0x0 |
| sthbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_06 |
| ori r3,r3,0x0006 |
| stwbrx r3,0,r4 |
| li r3,0x00A0 # PCISTAT |
| li r8, 0x2 |
| sthbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_08 |
| ori r3,r3,0x0008 |
| stwbrx r3,0,r4 |
| li r3,0x10 # REVID |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_09 |
| ori r3,r3,0x0009 |
| stwbrx r3,0,r4 |
| li r3,0x00 # PROGIR |
| stb r3,0x1(r5) |
| lis r3,0x8000 # ADDR_0A |
| ori r3,r3,0x000A |
| stwbrx r3,0,r4 |
| li r3,0x00 # SUBCCODE |
| stb r3,0x2(r5) |
| lis r3,0x8000 # ADDR_0B |
| ori r3,r3,0x000B |
| stwbrx r3,0,r4 |
| li r3,0x06 # PBCCR |
| stb r3,0x3(r5) |
| lis r3,0x8000 # ADDR_0C |
| ori r3,r3,0x000C |
| stwbrx r3,0,r4 |
| li r3,0x08 # PCLSR |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_0D |
| ori r3,r3,0x000D |
| stwbrx r3,0,r4 |
| li r3,0x00 # PLTR |
| stb r3,0x1(r5) |
| lis r3,0x8000 # ADDR_0E |
| ori r3,r3,0x000E |
| stwbrx r3,0,r4 |
| li r3,0x00 # HEADTYPE |
| stb r3,0x2(r5) |
| lis r3,0x8000 # ADDR_0F |
| ori r3,r3,0x000F |
| stwbrx r3,0,r4 |
| li r3,0x00 # BISTCTRL |
| stb r3,0x3(r5) |
| lis r3,0x8000 # ADDR_10 |
| ori r3,r3,0x0010 |
| stwbrx r3,0,r4 |
| lis r3,0x0000 # LMBAR |
| ori r3,r3,0x0008 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_14 |
| ori r3,r3,0x0014 |
| stwbrx r3,0,r4 |
| lis r3,0xF000 # PCSRBAR |
| ori r3,r3,0x0000 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_3C |
| ori r3,r3,0x003C |
| stwbrx r3,0,r4 |
| li r3,0x00 # ILR |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_3D |
| ori r3,r3,0x003D |
| stwbrx r3,0,r4 |
| li r3,0x01 # INTPIN |
| stb r3,0x1(r5) |
| lis r3,0x8000 # ADDR_3E |
| ori r3,r3,0x003E |
| stwbrx r3,0,r4 |
| li r3,0x00 # MIN_GNT |
| stb r3,0x2(r5) |
| lis r3,0x8000 # ADDR_3F |
| ori r3,r3,0x003F |
| stwbrx r3,0,r4 |
| li r3,0x00 # MAX_LAT |
| stb r3,0x3(r5) |
| lis r3,0x8000 # ADDR_40 |
| ori r3,r3,0x0040 |
| stwbrx r3,0,r4 |
| li r3,0x00 # BUSNB |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_41 |
| ori r3,r3,0x0041 |
| stwbrx r3,0,r4 |
| li r3,0x00 # SBUSNB |
| stb r3,0x1(r5) |
| lis r3,0x8000 # ADDR_46 |
| ori r3,r3,0x0046 |
| stwbrx r3,0,r4 |
| # li r3,0xE080 # PCIARB |
| li r3,-0x1F80 # PCIARB |
| li r8, 0x2 |
| sthbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_70 |
| ori r3,r3,0x0070 |
| stwbrx r3,0,r4 |
| li r3,0x0000 # PMCR1 |
| li r8, 0x0 |
| sthbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_72 |
| ori r3,r3,0x0072 |
| stwbrx r3,0,r4 |
| li r3,0xC0 # PMCR2 |
| stb r3,0x2(r5) |
| lis r3,0x8000 # ADDR_73 |
| ori r3,r3,0x0073 |
| stwbrx r3,0,r4 |
| li r3,0xEF # ODCR |
| stb r3,0x3(r5) |
| lis r3,0x8000 # ADDR_74 |
| ori r3,r3,0x0074 |
| stwbrx r3,0,r4 |
| li r3,0x7D00 # CLKDCR |
| li r8, 0x0 |
| sthbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_76 |
| ori r3,r3,0x0076 |
| stwbrx r3,0,r4 |
| li r3,0x00 # MDCR |
| stb r3,0x2(r5) |
| lis r6,0xFCE0 |
| ori r6,r6,0x0000 # r6 is the EUMBAR Base Address |
| lis r3,0x8000 # ADDR_78 |
| ori r3,r3,0x0078 |
| stwbrx r3,0,r4 |
| lis r3,0xFCE0 # EUMBBAR |
| ori r3,r3,0x0000 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_80 |
| ori r3,r3,0x0080 |
| stwbrx r3,0,r4 |
| lis r3,0xFFFF # MSADDR1 |
| ori r3,r3,0x4000 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_84 |
| ori r3,r3,0x0084 |
| stwbrx r3,0,r4 |
| lis r3,0xFFFF # MSADDR2 |
| ori r3,r3,0xFFFF |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_88 |
| ori r3,r3,0x0088 |
| stwbrx r3,0,r4 |
| lis r3,0x0303 # EMSADDR1 |
| ori r3,r3,0x0000 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_8C |
| ori r3,r3,0x008C |
| stwbrx r3,0,r4 |
| lis r3,0x0303 # EMSADDR2 |
| ori r3,r3,0x0303 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_90 |
| ori r3,r3,0x0090 |
| stwbrx r3,0,r4 |
| lis r3,0xFFFF # EMEADDR1 |
| ori r3,r3,0x7F3F |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_94 |
| ori r3,r3,0x0094 |
| stwbrx r3,0,r4 |
| lis r3,0xFFFF # EMEADDR2 |
| ori r3,r3,0xFFFF |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_98 |
| ori r3,r3,0x0098 |
| stwbrx r3,0,r4 |
| lis r3,0x0303 # EXTEMEM1 |
| ori r3,r3,0x0000 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_9C |
| ori r3,r3,0x009C |
| stwbrx r3,0,r4 |
| lis r3,0x0303 # EXTEMEM2 |
| ori r3,r3,0x0303 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_A0 |
| ori r3,r3,0x00A0 |
| stwbrx r3,0,r4 |
| li r3,0x03 # MEMBNKEN |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_A3 |
| ori r3,r3,0x00A3 |
| stwbrx r3,0,r4 |
| li r3,0x00 # MEMPMODE |
| stb r3,0x3(r5) |
| lis r3,0x8000 # ADDR_B8 |
| ori r3,r3,0x00B8 |
| stwbrx r3,0,r4 |
| li r3,0x00 # ECCCNT |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_B9 |
| ori r3,r3,0x00B9 |
| stwbrx r3,0,r4 |
| li r3,0x00 # ECCTRG |
| stb r3,0x1(r5) |
| lis r3,0x8000 # ADDR_C0 |
| ori r3,r3,0x00C0 |
| stwbrx r3,0,r4 |
| li r3,0xFF # ERRENR1 |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_C1 |
| ori r3,r3,0x00C1 |
| stwbrx r3,0,r4 |
| li r3,0x00 # ERRDR1 |
| stb r3,0x1(r5) |
| lis r3,0x8000 # ADDR_C3 |
| ori r3,r3,0x00C3 |
| stwbrx r3,0,r4 |
| li r3,0x50 # IPBESR |
| stb r3,0x3(r5) |
| lis r3,0x8000 # ADDR_C4 |
| ori r3,r3,0x00C4 |
| stwbrx r3,0,r4 |
| li r3,0xBF # ERRENR2 |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_C5 |
| ori r3,r3,0x00C5 |
| stwbrx r3,0,r4 |
| li r3,0x00 # ERRDR2 |
| stb r3,0x1(r5) |
| lis r3,0x8000 # ADDR_C7 |
| ori r3,r3,0x00C7 |
| stwbrx r3,0,r4 |
| li r3,0x00 # PCIBESR |
| stb r3,0x3(r5) |
| lis r3,0x8000 # ADDR_C8 |
| ori r3,r3,0x00C8 |
| stwbrx r3,0,r4 |
| lis r3,0x0000 # BERRADDR |
| ori r3,r3,0xE0FE |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_E0 |
| ori r3,r3,0x00E0 |
| stwbrx r3,0,r4 |
| li r3,0xC0 # AMBOR |
| stb r3,0x0(r5) |
| lis r3,0x8000 # ADDR_F4 |
| ori r3,r3,0x00F4 |
| stwbrx r3,0,r4 |
| lis r3,0x0000 # MCCR2 |
| ori r3,r3,0x020C |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_F8 |
| ori r3,r3,0x00F8 |
| stwbrx r3,0,r4 |
| lis r3,0x0230 # MCCR3 |
| ori r3,r3,0x0000 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_FC |
| ori r3,r3,0x00FC |
| stwbrx r3,0,r4 |
| lis r3,0x2532 # MCCR4 |
| ori r3,r3,0x2220 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_F0 |
| ori r3,r3,0x00F0 |
| stwbrx r3,0,r4 |
| lis r3,0xFFC8 # MCCR1 |
| ori r3,r3,0x0000 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_A8 |
| ori r3,r3,0x00A8 |
| stwbrx r3,0,r4 |
| lis r3,0xFF14 # PICR1 |
| ori r3,r3,0x1CC8 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| lis r3,0x8000 # ADDR_AC |
| ori r3,r3,0x00AC |
| stwbrx r3,0,r4 |
| lis r3,0x0000 # PICR2 |
| ori r3,r3,0x0000 |
| li r8, 0x0 |
| stwbrx r3,r8,r5 |
| |
| blr |