huangcm
2025-08-30 0269911b91ed7e03c24005924cc6423abf245fb8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
   ! Copyright 2005,2006,2007,2009 Imagination Technologies
 
#include <linux/init.h>
#include <asm/metag_mem.h>
#include <generated/asm-offsets.h>
#undef __exit
 
   __HEAD
   ! Setup the stack and get going into _metag_start_kernel
   .global    __start
   .type   __start,function
__start:
   ! D1Ar1 contains pTBI (ISTAT)
   ! D0Ar2 contains pTBI
   ! D1Ar3 contains __pTBISegs
   ! D0Ar4 contains kernel arglist pointer
 
   MOVT    D0Re0,#HI(___pTBIs)
   ADD     D0Re0,D0Re0,#LO(___pTBIs)
   SETL    [D0Re0],D0Ar2,D1Ar1
   MOVT    D0Re0,#HI(___pTBISegs)
   ADD     D0Re0,D0Re0,#LO(___pTBISegs)
   SETD    [D0Re0],D1Ar3
   MOV    A0FrP,#0
   MOV    D0Re0,#0
   MOV    D1Re0,#0
   MOV    D1Ar3,#0
   MOV    D1Ar1,D0Ar4            !Store kernel boot params
   MOV    D1Ar5,#0
   MOV    D0Ar6,#0
#ifdef CONFIG_METAG_DSP
   MOV    D0.8,#0
#endif
   MOVT    A0StP,#HI(_init_thread_union)
   ADD    A0StP,A0StP,#LO(_init_thread_union)
   ADD     A0StP,A0StP,#THREAD_INFO_SIZE
   MOVT    D1RtP,#HI(_metag_start_kernel)
   CALL    D1RtP,#LO(_metag_start_kernel)
   .size    __start,.-__start
 
   !! Needed by TBX
   .global    __exit
   .type   __exit,function
__exit:
   XOR     TXENABLE,D0Re0,D0Re0
   .size    __exit,.-__exit
 
#ifdef CONFIG_SMP
   .global _secondary_startup
   .type _secondary_startup,function
_secondary_startup:
#if CONFIG_PAGE_OFFSET < LINGLOBAL_BASE
   ! In case GCOn has just been turned on we need to fence any writes that
   ! the boot thread might have performed prior to coherency taking effect.
   MOVT    D0Re0,#HI(LINSYSEVENT_WR_ATOMIC_UNLOCK)
   MOV    D1Re0,#0
   SETD    [D0Re0], D1Re0
#endif
   MOVT    A0StP,#HI(_secondary_data_stack)
   ADD    A0StP,A0StP,#LO(_secondary_data_stack)
   GETD    A0StP,[A0StP]
   ADD    A0StP,A0StP,#THREAD_INFO_SIZE
   B    _secondary_start_kernel
   .size    _secondary_startup,.-_secondary_startup
#endif