Re: Merge headerfiles for m68k and m68knommu to arch/m68k/include/asm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 9 Dec 2008, Sam Ravnborg wrote:
On Tue, Dec 09, 2008 at 12:26:05AM +0100, Arnd Bergmann wrote:
On Tuesday 09 December 2008, Geert Uytterhoeven wrote:
I have used the following include guard:

#ifdef __uClinux__
#include "atomic_no.h"
#else
#include "atomic_mm.h"
#endif

gcc -E -dM for the two compilers revealed that this was the
only symbol that differed.

I think you can share a toolchain for m68k and m68knommu, at least for the
kernel (I used my plain m68k toolchain when experimenting with m68knommu for
Amiga).

With the above construct we do the "right thing" also for
headers exported to userspace.
But actually none of the headers using the above are
subject for export at the moment so we could use a
CONFIG_ symbol for the same.

So I prefer to just check CONFIG_MMU.

Some of them are, by means of include/asm-generic/Kbuild.asm, e.g.
unistd.h!

Interesting, I'd expect unistd.h to be the same!

Ah, it's the restart_syscall:

--- include/asm-m68k/unistd.h	2008-10-18 10:34:15.000000000 +0200
+++ arch/m68knommu/include/asm/unistd.h	2008-10-12 14:08:01.000000000 +0200
@@ -5,6 +5,7 @@
  * This file contains the system call numbers.
  */
 
+#define __NR_restart_syscall      0
 #define __NR_exit		  1
 #define __NR_fork		  2
 #define __NR_read		  3
@@ -359,9 +360,6 @@
 #define __ARCH_WANT_SYS_SIGPROCMASK
 #define __ARCH_WANT_SYS_RT_SIGACTION
 
-/* whitelist for checksyscalls */
-#define __IGNORE_restart_syscall
-
 /*
  * "Conditional" syscalls
  *

Sorry, I don't know about syscall restart handling, and why it differs. Anyone
who can enlighten me?

I was fooled by make headers_check showing no errros.
But it turns out that headers_check does not recognize
includes made with "".

So I will update the patch to include revevant *_{no,mm}.h files
in Kbuild.


I'm not sure if it's entirely correct, but I think you can use

#ifdef __KERNEL__
# ifdef CONFIG_MMU
#  include "atomic_mm.h
# else
#  include "atomic_no.h
# endif
#else
# ifndef __uClinux__
#  include "atomic_mm.h
# else
#  include "atomic_no.h
# endif
#endif

Can someone with a shared (m68k/m68knommu) please check if
__uClinux__ is only set in the m68knommu case.
                 ^^^^
		 always and only

Use:

    touch foo.h; gcc -E -dM

to see what is defined by the compiler.
You will also need to specify if this is for m68k or m68knommu.

Still, I don't see why the compiler needs to be aware of being configured for
m68k or m68knommu, so IMHO this is a very fragile test...

What are the other exported headers that differ?

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux