~ubuntu-branches/ubuntu/karmic/linux-ports/karmic

« back to all changes in this revision

Viewing changes to arch/sparc/kernel/trampoline.S

  • Committer: Bazaar Package Importer
  • Author(s): Luke Yelavich, Luke Yelavich, Michael Casadevall, Tim Gardner, Upstream Kernel Changes
  • Date: 2009-05-06 18:18:55 UTC
  • Revision ID: james.westby@ubuntu.com-20090506181855-t00baeevpnvd9o7a
Tags: 2.6.30-1.1
[ Luke Yelavich ]
* initial release for karmic
* SAUCE: rebase-ports - adjust for the karmic ports kernel
* SAUCE: rebase-ports - also remove abi dirs/files on rebase
* Update configs after rebase against mainline Jaunty tree
* [Config] Disable CONFIG_BLK_DEV_UB and CONFIG_USB_LIBUSUAL as per
  mainline jaunty
* forward-port patch to drbd for powerpc compilation
* [Config] disable CONFIG_LENOVO_SL_LAPTOP for i386 due to FTBFS
* add .o files found in arch/powerpc/lib to all powerpc kernel header
  packages
* [Config] enable CONFIG_DRM_I915_KMS for i386 as per karmic mainline

[ Michael Casadevall ]

* Disable kgdb on sparc64
* [sparc] [Config] Disable GPIO LEDS
* [ia64] Rename -ia64-generic to -ia64 in line with other architectures
* Correct kernel image path for sparc builds
* [hppa] Fix HPPA config files to build modules for all udebian

Rebase on top of karmic mainline 2.6.30-1.1

[ Tim Gardner ]

* [Config] armel: disable staging drivers, fixes FTBS
* [Config] armel imx51: Disable CONFIG_MTD_NAND_MXC, fixes FTBS

[ Upstream Kernel Changes ]

* mpt2sas: Change reset_type enum to avoid namespace collision.
  Submitted upstream.

* Initial release after rebasing against v2.6.30-rc3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * trampoline.S: SMP cpu boot-up trampoline code.
3
 
 *
4
 
 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
5
 
 * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
6
 
 */
7
 
 
8
 
#include <linux/init.h>
9
 
#include <asm/head.h>
10
 
#include <asm/psr.h>
11
 
#include <asm/page.h>
12
 
#include <asm/asi.h>
13
 
#include <asm/ptrace.h>
14
 
#include <asm/vaddrs.h>
15
 
#include <asm/contregs.h>
16
 
#include <asm/thread_info.h>
17
 
 
18
 
        .globl sun4m_cpu_startup, __smp4m_processor_id
19
 
        .globl sun4d_cpu_startup, __smp4d_processor_id
20
 
 
21
 
        __CPUINIT
22
 
        .align 4
23
 
 
24
 
/* When we start up a cpu for the first time it enters this routine.
25
 
 * This initializes the chip from whatever state the prom left it
26
 
 * in and sets PIL in %psr to 15, no irqs.
27
 
 */
28
 
 
29
 
sun4m_cpu_startup:
30
 
cpu1_startup:
31
 
        sethi   %hi(trapbase_cpu1), %g3
32
 
        b       1f
33
 
         or     %g3, %lo(trapbase_cpu1), %g3
34
 
 
35
 
cpu2_startup:
36
 
        sethi   %hi(trapbase_cpu2), %g3
37
 
        b       1f
38
 
         or     %g3, %lo(trapbase_cpu2), %g3
39
 
 
40
 
cpu3_startup:
41
 
        sethi   %hi(trapbase_cpu3), %g3
42
 
        b       1f
43
 
         or     %g3, %lo(trapbase_cpu3), %g3
44
 
 
45
 
1:
46
 
        /* Set up a sane %psr -- PIL<0xf> S<0x1> PS<0x1> CWP<0x0> */
47
 
        set     (PSR_PIL | PSR_S | PSR_PS), %g1
48
 
        wr      %g1, 0x0, %psr          ! traps off though
49
 
        WRITE_PAUSE
50
 
 
51
 
        /* Our %wim is one behind CWP */
52
 
        mov     2, %g1
53
 
        wr      %g1, 0x0, %wim
54
 
        WRITE_PAUSE
55
 
 
56
 
        /* This identifies "this cpu". */
57
 
        wr      %g3, 0x0, %tbr
58
 
        WRITE_PAUSE
