Subversion Repositories HelenOS

Rev

Rev 3835 | Rev 3993 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3835 Rev 3862
1
#
1
#
2
# Copyright (c) 2005 Martin Decky
2
# Copyright (c) 2005 Martin Decky
3
# All rights reserved.
3
# All rights reserved.
4
#
4
#
5
# Redistribution and use in source and binary forms, with or without
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions
6
# modification, are permitted provided that the following conditions
7
# are met:
7
# are met:
8
#
8
#
9
# - Redistributions of source code must retain the above copyright
9
# - Redistributions of source code must retain the above copyright
10
#   notice, this list of conditions and the following disclaimer.
10
#   notice, this list of conditions and the following disclaimer.
11
# - Redistributions in binary form must reproduce the above copyright
11
# - Redistributions in binary form must reproduce the above copyright
12
#   notice, this list of conditions and the following disclaimer in the
12
#   notice, this list of conditions and the following disclaimer in the
13
#   documentation and/or other materials provided with the distribution.
13
#   documentation and/or other materials provided with the distribution.
14
# - The name of the author may not be used to endorse or promote products
14
# - The name of the author may not be used to endorse or promote products
15
#   derived from this software without specific prior written permission.
15
#   derived from this software without specific prior written permission.
16
#
16
#
17
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
#
27
#
28
 
28
 
29
## Toolchain configuration
29
## Toolchain configuration
30
#
30
#
31
 
31
 
32
ifndef CROSS_PREFIX
32
ifndef CROSS_PREFIX
33
	CROSS_PREFIX = /usr/local
33
	CROSS_PREFIX = /usr/local
34
endif
34
endif
35
 
35
 
36
BFD_NAME = elf64-sparc
36
BFD_NAME = elf64-sparc
37
BFD_ARCH = sparc
37
BFD_ARCH = sparc
38
BFD = binary
38
BFD = binary
39
TARGET = sparc64-linux-gnu
39
TARGET = sparc64-linux-gnu
40
TOOLCHAIN_DIR = $(CROSS_PREFIX)/sparc64
40
TOOLCHAIN_DIR = $(CROSS_PREFIX)/sparc64
41
 
41
 
42
GCC_CFLAGS += -m64 -mcpu=ultrasparc 
42
GCC_CFLAGS += -m64 -mcpu=ultrasparc 
43
SUNCC_CFLAGS += -m64 -xarch=sparc -xregs=appl,no%float
43
SUNCC_CFLAGS += -m64 -xarch=sparc -xregs=appl,no%float
44
 
44
 
45
LFLAGS += -no-check-sections -N
45
LFLAGS += -no-check-sections -N
46
 
46
 
47
DEFS += -D__64_BITS__
47
DEFS += -D__64_BITS__
48
 
48
 
49
## Own configuration directives
49
## Own configuration directives
50
#
50
#
51
 
51
 
52
## Compile with page hash table support.
52
## Compile with page hash table support.
53
#
53
#
54
 
54
 
55
CONFIG_PAGE_HT = y
55
CONFIG_PAGE_HT = y
56
DEFS += -DCONFIG_PAGE_HT
56
DEFS += -DCONFIG_PAGE_HT
57
 
57
 
58
## Compile with support for address space identifiers.
58
## Compile with support for address space identifiers.
59
#
59
#
60
 
60
 
61
CONFIG_ASID = y
61
CONFIG_ASID = y
62
CONFIG_ASID_FIFO = y
62
CONFIG_ASID_FIFO = y
63
 
63
 
64
## Compile with support for framebuffer.
64
## Compile with support for framebuffer.
65
#
65
#
66
 
66
 
67
CONFIG_FB = y
67
CONFIG_FB = y
68
 
68
 
69
## Compile with support for Sun keyboard.
69
## Compile with support for Sun keyboard.
70
#
70
#
71
 
71
 
72
CONFIG_SUN_KBD = y
72
CONFIG_SUN_KBD = y
73
 
73
 
74
## Compile with support for OpenFirmware device tree.
74
## Compile with support for OpenFirmware device tree.
75
#
75
#
76
 
76
 
