-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 360144 b: refs/heads/master c: c121c50 h: refs/heads/master v: v3
- Loading branch information
Vineet Gupta
committed
Feb 15, 2013
1 parent
cd5cd75
commit 024bfca
Showing
9 changed files
with
507 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 1162b0701b14ba112d4e3fe5c27c694caf983539 | ||
refs/heads/master: c121c5063c0674fad6811f0b0d86ec3bc6eecbbd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/* | ||
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#ifndef __ASMARC_SETUP_H | ||
#define __ASMARC_SETUP_H | ||
|
||
#include <linux/types.h> | ||
|
||
#define COMMAND_LINE_SIZE 256 | ||
|
||
extern int root_mountflags, end_mem; | ||
extern int running_on_hw; | ||
|
||
void __init setup_processor(void); | ||
void __init setup_arch_memory(void); | ||
|
||
#endif /* __ASMARC_SETUP_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* | ||
* ARC CPU startup Code | ||
* | ||
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
* | ||
* Vineetg: Dec 2007 | ||
* -Check if we are running on Simulator or on real hardware | ||
* to skip certain things during boot on simulator | ||
*/ | ||
|
||
#include <asm/asm-offsets.h> | ||
#include <asm/entry.h> | ||
#include <linux/linkage.h> | ||
#include <asm/arcregs.h> | ||
|
||
.cpu A7 | ||
|
||
.section .init.text, "ax",@progbits | ||
.type stext, @function | ||
.globl stext | ||
stext: | ||
;------------------------------------------------------------------- | ||
; Don't clobber r0-r4 yet. It might have bootloader provided info | ||
;------------------------------------------------------------------- | ||
|
||
; Clear BSS before updating any globals | ||
; XXX: use ZOL here | ||
mov r5, __bss_start | ||
mov r6, __bss_stop | ||
1: | ||
st.ab 0, [r5,4] | ||
brlt r5, r6, 1b | ||
|
||
#ifdef CONFIG_CMDLINE_UBOOT | ||
; support for bootloader provided cmdline | ||
; If cmdline passed by u-boot, then | ||
; r0 = 1 (because ATAGS parsing, now retired, used to use 0) | ||
; r1 = magic number (board identity) | ||
; r2 = addr of cmdline string (somewhere in memory/flash) | ||
|
||
brne r0, 1, .Lother_bootup_chores ; u-boot didn't pass cmdline | ||
breq r2, 0, .Lother_bootup_chores ; or cmdline is NULL | ||
|
||
mov r5, @command_line | ||
1: | ||
ldb.ab r6, [r2, 1] | ||
breq r6, 0, .Lother_bootup_chores | ||
b.d 1b | ||
stb.ab r6, [r5, 1] | ||
#endif | ||
|
||
.Lother_bootup_chores: | ||
|
||
; Identify if running on ISS vs Silicon | ||
; IDENTITY Reg [ 3 2 1 0 ] | ||
; (chip-id) ^^^^^ ==> 0xffff for ISS | ||
lr r0, [identity] | ||
lsr r3, r0, 16 | ||
cmp r3, 0xffff | ||
mov.z r4, 0 | ||
mov.nz r4, 1 | ||
st r4, [@running_on_hw] | ||
|
||
; setup "current" tsk and optionally cache it in dedicated r25 | ||
mov r9, @init_task | ||
SET_CURR_TASK_ON_CPU r9, r0 ; r9 = tsk, r0 = scratch | ||
|
||
; setup stack (fp, sp) | ||
mov fp, 0 | ||
|
||
; tsk->thread_info is really a PAGE, whose bottom hoists stack | ||
GET_TSK_STACK_BASE r9, sp ; r9 = tsk, sp = stack base(output) | ||
|
||
j start_kernel ; "C" entry point |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* | ||
* Copyright (C) 2011-2012 Synopsys, Inc. (www.synopsys.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/printk.h> | ||
#include <linux/reboot.h> | ||
#include <linux/pm.h> | ||
|
||
void machine_halt(void) | ||
{ | ||
/* Halt the processor */ | ||
__asm__ __volatile__("flag 1\n"); | ||
} | ||
|
||
void machine_restart(char *__unused) | ||
{ | ||
/* Soft reset : jump to reset vector */ | ||
pr_info("Put your restart handler here\n"); | ||
machine_halt(); | ||
} | ||
|
||
void machine_power_off(void) | ||
{ | ||
/* FIXME :: power off ??? */ | ||
machine_halt(); | ||
} | ||
|
||
void (*pm_power_off) (void) = NULL; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,166 @@ | ||
/* | ||
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/seq_file.h> | ||
#include <linux/fs.h> | ||
#include <linux/delay.h> | ||
#include <linux/root_dev.h> | ||
#include <linux/console.h> | ||
#include <linux/module.h> | ||
#include <linux/cpu.h> | ||
#include <asm/arcregs.h> | ||
#include <asm/tlb.h> | ||
#include <asm/cache.h> | ||
#include <asm/setup.h> | ||
#include <asm/page.h> | ||
#include <asm/irq.h> | ||
#include <asm/arcregs.h> | ||
|
||
#define FIX_PTR(x) __asm__ __volatile__(";" : "+r"(x)) | ||
|
||
int running_on_hw = 1; /* vs. on ISS */ | ||
|
||
char __initdata command_line[COMMAND_LINE_SIZE]; | ||
|
||
struct task_struct *_current_task[NR_CPUS]; /* For stack switching */ | ||
|
||
struct cpuinfo_arc cpuinfo_arc700[NR_CPUS]; | ||
|
||
void __init read_arc_build_cfg_regs(void) | ||
{ | ||
read_decode_mmu_bcr(); | ||
read_decode_cache_bcr(); | ||
} | ||
|
||
/* | ||
* Initialize and setup the processor core | ||
* This is called by all the CPUs thus should not do special case stuff | ||
* such as only for boot CPU etc | ||
*/ | ||
|
||
void __init setup_processor(void) | ||
{ | ||
read_arc_build_cfg_regs(); | ||
arc_init_IRQ(); | ||
arc_mmu_init(); | ||
arc_cache_init(); | ||
} | ||
|
||
void __init __attribute__((weak)) arc_platform_early_init(void) | ||
{ | ||
} | ||
|
||
void __init setup_arch(char **cmdline_p) | ||
{ | ||
#ifdef CONFIG_CMDLINE_UBOOT | ||
/* Make sure that a whitespace is inserted before */ | ||
strlcat(command_line, " ", sizeof(command_line)); | ||
#endif | ||
/* | ||
* Append .config cmdline to base command line, which might already | ||
* contain u-boot "bootargs" (handled by head.S, if so configured) | ||
*/ | ||
strlcat(command_line, CONFIG_CMDLINE, sizeof(command_line)); | ||
|
||
/* Save unparsed command line copy for /proc/cmdline */ | ||
strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); | ||
*cmdline_p = command_line; | ||
|
||
/* To force early parsing of things like mem=xxx */ | ||
parse_early_param(); | ||
|
||
/* Platform/board specific: e.g. early console registration */ | ||
arc_platform_early_init(); | ||
|
||
setup_processor(); | ||
|
||
setup_arch_memory(); | ||
|
||
/* Can be issue if someone passes cmd line arg "ro" | ||
* But that is unlikely so keeping it as it is | ||
*/ | ||
root_mountflags &= ~MS_RDONLY; | ||
|
||
console_verbose(); | ||
|
||
#if defined(CONFIG_VT) && defined(CONFIG_DUMMY_CONSOLE) | ||
conswitchp = &dummy_con; | ||
#endif | ||
|
||
} | ||
|
||
/* | ||
* Get CPU information for use by the procfs. | ||
*/ | ||
|
||
#define cpu_to_ptr(c) ((void *)(0xFFFF0000 | (unsigned int)(c))) | ||
#define ptr_to_cpu(p) (~0xFFFF0000UL & (unsigned int)(p)) | ||
|
||
static int show_cpuinfo(struct seq_file *m, void *v) | ||
{ | ||
char *str; | ||
int cpu_id = ptr_to_cpu(v); | ||
|
||
str = (char *)__get_free_page(GFP_TEMPORARY); | ||
if (!str) | ||
goto done; | ||
|
||
seq_printf(m, "ARC700 #%d\n", cpu_id); | ||
|
||
seq_printf(m, "Bogo MIPS : \t%lu.%02lu\n", | ||
loops_per_jiffy / (500000 / HZ), | ||
(loops_per_jiffy / (5000 / HZ)) % 100); | ||
|
||
free_page((unsigned long)str); | ||
done: | ||
seq_printf(m, "\n\n"); | ||
|
||
return 0; | ||
} | ||
|
||
static void *c_start(struct seq_file *m, loff_t *pos) | ||
{ | ||
/* | ||
* Callback returns cpu-id to iterator for show routine, NULL to stop. | ||
* However since NULL is also a valid cpu-id (0), we use a round-about | ||
* way to pass it w/o having to kmalloc/free a 2 byte string. | ||
* Encode cpu-id as 0xFFcccc, which is decoded by show routine. | ||
*/ | ||
return *pos < num_possible_cpus() ? cpu_to_ptr(*pos) : NULL; | ||
} | ||
|
||
static void *c_next(struct seq_file *m, void *v, loff_t *pos) | ||
{ | ||
++*pos; | ||
return c_start(m, pos); | ||
} | ||
|
||
static void c_stop(struct seq_file *m, void *v) | ||
{ | ||
} | ||
|
||
const struct seq_operations cpuinfo_op = { | ||
.start = c_start, | ||
.next = c_next, | ||
.stop = c_stop, | ||
.show = show_cpuinfo | ||
}; | ||
|
||
static DEFINE_PER_CPU(struct cpu, cpu_topology); | ||
|
||
static int __init topology_init(void) | ||
{ | ||
int cpu; | ||
|
||
for_each_present_cpu(cpu) | ||
register_cpu(&per_cpu(cpu_topology, cpu), cpu); | ||
|
||
return 0; | ||
} | ||
|
||
subsys_initcall(topology_init); |
Oops, something went wrong.