s390/pgtable: fix ipte notify bit
[pandora-kernel.git] / arch / xtensa / platforms / iss / setup.c
1 /*
2  *
3  * arch/xtensa/platform-iss/setup.c
4  *
5  * Platform specific initialization.
6  *
7  * Authors: Chris Zankel <chris@zankel.net>
8  *          Joe Taylor <joe@tensilica.com>
9  *
10  * Copyright 2001 - 2005 Tensilica Inc.
11  *
12  * This program is free software; you can redistribute  it and/or modify it
13  * under  the terms of  the GNU General  Public License as published by the
14  * Free Software Foundation;  either version 2 of the  License, or (at your
15  * option) any later version.
16  *
17  */
18 #include <linux/stddef.h>
19 #include <linux/kernel.h>
20 #include <linux/init.h>
21 #include <linux/errno.h>
22 #include <linux/reboot.h>
23 #include <linux/kdev_t.h>
24 #include <linux/types.h>
25 #include <linux/major.h>
26 #include <linux/blkdev.h>
27 #include <linux/console.h>
28 #include <linux/delay.h>
29 #include <linux/stringify.h>
30 #include <linux/notifier.h>
31
32 #include <asm/platform.h>
33 #include <asm/bootparam.h>
34
35
36 void __init platform_init(bp_tag_t* bootparam)
37 {
38
39 }
40
41 #ifdef CONFIG_PCI
42 void platform_pcibios_init(void)
43 {
44 }
45 #endif
46
47 void platform_halt(void)
48 {
49         pr_info(" ** Called platform_halt() **\n");
50         __asm__ __volatile__("movi a2, 1\nsimcall\n");
51 }
52
53 void platform_power_off(void)
54 {
55         pr_info(" ** Called platform_power_off() **\n");
56         __asm__ __volatile__("movi a2, 1\nsimcall\n");
57 }
58 void platform_restart(void)
59 {
60         /* Flush and reset the mmu, simulate a processor reset, and
61          * jump to the reset vector. */
62
63         __asm__ __volatile__("movi      a2, 15\n\t"
64                              "wsr       a2, icountlevel\n\t"
65                              "movi      a2, 0\n\t"
66                              "wsr       a2, icount\n\t"
67                              "wsr       a2, ibreakenable\n\t"
68                              "wsr       a2, lcount\n\t"
69                              "movi      a2, 0x1f\n\t"
70                              "wsr       a2, ps\n\t"
71                              "isync\n\t"
72                              "jx        %0\n\t"
73                              :
74                              : "a" (XCHAL_RESET_VECTOR_VADDR)
75                              : "a2");
76
77         /* control never gets here */
78 }
79
80 extern void iss_net_poll(void);
81
82 const char twirl[]="|/-\\|/-\\";
83
84 void platform_heartbeat(void)
85 {
86 #if 0
87         static int i = 0, j = 0;
88
89         if (--i < 0) {
90                 i = 99;
91                 printk("\r%c\r", twirl[j++]);
92                 if (j == 8)
93                         j = 0;
94         }
95 #endif
96 }
97
98
99
100 static int
101 iss_panic_event(struct notifier_block *this, unsigned long event, void *ptr)
102 {
103         __asm__ __volatile__("movi a2, -1; simcall\n");
104         return NOTIFY_DONE;
105 }
106
107 static struct notifier_block iss_panic_block = {
108         iss_panic_event,
109         NULL,
110         0
111 };
112
113 void __init platform_setup(char **p_cmdline)
114 {
115         atomic_notifier_chain_register(&panic_notifier_list, &iss_panic_block);
116 }