77
CONFIG_OFW_TREE = y
77
CONFIG_OFW_TREE = y
78
 
78
 
79
ifeq ($(CONFIG_SMP),y)
79
ifeq ($(CONFIG_SMP),y)
80
	DEFS += -DCONFIG_SMP
80
	DEFS += -DCONFIG_SMP
81
endif
81
endif
82
 
82
 
83
ifeq ($(CONFIG_SGCN),y)
83
ifeq ($(CONFIG_SGCN),y)
84
        DEFS += -DCONFIG_SGCN
84
        DEFS += -DCONFIG_SGCN
85
endif
85
endif
86
 
86
 
87
ifeq ($(MACHINE),us)
87
ifeq ($(MACHINE),us)
88
	USARCH = sun4u
88
	USARCH = sun4u
89
	DEFS += -DSUN4U
89
	DEFS += -DSUN4U
90
	DEFS += -DUS
90
	DEFS += -DUS
91
endif
91
endif
92
 
92
 
93
ifeq ($(MACHINE),us3)
93
ifeq ($(MACHINE),us3)
94
	USARCH = sun4u
94
	USARCH = sun4u
95
	DEFS += -DSUN4U
95
	DEFS += -DSUN4U
96
	DEFS += -DUS3
96
	DEFS += -DUS3
97
endif
97
endif
98
 
98
 
99
ifeq ($(MACHINE),sun4v)
99
ifeq ($(MACHINE),sun4v)
100
	USARCH = sun4v
100
	USARCH = sun4v
101
	DEFS += -DSUN4V
101
	DEFS += -DSUN4V
102
	DEFS += -DUS3 # TODO: do not forget to remove this line, it is here only to make the code compilable even when the sun4v port is not fully implemented yet
102
	DEFS += -DUS3 # TODO: do not forget to remove this line, it is here only to make the code compilable even when the sun4v port is not fully implemented yet
103
endif
103
endif
104
 
104
 
105
 
105
 
106
# sources which exist in two versions - one for sun4u and one for sun4v
106
# sources which exist in two versions - one for sun4u and one for sun4v
107
ARCH_SOURCES = \
107
ARCH_SOURCES = \
108
	arch/$(ARCH)/src/$(USARCH)/start.S \
108
	arch/$(ARCH)/src/$(USARCH)/start.S \
109
	arch/$(ARCH)/src/trap/$(USARCH)/trap_table.S \
109
	arch/$(ARCH)/src/trap/$(USARCH)/trap_table.S \
110
	arch/$(ARCH)/src/$(USARCH)/asm.S \
110
	arch/$(ARCH)/src/$(USARCH)/asm.S \
111
	arch/$(ARCH)/src/$(USARCH)/sparc64.c \
111
	arch/$(ARCH)/src/$(USARCH)/sparc64.c \
112
	arch/$(ARCH)/src/mm/$(USARCH)/tlb.c \
112
	arch/$(ARCH)/src/mm/$(USARCH)/tlb.c \
113
	arch/$(ARCH)/src/mm/$(USARCH)/as.c \
113
	arch/$(ARCH)/src/mm/$(USARCH)/as.c \
114
	arch/$(ARCH)/src/cpu/$(USARCH)/cpu.c \
114
	arch/$(ARCH)/src/cpu/$(USARCH)/cpu.c \
115
 
115
 
-
 
116
ifeq ($(CONFIG_TSB),y)
-
 
117
ARCH_SOURCES += \
-
 
118
	arch/$(ARCH)/src/mm/$(USARCH)/tsb.c
-
 
119
endif
-
 
120
 
116
# specific to machine type
121
# specific to machine type
117
 
122
 
118
# sun4u-specific, not #ifdef'd yet in order to make the code compilable
123
# sun4u-specific, not #ifdef'd yet in order to make the code compilable
119
ARCH_SOURCES += \
124
ARCH_SOURCES += \
120
	arch/$(ARCH)/src/asm.S \
125
	arch/$(ARCH)/src/asm.S \
121
	arch/$(ARCH)/src/panic.S \
126
	arch/$(ARCH)/src/panic.S \
