Subversion Repositories HelenOS

Rev

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

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