Commit 117a3473 authored by Anton Blanchard's avatar Anton Blanchard

Merge samba.org:/scratch/anton/linux-2.5

into samba.org:/scratch/anton/linux-2.5_ppc64
parents 42382f86 c7387f9f
...@@ -13,10 +13,10 @@ ...@@ -13,10 +13,10 @@
# Adjusted for PPC64 by Tom Gall # Adjusted for PPC64 by Tom Gall
# #
KERNELLOAD = 0xc000000000000000 KERNELLOAD := 0xc000000000000000
LDFLAGS := -m elf64ppc LDFLAGS := -m elf64ppc
LDFLAGS_vmlinux = -Bstatic -e $(KERNELLOAD) -Ttext $(KERNELLOAD) LDFLAGS_vmlinux := -Bstatic -e $(KERNELLOAD) -Ttext $(KERNELLOAD)
LDFLAGS_BLOB := --format binary --oformat elf64-powerpc LDFLAGS_BLOB := --format binary --oformat elf64-powerpc
CFLAGS += -msoft-float -pipe -Wno-uninitialized -mminimal-toc \ CFLAGS += -msoft-float -pipe -Wno-uninitialized -mminimal-toc \
-mtraceback=full -mcpu=power4 -mtraceback=full -mcpu=power4
...@@ -29,21 +29,19 @@ core-y += arch/ppc64/mm/ ...@@ -29,21 +29,19 @@ core-y += arch/ppc64/mm/
core-$(CONFIG_XMON) += arch/ppc64/xmon/ core-$(CONFIG_XMON) += arch/ppc64/xmon/
drivers-$(CONFIG_OPROFILE) += arch/ppc64/oprofile/ drivers-$(CONFIG_OPROFILE) += arch/ppc64/oprofile/
makeboot =$(Q)$(MAKE) -f scripts/Makefile.build obj=arch/ppc64/boot $(1) boot := arch/ppc64/boot
boottarget-$(CONFIG_PPC_PSERIES) := zImage zImage.initrd boottarget-$(CONFIG_PPC_PSERIES) := zImage zImage.initrd
boottarget-$(CONFIG_PPC_ISERIES) := vmlinux.sminitrd vmlinux.initrd vmlinux.sm boottarget-$(CONFIG_PPC_ISERIES) := vmlinux.sminitrd vmlinux.initrd vmlinux.sm
$(boottarget-y): vmlinux $(boottarget-y): vmlinux
$(call makeboot,arch/ppc64/boot/$@) $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
%_config: arch/ppc64/configs/%_defconfig %_config: arch/ppc64/configs/%_defconfig
rm -f .config arch/ppc64/defconfig rm -f .config arch/ppc64/defconfig
cp -f arch/ppc64/configs/$(@:config=defconfig) arch/ppc64/defconfig cp -f arch/ppc64/configs/$(@:config=defconfig) arch/ppc64/defconfig
archclean: archclean:
$(Q)$(MAKE) -f scripts/Makefile.clean obj=arch/ppc64/boot $(Q)$(MAKE) $(clean)=$(boot)
archmrproper:
prepare: include/asm-ppc64/offsets.h prepare: include/asm-ppc64/offsets.h
......
...@@ -79,7 +79,7 @@ $(obj)/vmlinux.initrd: vmlinux $(obj)/addRamDisk $(obj)/ramdisk.image.gz System. ...@@ -79,7 +79,7 @@ $(obj)/vmlinux.initrd: vmlinux $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.
$(obj)/vmlinux.sminitrd: $(obj)/vmlinux.sm $(obj)/addRamDisk $(obj)/ramdisk.image.gz FORCE $(obj)/vmlinux.sminitrd: $(obj)/vmlinux.sm $(obj)/addRamDisk $(obj)/ramdisk.image.gz FORCE
$(call if_changed,ramdisk) $(call if_changed,ramdisk)
$(obj)/sysmap.o: System.map $(obj)/piggyback $(obj)/sysmap.o: System.map $(obj)/piggyback FORCE
$(call if_changed,piggy) $(call if_changed,piggy)
addsection = $(BOOTOBJCOPY) $(1) \ addsection = $(BOOTOBJCOPY) $(1) \
...@@ -92,7 +92,7 @@ quiet_cmd_addnote = ADDNOTE $@ ...@@ -92,7 +92,7 @@ quiet_cmd_addnote = ADDNOTE $@
quiet_cmd_piggy = PIGGY $@ quiet_cmd_piggy = PIGGY $@
cmd_piggy = $(obj)/piggyback $(@:.o=) < $< | $(BOOTAS) -o $@ cmd_piggy = $(obj)/piggyback $(@:.o=) < $< | $(BOOTAS) -o $@
$(call gz-sec, $(required)): $(obj)/kernel-%.gz: % $(call gz-sec, $(required)): $(obj)/kernel-%.gz: % FORCE
$(call if_changed,gzip) $(call if_changed,gzip)
$(obj)/kernel-initrd.gz: $(obj)/ramdisk.image.gz $(obj)/kernel-initrd.gz: $(obj)/ramdisk.image.gz
...@@ -101,7 +101,7 @@ $(obj)/kernel-initrd.gz: $(obj)/ramdisk.image.gz ...@@ -101,7 +101,7 @@ $(obj)/kernel-initrd.gz: $(obj)/ramdisk.image.gz
$(call src-sec, $(required) $(initrd)): $(obj)/kernel-%.c: $(obj)/kernel-%.gz $(call src-sec, $(required) $(initrd)): $(obj)/kernel-%.c: $(obj)/kernel-%.gz
touch $@ touch $@
$(call obj-sec, $(required) $(initrd)): $(obj)/kernel-%.o: $(obj)/kernel-%.c $(call obj-sec, $(required) $(initrd)): $(obj)/kernel-%.o: $(obj)/kernel-%.c FORCE
$(call if_changed_dep,bootcc) $(call if_changed_dep,bootcc)
$(call addsection, $@) $(call addsection, $@)
......
...@@ -208,6 +208,12 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, ...@@ -208,6 +208,12 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
} else { } else {
childregs->gpr[1] = usp; childregs->gpr[1] = usp;
p->thread.regs = childregs; p->thread.regs = childregs;
if (clone_flags & CLONE_SETTLS) {
if (test_thread_flag(TIF_32BIT))
childregs->gpr[2] = childregs->gpr[6];
else
childregs->gpr[13] = childregs->gpr[6];
}
} }
childregs->gpr[3] = 0; /* Result from fork() */ childregs->gpr[3] = 0; /* Result from fork() */
sp -= STACK_FRAME_OVERHEAD; sp -= STACK_FRAME_OVERHEAD;
...@@ -304,7 +310,7 @@ int sys_clone(unsigned long clone_flags, unsigned long p2, unsigned long p3, ...@@ -304,7 +310,7 @@ int sys_clone(unsigned long clone_flags, unsigned long p2, unsigned long p3,
if (clone_flags & (CLONE_PARENT_SETTID | CLONE_CHILD_SETTID | if (clone_flags & (CLONE_PARENT_SETTID | CLONE_CHILD_SETTID |
CLONE_CHILD_CLEARTID)) { CLONE_CHILD_CLEARTID)) {
parent_tidptr = p3; parent_tidptr = p3;
child_tidptr = p4; child_tidptr = p5;
if (test_thread_flag(TIF_32BIT)) { if (test_thread_flag(TIF_32BIT)) {
parent_tidptr &= 0xffffffff; parent_tidptr &= 0xffffffff;
child_tidptr &= 0xffffffff; child_tidptr &= 0xffffffff;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment