root/arch/mips/include/asm/mach-loongson64/kernel-entry-init.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * This file is subject to the terms and conditions of the GNU General Public
   3  * License.  See the file "COPYING" in the main directory of this archive
   4  * for more details.
   5  *
   6  * Copyright (C) 2005 Embedded Alley Solutions, Inc
   7  * Copyright (C) 2005 Ralf Baechle (ralf@linux-mips.org)
   8  * Copyright (C) 2009 Jiajie Chen (chenjiajie@cse.buaa.edu.cn)
   9  * Copyright (C) 2012 Huacai Chen (chenhc@lemote.com)
  10  */
  11 #ifndef __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
  12 #define __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
  13 
  14 #include <asm/cpu.h>
  15 
  16 /*
  17  * Override macros used in arch/mips/kernel/head.S.
  18  */
  19         .macro  kernel_entry_setup
  20 #ifdef CONFIG_CPU_LOONGSON3
  21         .set    push
  22         .set    mips64
  23         /* Set LPA on LOONGSON3 config3 */
  24         mfc0    t0, CP0_CONFIG3
  25         or      t0, (0x1 << 7)
  26         mtc0    t0, CP0_CONFIG3
  27         /* Set ELPA on LOONGSON3 pagegrain */
  28         mfc0    t0, CP0_PAGEGRAIN
  29         or      t0, (0x1 << 29)
  30         mtc0    t0, CP0_PAGEGRAIN
  31         /* Enable STFill Buffer */
  32         mfc0    t0, CP0_PRID
  33         andi    t0, (PRID_IMP_MASK | PRID_REV_MASK)
  34         slti    t0, (PRID_IMP_LOONGSON_64 | PRID_REV_LOONGSON3A_R2_0)
  35         bnez    t0, 1f
  36         mfc0    t0, CP0_CONFIG6
  37         or      t0, 0x100
  38         mtc0    t0, CP0_CONFIG6
  39 1:
  40         _ehb
  41         .set    pop
  42 #endif
  43         .endm
  44 
  45 /*
  46  * Do SMP slave processor setup.
  47  */
  48         .macro  smp_slave_setup
  49 #ifdef CONFIG_CPU_LOONGSON3
  50         .set    push
  51         .set    mips64
  52         /* Set LPA on LOONGSON3 config3 */
  53         mfc0    t0, CP0_CONFIG3
  54         or      t0, (0x1 << 7)
  55         mtc0    t0, CP0_CONFIG3
  56         /* Set ELPA on LOONGSON3 pagegrain */
  57         mfc0    t0, CP0_PAGEGRAIN
  58         or      t0, (0x1 << 29)
  59         mtc0    t0, CP0_PAGEGRAIN
  60         /* Enable STFill Buffer */
  61         mfc0    t0, CP0_PRID
  62         andi    t0, (PRID_IMP_MASK | PRID_REV_MASK)
  63         slti    t0, (PRID_IMP_LOONGSON_64 | PRID_REV_LOONGSON3A_R2_0)
  64         bnez    t0, 1f
  65         mfc0    t0, CP0_CONFIG6
  66         or      t0, 0x100
  67         mtc0    t0, CP0_CONFIG6
  68 1:
  69         _ehb
  70         .set    pop
  71 #endif
  72         .endm
  73 
  74 #endif /* __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H */

/* [<][>][^][v][top][bottom][index][help] */