[PATCH] powerpc: merge code values for identifying platforms
This patch merges platform codes. systemcfg->platform is no longer used, systemcfg use in general is deprecated as much as possible (and renamed _systemcfg before it gets completely moved elsewhere in a future patch), _machine is now used on ppc64 along as ppc32. Platform codes aren't gone yet but we are getting a step closer. A bunch of asm code in head[_64].S is also turned into C code. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
@@ -84,10 +84,11 @@
|
||||
extern unsigned long dart_tablebase;
|
||||
#endif /* CONFIG_U3_DART */
|
||||
|
||||
static unsigned long _SDR1;
|
||||
struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT];
|
||||
|
||||
hpte_t *htab_address;
|
||||
unsigned long htab_hash_mask;
|
||||
unsigned long _SDR1;
|
||||
struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT];
|
||||
int mmu_linear_psize = MMU_PAGE_4K;
|
||||
int mmu_virtual_psize = MMU_PAGE_4K;
|
||||
#ifdef CONFIG_HUGETLB_PAGE
|
||||
@@ -165,7 +166,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
|
||||
* normal insert callback here.
|
||||
*/
|
||||
#ifdef CONFIG_PPC_ISERIES
|
||||
if (systemcfg->platform == PLATFORM_ISERIES_LPAR)
|
||||
if (_machine == PLATFORM_ISERIES_LPAR)
|
||||
ret = iSeries_hpte_insert(hpteg, va,
|
||||
virt_to_abs(paddr),
|
||||
tmp_mode,
|
||||
@@ -174,7 +175,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
|
||||
else
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
if (systemcfg->platform & PLATFORM_LPAR)
|
||||
if (_machine & PLATFORM_LPAR)
|
||||
ret = pSeries_lpar_hpte_insert(hpteg, va,
|
||||
virt_to_abs(paddr),
|
||||
tmp_mode,
|
||||
@@ -293,7 +294,7 @@ static void __init htab_init_page_sizes(void)
|
||||
* Not in the device-tree, let's fallback on known size
|
||||
* list for 16M capable GP & GR
|
||||
*/
|
||||
if ((systemcfg->platform != PLATFORM_ISERIES_LPAR) &&
|
||||
if ((_machine != PLATFORM_ISERIES_LPAR) &&
|
||||
cpu_has_feature(CPU_FTR_16M_PAGE))
|
||||
memcpy(mmu_psize_defs, mmu_psize_defaults_gp,
|
||||
sizeof(mmu_psize_defaults_gp));
|
||||
@@ -364,7 +365,7 @@ static int __init htab_dt_scan_pftsize(unsigned long node,
|
||||
|
||||
static unsigned long __init htab_get_table_size(void)
|
||||
{
|
||||
unsigned long rnd_mem_size, pteg_count;
|
||||
unsigned long mem_size, rnd_mem_size, pteg_count;
|
||||
|
||||
/* If hash size isn't already provided by the platform, we try to
|
||||
* retreive it from the device-tree. If it's not there neither, we
|
||||
@@ -376,8 +377,9 @@ static unsigned long __init htab_get_table_size(void)
|
||||
return 1UL << ppc64_pft_size;
|
||||
|
||||
/* round mem_size up to next power of 2 */
|
||||
rnd_mem_size = 1UL << __ilog2(systemcfg->physicalMemorySize);
|
||||
if (rnd_mem_size < systemcfg->physicalMemorySize)
|
||||
mem_size = lmb_phys_mem_size();
|
||||
rnd_mem_size = 1UL << __ilog2(mem_size);
|
||||
if (rnd_mem_size < mem_size)
|
||||
rnd_mem_size <<= 1;
|
||||
|
||||
/* # pages / 2 */
|
||||
@@ -419,7 +421,7 @@ void __init htab_initialize(void)
|
||||
|
||||
htab_hash_mask = pteg_count - 1;
|
||||
|
||||
if (systemcfg->platform & PLATFORM_LPAR) {
|
||||
if (platform_is_lpar()) {
|
||||
/* Using a hypervisor which owns the htab */
|
||||
htab_address = NULL;
|
||||
_SDR1 = 0;
|
||||
@@ -440,6 +442,9 @@ void __init htab_initialize(void)
|
||||
|
||||
/* Initialize the HPT with no entries */
|
||||
memset((void *)table, 0, htab_size_bytes);
|
||||
|
||||
/* Set SDR1 */
|
||||
mtspr(SPRN_SDR1, _SDR1);
|
||||
}
|
||||
|
||||
mode_rw = _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_COHERENT | PP_RWXX;
|
||||
@@ -509,6 +514,12 @@ void __init htab_initialize(void)
|
||||
#undef KB
|
||||
#undef MB
|
||||
|
||||
void __init htab_initialize_secondary(void)
|
||||
{
|
||||
if (!platform_is_lpar())
|
||||
mtspr(SPRN_SDR1, _SDR1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Called by asm hashtable.S for doing lazy icache flush
|
||||
*/
|
||||
|
Reference in New Issue
Block a user