59
 
 
60
 
        /* Give ourselves a stack and curptr. */
61
 
        set     current_set, %g5
62
 
        srl     %g3, 10, %g4
63
 
        and     %g4, 0xc, %g4
64
 
        ld      [%g5 + %g4], %g6
65
 
 
66
 
        sethi   %hi(THREAD_SIZE - STACKFRAME_SZ), %sp
67
 
        or      %sp, %lo(THREAD_SIZE - STACKFRAME_SZ), %sp
68
 
        add     %g6, %sp, %sp
69
 
 
70
 
        /* Turn on traps (PSR_ET). */
71
 
        rd      %psr, %g1
72
 
        wr      %g1, PSR_ET, %psr       ! traps on
73
 
        WRITE_PAUSE
74
 
 
75
 
        /* Init our caches, etc. */
76
 
        set     poke_srmmu, %g5
77
 
        ld      [%g5], %g5
78
 
        call    %g5
79
 
         nop
80
 
 
81
 
        /* Start this processor. */
82
 
        call    smp4m_callin
83
 
         nop
84
 
 
85
 
        b,a     smp_do_cpu_idle
86
 
 
87
 
        .text
88
 
        .align  4
89
 
 
90
 
smp_do_cpu_idle:
91
 
        call    cpu_idle
92
 
         mov    0, %o0
93
 
 
94
 
        call    cpu_panic
95
 
         nop
96
 
 
97
 
__smp4m_processor_id:
98
 
        rd      %tbr, %g2
99
 
        srl     %g2, 12, %g2
100
 
        and     %g2, 3, %g2
101
 
        retl
102
 
         mov    %g1, %o7
103
 
 
104
 
__smp4d_processor_id:
105
 
        lda     [%g0] ASI_M_VIKING_TMP1, %g2
106
 
        retl
107
 
         mov    %g1, %o7
108
 
 
109
 
/* CPUID in bootbus can be found at PA 0xff0140000 */
110
 
#define SUN4D_BOOTBUS_CPUID     0xf0140000
111
 
 
112
 
        __CPUINIT
113
 
        .align  4
114
 
 
115
 
sun4d_cpu_startup:
116
 
        /* Set up a sane %psr -- PIL<0xf> S<0x1> PS<0x1> CWP<0x0> */
117
 
        set     (PSR_PIL | PSR_S | PSR_PS), %g1
118
 
        wr      %g1, 0x0, %psr          ! traps off though
119
 
        WRITE_PAUSE
120
 
 
121
 
        /* Our %wim is one behind CWP */
122
 
        mov     2, %g1
123
 
        wr      %g1, 0x0, %wim
124
 
        WRITE_PAUSE
125
 
 
126
 
        /* Set tbr - we use just one trap table. */
127
 
        set     trapbase, %g1
128
 
        wr      %g1, 0x0, %tbr
129
 
        WRITE_PAUSE
130
 
 
131
 
        /* Get our CPU id out of bootbus */
132
 
        set     SUN4D_BOOTBUS_CPUID, %g3
133
 
        lduba   [%g3] ASI_M_CTL, %g3
134
 
        and     %g3, 0xf8, %g3
135
 
        srl     %g3, 3, %g1
136
 
        sta     %g1, [%g0] ASI_M_VIKING_TMP1
137
 
 
138
 
        /* Give ourselves a stack and curptr. */
139
 
        set     current_set, %g5
140
 
        srl     %g3, 1, %g4
141
 
        ld      [%g5 + %g4], %g6
142
 
 
143
 
        sethi   %hi(THREAD_SIZE - STACKFRAME_SZ), %sp
144
 
        or      %sp, %lo(THREAD_SIZE - STACKFRAME_SZ), %sp
145
 
        add     %g6, %sp, %sp
146
 
 
147
 
        /* Turn on traps (PSR_ET). */
148
 
        rd      %psr, %g1
149
 
        wr      %g1, PSR_ET, %psr       ! traps on
150
 
        WRITE_PAUSE
151
 
 
152
 
        /* Init our caches, etc. */
153
 
        set     poke_srmmu, %g5
154
 
        ld      [%g5], %g5
155
 
        call    %g5
156
 
         nop
157
 
 
158
 
        /* Start this processor. */
159
 
        call    smp4d_callin
160
 
         nop
161
 
 
162
 
        b,a     smp_do_cpu_idle