cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

setup_no.c (6230B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 *  linux/arch/m68knommu/kernel/setup.c
      4 *
      5 *  Copyright (C) 1999-2007  Greg Ungerer (gerg@snapgear.com)
      6 *  Copyright (C) 1998,1999  D. Jeff Dionne <jeff@uClinux.org>
      7 *  Copyleft  ()) 2000       James D. Schettine {james@telos-systems.com}
      8 *  Copyright (C) 1998       Kenneth Albanowski <kjahds@kjahds.com>
      9 *  Copyright (C) 1995       Hamish Macdonald
     10 *  Copyright (C) 2000       Lineo Inc. (www.lineo.com)
     11 *  Copyright (C) 2001 	     Lineo, Inc. <www.lineo.com>
     12 *
     13 *  68VZ328 Fixes/support    Evan Stawnyczy <e@lineo.ca>
     14 */
     15
     16/*
     17 * This file handles the architecture-dependent parts of system setup
     18 */
     19
     20#include <linux/kernel.h>
     21#include <linux/sched.h>
     22#include <linux/delay.h>
     23#include <linux/interrupt.h>
     24#include <linux/fb.h>
     25#include <linux/module.h>
     26#include <linux/mm.h>
     27#include <linux/console.h>
     28#include <linux/errno.h>
     29#include <linux/string.h>
     30#include <linux/memblock.h>
     31#include <linux/seq_file.h>
     32#include <linux/init.h>
     33#include <linux/initrd.h>
     34#include <linux/root_dev.h>
     35#include <linux/rtc.h>
     36
     37#include <asm/setup.h>
     38#include <asm/bootinfo.h>
     39#include <asm/irq.h>
     40#include <asm/machdep.h>
     41#include <asm/sections.h>
     42
     43unsigned long memory_start;
     44unsigned long memory_end;
     45
     46EXPORT_SYMBOL(memory_start);
     47EXPORT_SYMBOL(memory_end);
     48
     49char __initdata command_line[COMMAND_LINE_SIZE];
     50
     51/* machine dependent timer functions */
     52void (*mach_sched_init)(void) __initdata = NULL;
     53
     54/* machine dependent reboot functions */
     55void (*mach_reset)(void);
     56void (*mach_halt)(void);
     57
     58#ifdef CONFIG_M68000
     59#if defined(CONFIG_M68328)
     60#define CPU_NAME	"MC68328"
     61#elif defined(CONFIG_M68EZ328)
     62#define CPU_NAME	"MC68EZ328"
     63#elif defined(CONFIG_M68VZ328)
     64#define CPU_NAME	"MC68VZ328"
     65#else
     66#define CPU_NAME	"MC68000"
     67#endif
     68#endif /* CONFIG_M68000 */
     69#ifndef CPU_NAME
     70#define	CPU_NAME	"UNKNOWN"
     71#endif
     72
     73/*
     74 * Different cores have different instruction execution timings.
     75 * The old/traditional 68000 cores are basically all the same, at 16.
     76 * The ColdFire cores vary a little, their values are defined in their
     77 * headers. We default to the standard 68000 value here.
     78 */
     79#ifndef CPU_INSTR_PER_JIFFY
     80#define	CPU_INSTR_PER_JIFFY	16
     81#endif
     82
     83void __init setup_arch(char **cmdline_p)
     84{
     85	memory_start = PAGE_ALIGN(_ramstart);
     86	memory_end = _ramend;
     87
     88	setup_initial_init_mm(_stext, _etext, _edata, NULL);
     89
     90	config_BSP(&command_line[0], sizeof(command_line));
     91
     92#if defined(CONFIG_BOOTPARAM)
     93	strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line));
     94	command_line[sizeof(command_line) - 1] = 0;
     95#endif /* CONFIG_BOOTPARAM */
     96
     97	process_uboot_commandline(&command_line[0], sizeof(command_line));
     98
     99	pr_info("uClinux with CPU " CPU_NAME "\n");
    100
    101#ifdef CONFIG_UCDIMM
    102	pr_info("uCdimm by Lineo, Inc. <www.lineo.com>\n");
    103#endif
    104#ifdef CONFIG_M68328
    105	pr_info("68328 support D. Jeff Dionne <jeff@uclinux.org>\n");
    106	pr_info("68328 support Kenneth Albanowski <kjahds@kjshds.com>\n");
    107#endif
    108#ifdef CONFIG_M68EZ328
    109	pr_info("68EZ328 DragonBallEZ support (C) 1999 Rt-Control, Inc\n");
    110#endif
    111#ifdef CONFIG_M68VZ328
    112	pr_info("M68VZ328 support by Evan Stawnyczy <e@lineo.ca>\n");
    113	pr_info("68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n");
    114#endif
    115#ifdef CONFIG_COLDFIRE
    116	pr_info("COLDFIRE port done by Greg Ungerer, gerg@snapgear.com\n");
    117#ifdef CONFIG_M5307
    118	pr_info("Modified for M5307 by Dave Miller, dmiller@intellistor.com\n");
    119#endif
    120#ifdef CONFIG_ELITE
    121	pr_info("Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n");
    122#endif
    123#endif
    124	pr_info("Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n");
    125
    126#if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 )
    127	pr_info("68328/Pilot support Bernhard Kuhn <kuhn@lpr.e-technik.tu-muenchen.de>\n");
    128	pr_info("TRG SuperPilot FLASH card support <info@trgnet.com>\n");
    129#endif
    130#if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 )
    131	pr_info("PalmV support by Lineo Inc. <jeff@uclinux.com>\n");
    132#endif
    133#ifdef CONFIG_DRAGEN2
    134	pr_info("DragonEngine II board support by Georges Menie\n");
    135#endif
    136#ifdef CONFIG_M5235EVB
    137	pr_info("Motorola M5235EVB support (C)2005 Syn-tech Systems, Inc. (Jate Sujjavanich)\n");
    138#endif
    139
    140	pr_debug("KERNEL -> TEXT=0x%p-0x%p DATA=0x%p-0x%p BSS=0x%p-0x%p\n",
    141		 _stext, _etext, _sdata, _edata, __bss_start, __bss_stop);
    142	pr_debug("MEMORY -> ROMFS=0x%p-0x%06lx MEM=0x%06lx-0x%06lx\n ",
    143		 __bss_stop, memory_start, memory_start, memory_end);
    144
    145	memblock_add(_rambase, memory_end - _rambase);
    146	memblock_reserve(_rambase, memory_start - _rambase);
    147
    148	/* Keep a copy of command line */
    149	*cmdline_p = &command_line[0];
    150	memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
    151	boot_command_line[COMMAND_LINE_SIZE-1] = 0;
    152
    153	/*
    154	 * Give all the memory to the bootmap allocator, tell it to put the
    155	 * boot mem_map at the start of memory.
    156	 */
    157	min_low_pfn = PFN_DOWN(memory_start);
    158	max_pfn = max_low_pfn = PFN_DOWN(memory_end);
    159
    160#if defined(CONFIG_UBOOT) && defined(CONFIG_BLK_DEV_INITRD)
    161	if ((initrd_start > 0) && (initrd_start < initrd_end) &&
    162			(initrd_end < memory_end))
    163		memblock_reserve(initrd_start, initrd_end - initrd_start);
    164#endif /* if defined(CONFIG_BLK_DEV_INITRD) */
    165
    166	/*
    167	 * Get kmalloc into gear.
    168	 */
    169	paging_init();
    170}
    171
    172/*
    173 *	Get CPU information for use by the procfs.
    174 */
    175static int show_cpuinfo(struct seq_file *m, void *v)
    176{
    177	char *cpu, *mmu, *fpu;
    178	u_long clockfreq;
    179
    180	cpu = CPU_NAME;
    181	mmu = "none";
    182	fpu = "none";
    183	clockfreq = (loops_per_jiffy * HZ) * CPU_INSTR_PER_JIFFY;
    184
    185	seq_printf(m, "CPU:\t\t%s\n"
    186		      "MMU:\t\t%s\n"
    187		      "FPU:\t\t%s\n"
    188		      "Clocking:\t%lu.%1luMHz\n"
    189		      "BogoMips:\t%lu.%02lu\n"
    190		      "Calibration:\t%lu loops\n",
    191		      cpu, mmu, fpu,
    192		      clockfreq / 1000000,
    193		      (clockfreq / 100000) % 10,
    194		      (loops_per_jiffy * HZ) / 500000,
    195		      ((loops_per_jiffy * HZ) / 5000) % 100,
    196		      (loops_per_jiffy * HZ));
    197
    198	return 0;
    199}
    200
    201static void *c_start(struct seq_file *m, loff_t *pos)
    202{
    203	return *pos < NR_CPUS ? ((void *) 0x12345678) : NULL;
    204}
    205
    206static void *c_next(struct seq_file *m, void *v, loff_t *pos)
    207{
    208	++*pos;
    209	return c_start(m, pos);
    210}
    211
    212static void c_stop(struct seq_file *m, void *v)
    213{
    214}
    215
    216const struct seq_operations cpuinfo_op = {
    217	.start	= c_start,
    218	.next	= c_next,
    219	.stop	= c_stop,
    220	.show	= show_cpuinfo,
    221};
    222