config SYS_HAS_CPU_LOONGSON2F
        bool
+       select CPU_SUPPORTS_CPUFREQ
+       select CPU_SUPPORTS_ADDRWINCFG if 64BIT
 
 config SYS_HAS_CPU_MIPS32_R1
        bool
        bool
 config CPU_SUPPORTS_64BIT_KERNEL
        bool
+config CPU_SUPPORTS_CPUFREQ
+       bool
+config CPU_SUPPORTS_ADDRWINCFG
+       bool
 config CPU_SUPPORTS_HUGEPAGES
        bool
 config MIPS_PGD_C0_CONTEXT
 
        ((((ADDR)>>26) & LOONGSON_PCIMAP_PCIMAP_LO0) << ((WIN)*6))
 
 /* Chip Config */
-#ifdef CONFIG_CPU_LOONGSON2F
+#ifdef CONFIG_CPU_SUPPORTS_CPUFREQ
 #define LOONGSON_CHIPCFG0              LOONGSON_REG(LOONGSON_REGBASE + 0x80)
 #endif
 
  *
  * loongson2e do not have this module
  */
-#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
+#ifdef CONFIG_CPU_SUPPORTS_ADDRWINCFG
 
 /* address window config module base address */
 #define LOONGSON_ADDRWINCFG_BASE               0x3ff00000ul
 #define LOONGSON_ADDRWIN_PCITODDR(win, src, dst, size) \
        LOONGSON_ADDRWIN_CFG(PCIDMA, DDR, win, src, dst, size)
 
-#endif /* ! CONFIG_CPU_LOONGSON2F && CONFIG_64BIT */
+#endif /* ! CONFIG_CPU_SUPPORTS_ADDRWINCFG */
 
 #endif /* __ASM_MACH_LOONGSON_LOONGSON_H */
 
 /* this is an offset from mips_io_port_base */
 #define LOONGSON_PCI_IO_START  0x00004000UL
 
-#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
+#ifdef CONFIG_CPU_SUPPORTS_ADDRWINCFG
 
 /*
  * we use address window2 to map cpu address space to pci space
 /* this is an offset from mips_io_port_base */
 #define LOONGSON_PCI_IO_START  0x00004000UL
 
-#endif /* !(defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT))*/
+#endif /* !CONFIG_CPU_SUPPORTS_ADDRWINCFG */
 
 #endif /* !__ASM_MACH_LOONGSON_PCI_H_ */
 
        set_io_port_base((unsigned long)
                ioremap(LOONGSON_PCIIO_BASE, LOONGSON_PCIIO_SIZE));
 
-#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
+#ifdef CONFIG_CPU_SUPPORTS_ADDRWINCFG
        _loongson_addrwincfg_base = (unsigned long)
                ioremap(LOONGSON_ADDRWINCFG_BASE, LOONGSON_ADDRWINCFG_SIZE);
 #endif
 
 
     add_memory_region(memsize << 20, LOONGSON_PCI_MEM_START - (memsize <<
                            20), BOOT_MEM_RESERVED);
-#ifdef CONFIG_64BIT
-#ifdef CONFIG_CPU_LOONGSON2F
+#ifdef CONFIG_CPU_SUPPORTS_ADDRWINCFG
        {
                int bit;
 
                                          0x80000000ul, (1 << bit));
                mmiowb();
        }
-#endif                         /* CONFIG_CPU_LOONGSON2F */
+#endif /* !CONFIG_CPU_SUPPORTS_ADDRWINCFG */
 
+#ifdef CONFIG_64BIT
        if (highmemsize > 0)
                add_memory_region(LOONGSON_HIGHMEM_START,
                                  highmemsize << 20, BOOT_MEM_RAM);
        add_memory_region(LOONGSON_PCI_MEM_END + 1, LOONGSON_HIGHMEM_START -
                          LOONGSON_PCI_MEM_END - 1, BOOT_MEM_RESERVED);
 
-#endif                         /* CONFIG_64BIT */
+#endif /* !CONFIG_64BIT */
 }
 
 /* override of arch/mips/mm/cache.c: __uncached_access */
 
        deassert for some broken device */
        LOONGSON_PXARB_CFG = 0x00fe0105ul;
 
-#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
+#ifdef CONFIG_CPU_SUPPORTS_ADDRWINCFG
        /*
         * set cpu addr window2 to map CPU address space to PCI address space
         */