diff options
Diffstat (limited to 'arch/sh/kernel/process_64.c')
| -rw-r--r-- | arch/sh/kernel/process_64.c | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index b7aa09235b51..a7e5f2e74bac 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c | |||
| @@ -23,7 +23,6 @@ | |||
| 23 | #include <linux/reboot.h> | 23 | #include <linux/reboot.h> |
| 24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
| 25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
| 26 | #include <linux/proc_fs.h> | ||
| 27 | #include <linux/io.h> | 26 | #include <linux/io.h> |
| 28 | #include <asm/syscalls.h> | 27 | #include <asm/syscalls.h> |
| 29 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
| @@ -33,56 +32,6 @@ | |||
| 33 | 32 | ||
| 34 | struct task_struct *last_task_used_math = NULL; | 33 | struct task_struct *last_task_used_math = NULL; |
| 35 | 34 | ||
| 36 | static int hlt_counter = 1; | ||
| 37 | |||
| 38 | #define HARD_IDLE_TIMEOUT (HZ / 3) | ||
| 39 | |||
| 40 | static int __init nohlt_setup(char *__unused) | ||
| 41 | { | ||
| 42 | hlt_counter = 1; | ||
| 43 | return 1; | ||
| 44 | } | ||
| 45 | |||
| 46 | static int __init hlt_setup(char *__unused) | ||
| 47 | { | ||
| 48 | hlt_counter = 0; | ||
| 49 | return 1; | ||
| 50 | } | ||
| 51 | |||
| 52 | __setup("nohlt", nohlt_setup); | ||
| 53 | __setup("hlt", hlt_setup); | ||
| 54 | |||
| 55 | static inline void hlt(void) | ||
| 56 | { | ||
| 57 | __asm__ __volatile__ ("sleep" : : : "memory"); | ||
| 58 | } | ||
| 59 | |||
| 60 | /* | ||
| 61 | * The idle loop on a uniprocessor SH.. | ||
| 62 | */ | ||
| 63 | void cpu_idle(void) | ||
| 64 | { | ||
| 65 | /* endless idle loop with no priority at all */ | ||
| 66 | while (1) { | ||
| 67 | if (hlt_counter) { | ||
| 68 | while (!need_resched()) | ||
| 69 | cpu_relax(); | ||
| 70 | } else { | ||
| 71 | local_irq_disable(); | ||
| 72 | while (!need_resched()) { | ||
| 73 | local_irq_enable(); | ||
| 74 | hlt(); | ||
| 75 | local_irq_disable(); | ||
| 76 | } | ||
| 77 | local_irq_enable(); | ||
| 78 | } | ||
| 79 | preempt_enable_no_resched(); | ||
| 80 | schedule(); | ||
| 81 | preempt_disable(); | ||
| 82 | } | ||
| 83 | |||
| 84 | } | ||
| 85 | |||
| 86 | void machine_restart(char * __unused) | 35 | void machine_restart(char * __unused) |
| 87 | { | 36 | { |
| 88 | extern void phys_stext(void); | 37 | extern void phys_stext(void); |
| @@ -97,13 +46,6 @@ void machine_halt(void) | |||
| 97 | 46 | ||
| 98 | void machine_power_off(void) | 47 | void machine_power_off(void) |
| 99 | { | 48 | { |
| 100 | #if 0 | ||
| 101 | /* Disable watchdog timer */ | ||
| 102 | ctrl_outl(0xa5000000, WTCSR); | ||
| 103 | /* Configure deep standby on sleep */ | ||
| 104 | ctrl_outl(0x03, STBCR); | ||
| 105 | #endif | ||
| 106 | |||
| 107 | __asm__ __volatile__ ( | 49 | __asm__ __volatile__ ( |
| 108 | "sleep\n\t" | 50 | "sleep\n\t" |
| 109 | "synci\n\t" | 51 | "synci\n\t" |
| @@ -113,9 +55,6 @@ void machine_power_off(void) | |||
| 113 | panic("Unexpected wakeup!\n"); | 55 | panic("Unexpected wakeup!\n"); |
| 114 | } | 56 | } |
| 115 | 57 | ||
| 116 | void (*pm_power_off)(void) = machine_power_off; | ||
| 117 | EXPORT_SYMBOL(pm_power_off); | ||
| 118 | |||
| 119 | void show_regs(struct pt_regs * regs) | 58 | void show_regs(struct pt_regs * regs) |
| 120 | { | 59 | { |
| 121 | unsigned long long ah, al, bh, bl, ch, cl; | 60 | unsigned long long ah, al, bh, bl, ch, cl; |
| @@ -365,18 +304,6 @@ void show_regs(struct pt_regs * regs) | |||
| 365 | } | 304 | } |
| 366 | } | 305 | } |
| 367 | 306 | ||
| 368 | struct task_struct * alloc_task_struct(void) | ||
| 369 | { | ||
| 370 | /* Get task descriptor pages */ | ||
| 371 | return (struct task_struct *) | ||
| 372 | __get_free_pages(GFP_KERNEL, get_order(THREAD_SIZE)); | ||
| 373 | } | ||
| 374 | |||
| 375 | void free_task_struct(struct task_struct *p) | ||
| 376 | { | ||
| 377 | free_pages((unsigned long) p, get_order(THREAD_SIZE)); | ||
| 378 | } | ||
| 379 | |||
| 380 | /* | 307 | /* |
| 381 | * Create a kernel thread | 308 | * Create a kernel thread |
| 382 | */ | 309 | */ |
| @@ -662,41 +589,3 @@ unsigned long get_wchan(struct task_struct *p) | |||
| 662 | #endif | 589 | #endif |
| 663 | return pc; | 590 | return pc; |
| 664 | } | 591 | } |
| 665 | |||
| 666 | /* Provide a /proc/asids file that lists out the | ||
| 667 | ASIDs currently associated with the processes. (If the DM.PC register is | ||
| 668 | examined through the debug link, this shows ASID + PC. To make use of this, | ||
| 669 | the PID->ASID relationship needs to be known. This is primarily for | ||
| 670 | debugging.) | ||
| 671 | */ | ||
| 672 | |||
| 673 | #if defined(CONFIG_SH64_PROC_ASIDS) | ||
| 674 | static int | ||
| 675 | asids_proc_info(char *buf, char **start, off_t fpos, int length, int *eof, void *data) | ||
| 676 | { | ||
| 677 | int len=0; | ||
| 678 | struct task_struct *p; | ||
| 679 | read_lock(&tasklist_lock); | ||
| 680 | for_each_process(p) { | ||
| 681 | int pid = p->pid; | ||
| 682 | |||
| 683 | if (!pid) | ||
| 684 | continue; | ||
| 685 | if (p->mm) | ||
| 686 | len += sprintf(buf+len, "%5d : %02lx\n", pid, | ||
| 687 | asid_cache(smp_processor_id())); | ||
| 688 | else | ||
| 689 | len += sprintf(buf+len, "%5d : (none)\n", pid); | ||
| 690 | } | ||
| 691 | read_unlock(&tasklist_lock); | ||
| 692 | *eof = 1; | ||
| 693 | return len; | ||
| 694 | } | ||
| 695 | |||
| 696 | static int __init register_proc_asids(void) | ||
| 697 | { | ||
| 698 | create_proc_read_entry("asids", 0, NULL, asids_proc_info, NULL); | ||
| 699 | return 0; | ||
| 700 | } | ||
| 701 | __initcall(register_proc_asids); | ||
| 702 | #endif | ||
