Subversion Repositories HelenOS

Rev

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

Rev 3783 Rev 3798
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 += -DUS
90
	DEFS += -DUS
90
endif
91
endif
91
 
92
 
92
ifeq ($(MACHINE),us3)
93
ifeq ($(MACHINE),us3)
93
	USARCH = sun4u
94
	USARCH = sun4u
-
 
95
	DEFS += -DSUN4U
94
	DEFS += -DUS3
96
	DEFS += -DUS3
95
endif
97
endif
96
 
98
 
97
ifeq ($(MACHINE),sun4v)
99
ifeq ($(MACHINE),sun4v)
98
	USARCH = sun4v
100
	USARCH = sun4v
99
	DEFS += -DSUN4V
101
	DEFS += -DSUN4V
100
	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
101
endif
103
endif
102
 
104
 
103
 
105
 
104
# 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
105
ARCH_SOURCES = \
107
ARCH_SOURCES = \
106
	arch/$(ARCH)/src/$(USARCH)/start.S \
108
	arch/$(ARCH)/src/$(USARCH)/start.S \
107
	arch/$(ARCH)/src/trap/$(USARCH)/trap_table.S \
109
	arch/$(ARCH)/src/trap/$(USARCH)/trap_table.S \
108
	arch/$(ARCH)/src/$(USARCH)/asm.S \
110
	arch/$(ARCH)/src/$(USARCH)/asm.S \
109
	arch/$(ARCH)/src/$(USARCH)/sparc64.c \
111
	arch/$(ARCH)/src/$(USARCH)/sparc64.c \
110
	arch/$(ARCH)/src/mm/$(USARCH)/tlb.c \
112
	arch/$(ARCH)/src/mm/$(USARCH)/tlb.c \
111
	arch/$(ARCH)/src/cpu/$(USARCH)/cpu.c
113
	arch/$(ARCH)/src/cpu/$(USARCH)/cpu.c
112
 
114
 
113
# specific to machine type
115
# specific to machine type
114
 
116
 
115
# sun4u-specific, not #ifdef'd yet in order to make the code compilable
117
# sun4u-specific, not #ifdef'd yet in order to make the code compilable
116
ARCH_SOURCES += \
118
ARCH_SOURCES += \
117
	arch/$(ARCH)/src/asm.S \
119
	arch/$(ARCH)/src/asm.S \
118
	arch/$(ARCH)/src/panic.S \
120
	arch/$(ARCH)/src/panic.S \
119
	arch/$(ARCH)/src/console.c \
121
	arch/$(ARCH)/src/console.c \
120
	arch/$(ARCH)/src/context.S \
122
	arch/$(ARCH)/src/context.S \
121
	arch/$(ARCH)/src/fpu_context.c \
123
	arch/$(ARCH)/src/fpu_context.c \
122
	arch/$(ARCH)/src/dummy.s \
124
	arch/$(ARCH)/src/dummy.s \
123
	arch/$(ARCH)/src/mm/as.c \
125
	arch/$(ARCH)/src/mm/as.c \
124
	arch/$(ARCH)/src/mm/cache.S \
126
	arch/$(ARCH)/src/mm/cache.S \
125
	arch/$(ARCH)/src/mm/frame.c \
127
	arch/$(ARCH)/src/mm/frame.c \
126
	arch/$(ARCH)/src/mm/page.c \
128
	arch/$(ARCH)/src/mm/page.c \
127
	arch/$(ARCH)/src/proc/scheduler.c \
129
	arch/$(ARCH)/src/proc/scheduler.c \
128
	arch/$(ARCH)/src/proc/thread.c \
130
	arch/$(ARCH)/src/proc/thread.c \
129
	arch/$(ARCH)/src/trap/mmu.S \
131
	arch/$(ARCH)/src/trap/mmu.S \
130
	arch/$(ARCH)/src/trap/trap.c \
132
	arch/$(ARCH)/src/trap/trap.c \
131
	arch/$(ARCH)/src/trap/exception.c \
133
	arch/$(ARCH)/src/trap/exception.c \
132
	arch/$(ARCH)/src/trap/interrupt.c \
134
	arch/$(ARCH)/src/trap/interrupt.c \
133
	arch/$(ARCH)/src/ddi/ddi.c \
135
	arch/$(ARCH)/src/ddi/ddi.c \
134
	arch/$(ARCH)/src/drivers/tick.c \
136
	arch/$(ARCH)/src/drivers/tick.c \
135
	arch/$(ARCH)/src/drivers/kbd.c \
137
	arch/$(ARCH)/src/drivers/kbd.c \
136
	arch/$(ARCH)/src/drivers/scr.c \
138
	arch/$(ARCH)/src/drivers/scr.c \
137
	arch/$(ARCH)/src/drivers/sgcn.c \
139
	arch/$(ARCH)/src/drivers/sgcn.c \
138
	arch/$(ARCH)/src/drivers/pci.c
140
	arch/$(ARCH)/src/drivers/pci.c
139
 
141
 
140
# sun4v-specific sources
142
# sun4v-specific sources
141
ifeq ($(USARCH),sun4v)
143
ifeq ($(USARCH),sun4v)
142
ARCH_SOURCES += \
144
ARCH_SOURCES += \
143
	arch/$(ARCH)/src/drivers/niagara.c \
145
	arch/$(ARCH)/src/drivers/niagara.c \
144
	arch/$(ARCH)/src/sun4v/md.c
146
	arch/$(ARCH)/src/sun4v/md.c
145
endif
147
endif
146
 
148
 
147
ifeq ($(CONFIG_SMP),y)
149
ifeq ($(CONFIG_SMP),y)
148
ARCH_SOURCES += \
150
ARCH_SOURCES += \
149
	arch/$(ARCH)/src/smp/ipi.c \
151
	arch/$(ARCH)/src/smp/ipi.c \
150
	arch/$(ARCH)/src/smp/$(USARCH)/smp.c
152
	arch/$(ARCH)/src/smp/$(USARCH)/smp.c
151
endif
153
endif
152
 
154
 
153
ifeq ($(CONFIG_TSB),y)
155
ifeq ($(CONFIG_TSB),y)
154
ARCH_SOURCES += \
156
ARCH_SOURCES += \
155
	arch/$(ARCH)/src/mm/tsb.c
157
	arch/$(ARCH)/src/mm/tsb.c
156
endif
158
endif
157
 
159
 
158
ifdef CONFIG_Z8530
160
ifdef CONFIG_Z8530
159
ARCH_SOURCES += \
161
ARCH_SOURCES += \
160
	arch/$(ARCH)/src/drivers/fhc.c
162
	arch/$(ARCH)/src/drivers/fhc.c
161
endif
163
endif
162
 
164