summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mpc8260ads/startup/cpuinit.c
blob: c56ec693624d37223ea7cf27e1c75dea2d6cdebb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
 *  cpuinit.c - this file contains functions for initializing the CPU
 *
 *  Written by Jay Monkman (jmonkman@frasca.com)
 */

#include <bsp.h>

/* Macros for handling all the MMU SPRs */
#define PUT_IC_CST(r)   __asm__ volatile ("mtspr 0x230,%0\n" ::"r"(r))
#define GET_IC_CST(r)   __asm__ volatile ("mfspr %0,0x230\n" :"=r"(r))
#define PUT_DC_CST(r)   __asm__ volatile ("mtspr 0x238,%0\n" ::"r"(r))
#define GET_DC_CST(r)   __asm__ volatile ("mfspr %0,0x238\n" :"=r"(r))

void cpu_init(void)
{
  /* BRGCLK is VCO_OUT/4 */
/*
  m8260.sccr = 0;
*/

#if 0
  register unsigned long t1, t2;

  /* Let's clear MSR[IR] and MSR[DR] */
  t2 = PPC_MSR_IR | PPC_MSR_DR;
  __asm__ volatile (
    "mfmsr    %0\n"
    "andc     %0, %0, %1\n"
    "mtmsr    %0\n" :"=r"(t1), "=r"(t2):
    "1"(t2));

  t1 = M8xx_CACHE_CMD_UNLOCK;
  /*  PUT_DC_CST(t1); */
  PUT_IC_CST(t1);

  t1 = M8xx_CACHE_CMD_INVALIDATE;
  /*  PUT_DC_CST(t1); */
  PUT_IC_CST(t1);

  t1 = M8xx_CACHE_CMD_ENABLE;
  PUT_IC_CST(t1);

  t1 = M8xx_CACHE_CMD_SFWT;
  /*  PUT_DC_CST(t1); */
  t1 = M8xx_CACHE_CMD_ENABLE;
  /*  PUT_DC_CST(t1);*/
#endif
}