• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/arch/mips/include/asm/mach-ip27/
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License.  See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2000 Silicon Graphics, Inc.
7 * Copyright (C) 2005 Ralf Baechle <ralf@linux-mips.org>
8 */
9#ifndef __ASM_MACH_IP27_KERNEL_ENTRY_H
10#define __ASM_MACH_IP27_KERNEL_ENTRY_H
11
12#include <asm/sn/addrs.h>
13#include <asm/sn/sn0/hubni.h>
14#include <asm/sn/klkernvars.h>
15
16/*
17 * Returns the local nasid into res.
18 */
19	.macro GET_NASID_ASM res
20	dli	\res, LOCAL_HUB_ADDR(NI_STATUS_REV_ID)
21	ld	\res, (\res)
22	and	\res, NSRI_NODEID_MASK
23	dsrl	\res, NSRI_NODEID_SHFT
24	.endm
25
26	.macro	kernel_entry_setup
27	GET_NASID_ASM	t1
28	move		t2, t1			# text and data are here
29	MAPPED_KERNEL_SETUP_TLB
30	.endm
31
32/*
33 * Do SMP slave processor setup necessary before we can savely execute C code.
34 */
35	.macro	smp_slave_setup
36	GET_NASID_ASM	t1
37	dli	t0, KLDIR_OFFSET + (KLI_KERN_VARS * KLDIR_ENT_SIZE) + \
38		    KLDIR_OFF_POINTER + CAC_BASE
39	dsll	t1, NASID_SHFT
40	or	t0, t0, t1
41	ld	t0, 0(t0)			# t0 points to kern_vars struct
42	lh	t1, KV_RO_NASID_OFFSET(t0)
43	lh	t2, KV_RW_NASID_OFFSET(t0)
44	MAPPED_KERNEL_SETUP_TLB
45
46	/*
47	 * We might not get launched at the address the kernel is linked to,
48	 * so we jump there.
49	 */
50	PTR_LA  t0, 0f
51	jr      t0
520:
53	.endm
54
55#endif /* __ASM_MACH_IP27_KERNEL_ENTRY_H */
56