| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 |
|
| 9 |
|
| 10 |
|
| 11 |
|
| 12 |
|
| 13 |
|
| 14 |
|
| 15 |
|
| 16 |
|
| 17 |
|
| 18 | boot := arch/parisc/boot
|
| 19 | KBUILD_IMAGE := $(boot)/bzImage
|
| 20 |
|
| 21 | CHECKFLAGS += -D__hppa__=1
|
| 22 |
|
| 23 | ifdef CONFIG_64BIT
|
| 24 | UTS_MACHINE := parisc64
|
| 25 | CHECKFLAGS += -D__LP64__=1
|
| 26 | LD_BFD := elf64-hppa-linux
|
| 27 | else
|
| 28 | LD_BFD := elf32-hppa-linux
|
| 29 | endif
|
| 30 |
|
| 31 |
|
| 32 | ifeq ($(ARCH),parisc64)
|
| 33 | KBUILD_DEFCONFIG := generic-64bit_defconfig
|
| 34 | CC_ARCHES := hppa64
|
| 35 | else
|
| 36 | KBUILD_DEFCONFIG := generic-32bit_defconfig
|
| 37 | CC_ARCHES := hppa hppa2.0 hppa1.1
|
| 38 | endif
|
| 39 |
|
| 40 | export LD_BFD
|
| 41 |
|
| 42 |
|
| 43 |
|
| 44 |
|
| 45 | CC_ARCHES_32 = hppa hppa2.0 hppa1.1
|
| 46 | CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux
|
| 47 | CROSS32_COMPILE := $(call cc-cross-prefix, \
|
| 48 | $(foreach a,$(CC_ARCHES_32), \
|
| 49 | $(foreach s,$(CC_SUFFIXES),$(a)-$(s)-)))
|
| 50 | CROSS32CC := $(CROSS32_COMPILE)gcc
|
| 51 | export CROSS32CC
|
| 52 |
|
| 53 |
|
| 54 | ifdef cross_compiling
|
| 55 | ifeq ($(CROSS_COMPILE),)
|
| 56 | CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux
|
| 57 | CROSS_COMPILE := $(call cc-cross-prefix, \
|
| 58 | $(foreach a,$(CC_ARCHES), \
|
| 59 | $(foreach s,$(CC_SUFFIXES),$(a)-$(s)-)))
|
| 60 | endif
|
| 61 | endif
|
| 62 |
|
| 63 | ifdef CONFIG_DYNAMIC_FTRACE
|
| 64 | ifdef CONFIG_64BIT
|
| 65 | NOP_COUNT := 8
|
| 66 | else
|
| 67 | NOP_COUNT := 5
|
| 68 | endif
|
| 69 |
|
| 70 | export CC_USING_RECORD_MCOUNT:=1
|
| 71 | export CC_USING_PATCHABLE_FUNCTION_ENTRY:=1
|
| 72 |
|
| 73 | KBUILD_AFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY=1
|
| 74 | KBUILD_CFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY=1 \
|
| 75 | -DFTRACE_PATCHABLE_FUNCTION_SIZE=$(NOP_COUNT)
|
| 76 |
|
| 77 | CC_FLAGS_FTRACE := -fpatchable-function-entry=$(NOP_COUNT),$(shell echo $$(($(NOP_COUNT)-1)))
|
| 78 | endif
|
| 79 |
|
| 80 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
|
| 81 |
|
| 82 | cflags-y := -pipe
|
| 83 |
|
| 84 |
|
| 85 |
|
| 86 | cflags-y += -mno-space-regs
|
| 87 |
|
| 88 |
|
| 89 | ifndef CONFIG_64BIT
|
| 90 | cflags-y += -mfast-indirect-calls
|
| 91 | endif
|
| 92 |
|
| 93 |
|
| 94 |
|
| 95 |
|
| 96 | cflags-y += -mdisable-fpregs
|
| 97 |
|
| 98 |
|
| 99 |
|
| 100 | ifdef CONFIG_MLONGCALLS
|
| 101 | KBUILD_CFLAGS_KERNEL += -mlong-calls
|
| 102 | endif
|
| 103 |
|
| 104 |
|
| 105 |
|
| 106 |
|
| 107 | ifndef CONFIG_64BIT
|
| 108 | KBUILD_CFLAGS_MODULE += -ffunction-sections
|
| 109 | endif
|
| 110 |
|
| 111 |
|
| 112 | cflags-$(CONFIG_PA7000) += -march=1.1 -mschedule=7100
|
| 113 | cflags-$(CONFIG_PA7200) += -march=1.1 -mschedule=7200
|
| 114 | cflags-$(CONFIG_PA7100LC) += -march=1.1 -mschedule=7100LC
|
| 115 | cflags-$(CONFIG_PA7300LC) += -march=1.1 -mschedule=7300
|
| 116 | cflags-$(CONFIG_PA8X00) += -march=2.0 -mschedule=8000
|
| 117 |
|
| 118 | KBUILD_CFLAGS += $(cflags-y)
|
| 119 | LIBGCC := $(shell $(CC) -print-libgcc-file-name)
|
| 120 | export LIBGCC
|
| 121 |
|
| 122 | libs-y += arch/parisc/lib/ $(LIBGCC)
|
| 123 |
|
| 124 | drivers-$(CONFIG_VIDEO) += arch/parisc/video/
|
| 125 |
|
| 126 | boot := arch/parisc/boot
|
| 127 |
|
| 128 | PALO := $(shell if (which palo 2>&1); then : ; \
|
| 129 | elif [ -x /sbin/palo ]; then echo /sbin/palo; \
|
| 130 | fi)
|
| 131 |
|
| 132 | PALOCONF := $(shell if [ -f $(srctree)/palo.conf ]; then echo $(srctree)/palo.conf; \
|
| 133 | else echo $(objtree)/palo.conf; \
|
| 134 | fi)
|
| 135 |
|
| 136 | palo lifimage: vmlinuz
|
| 137 | @if test ! -x "$(PALO)"; then \
|
| 138 | echo 'ERROR: Please install palo first (apt-get install palo)';\
|
| 139 | echo 'or build it from source and install it somewhere in your $$PATH';\
|
| 140 | false; \
|
| 141 | fi
|
| 142 | @if test ! -f "$(PALOCONF)"; then \
|
| 143 | cp $(srctree)/arch/parisc/defpalo.conf $(objtree)/palo.conf; \
|
| 144 | echo 'A generic palo config file ($(objtree)/palo.conf) has been created for you.'; \
|
| 145 | echo 'You should check it and re-run "make palo".'; \
|
| 146 | echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \
|
| 147 | false; \
|
| 148 | fi
|
| 149 | $(PALO) -f $(PALOCONF)
|
| 150 |
|
| 151 | BOOT_TARGETS = zImage Image palo lifimage
|
| 152 | INSTALL_TARGETS = zinstall install
|
| 153 |
|
| 154 | PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
|
| 155 |
|
| 156 |
|
| 157 | all: bzImage
|
| 158 |
|
| 159 | zImage: vmlinuz
|
| 160 | Image: vmlinux
|
| 161 |
|
| 162 | bzImage: vmlinux
|
| 163 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
| 164 |
|
| 165 | vmlinuz: bzImage
|
| 166 | $(OBJCOPY) $(boot)/bzImage $@
|
| 167 |
|
| 168 | ifeq ($(KBUILD_EXTMOD),)
|
| 169 |
|
| 170 |
|
| 171 |
|
| 172 |
|
| 173 |
|
| 174 |
|
| 175 | prepare: vdso_prepare
|
| 176 | vdso_prepare: prepare0
|
| 177 | ifdef CONFIG_64BIT
|
| 178 | $(Q)$(MAKE) $(build)=arch/parisc/kernel/vdso64 include/generated/vdso64-offsets.h
|
| 179 | $(if $(CONFIG_COMPAT),$(Q)$(MAKE) \
|
| 180 | $(build)=arch/parisc/kernel/vdso32 include/generated/vdso32-offsets.h)
|
| 181 | else
|
| 182 | $(Q)$(MAKE) $(build)=arch/parisc/kernel/vdso32 include/generated/vdso32-offsets.h
|
| 183 | endif
|
| 184 | endif
|
| 185 |
|
| 186 | ifdef CONFIG_64BIT
|
| 187 | vdso-install-y += arch/parisc/kernel/vdso64/vdso64.so
|
| 188 | vdso-install-$(CONFIG_COMPAT) += arch/parisc/kernel/vdso32/vdso32.so
|
| 189 | else
|
| 190 | vdso-install-y += arch/parisc/kernel/vdso32/vdso32.so
|
| 191 | endif
|
| 192 |
|
| 193 | install: KBUILD_IMAGE := vmlinux
|
| 194 | zinstall: KBUILD_IMAGE := vmlinuz
|
| 195 | install zinstall:
|
| 196 | $(call cmd,install)
|
| 197 |
|
| 198 | CLEAN_FILES += lifimage
|
| 199 | MRPROPER_FILES += palo.conf
|
| 200 |
|
| 201 | define archhelp
|
| 202 | @echo '* vmlinux - Uncompressed kernel image (./vmlinux)'
|
| 203 | @echo ' vmlinuz - Compressed kernel image (./vmlinuz)'
|
| 204 | @echo ' palo - Bootable image (./lifimage)'
|
| 205 | @echo ' install - Install uncompressed vmlinux kernel using'
|
| 206 | @echo ' (your) ~/bin/$(INSTALLKERNEL) or'
|
| 207 | @echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
|
| 208 | @echo ' copy to $$(INSTALL_PATH)'
|
| 209 | @echo ' zinstall - Install compressed vmlinuz kernel'
|
| 210 | endef
|
| 211 |
|
| 212 | archheaders:
|
| 213 | $(Q)$(MAKE) $(build)=arch/parisc/kernel/syscalls all
|