122
	arch/$(ARCH)/src/console.c \
127
	arch/$(ARCH)/src/console.c \
123
	arch/$(ARCH)/src/context.S \
128
	arch/$(ARCH)/src/context.S \
124
	arch/$(ARCH)/src/fpu_context.c \
129
	arch/$(ARCH)/src/fpu_context.c \
125
	arch/$(ARCH)/src/dummy.s \
130
	arch/$(ARCH)/src/dummy.s \
126
	arch/$(ARCH)/src/mm/cache.S \
131
	arch/$(ARCH)/src/mm/cache.S \
127
	arch/$(ARCH)/src/mm/frame.c \
132
	arch/$(ARCH)/src/mm/frame.c \
128
	arch/$(ARCH)/src/mm/page.c \
133
	arch/$(ARCH)/src/mm/page.c \
129
	arch/$(ARCH)/src/proc/scheduler.c \
134
	arch/$(ARCH)/src/proc/scheduler.c \
130
	arch/$(ARCH)/src/proc/thread.c \
135
	arch/$(ARCH)/src/proc/thread.c \
131
	arch/$(ARCH)/src/trap/trap.c \
136
	arch/$(ARCH)/src/trap/trap.c \
132
	arch/$(ARCH)/src/trap/exception.c \
137
	arch/$(ARCH)/src/trap/exception.c \
133
	arch/$(ARCH)/src/trap/interrupt.c \
138
	arch/$(ARCH)/src/trap/interrupt.c \
134
	arch/$(ARCH)/src/ddi/ddi.c \
139
	arch/$(ARCH)/src/ddi/ddi.c \
135
	arch/$(ARCH)/src/drivers/tick.c \
140
	arch/$(ARCH)/src/drivers/tick.c \
136
	arch/$(ARCH)/src/drivers/kbd.c \
141
	arch/$(ARCH)/src/drivers/kbd.c \
137
	arch/$(ARCH)/src/drivers/scr.c \
142
	arch/$(ARCH)/src/drivers/scr.c \
138
	arch/$(ARCH)/src/drivers/sgcn.c \
143
	arch/$(ARCH)/src/drivers/sgcn.c \
139
	arch/$(ARCH)/src/drivers/pci.c
144
	arch/$(ARCH)/src/drivers/pci.c
140
 
145
 
141
# sun4v-specific sources
146
# sun4v-specific sources
142
ifeq ($(USARCH),sun4v)
147
ifeq ($(USARCH),sun4v)
143
ARCH_SOURCES += \
148
ARCH_SOURCES += \
144
	arch/$(ARCH)/src/drivers/niagara.c \
149
	arch/$(ARCH)/src/drivers/niagara.c \
145
	arch/$(ARCH)/src/sun4v/md.c \
150
	arch/$(ARCH)/src/sun4v/md.c \
146
	arch/$(ARCH)/src/trap/sun4v/mmu.S
151
	arch/$(ARCH)/src/trap/sun4v/mmu.S
147
endif
152
endif
148
 
153
 
149
ifeq ($(CONFIG_SMP),y)
154
ifeq ($(CONFIG_SMP),y)
150
ARCH_SOURCES += \
155
ARCH_SOURCES += \
151
	arch/$(ARCH)/src/smp/ipi.c \
156
	arch/$(ARCH)/src/smp/ipi.c \
152
	arch/$(ARCH)/src/smp/$(USARCH)/smp.c
157
	arch/$(ARCH)/src/smp/$(USARCH)/smp.c
153
endif
158
endif
154
 
159
 
155
ifeq ($(CONFIG_TSB),y)
-
 
156
ARCH_SOURCES += \
-
 
157
	arch/$(ARCH)/src/mm/tsb.c
-
 
158
endif
-
 
159
 
160
 
160
ifdef CONFIG_Z8530
161
ifdef CONFIG_Z8530
161
ARCH_SOURCES += \
162
ARCH_SOURCES += \
162
	arch/$(ARCH)/src/drivers/fhc.c
163
	arch/$(ARCH)/src/drivers/fhc.c
163
endif
164
endif
164
 
165