@behrooz is correct. Unfortunately uname requires you to know architectures. Actually, I was looking for a list of architectures and I found this article that answers your question. In regards to uname -m:

x86_64 GNU/Linux indicates that you've a 64bit Linux kernel running. If you use see i386/i486/i586/i686 it is a 32 bit kernel.

Does the lm flag simply mean the CPU supports 64-bit or does it mean that it's running in 64-bit. I recommend relying on the arch knowing that it will be x86_64 for 64-bit or i?86 for 32-bit.
–
penguin359May 2 '11 at 21:45

@xeno so then is can't be used to determine the kernel architecture.
–
penguin359May 2 '11 at 23:58

@penguin359 no, was that unclear in the answer?
–
xenoterracide♦May 3 '11 at 8:55

@xeno When I first read your answer, I took it as implying an alternative to looking at the kernel architecture. On a re-read, I do notice you were specifying the CPU architecture, but I wanted to clarify that that does not help with the user's question which is specifically whether the kernel is 64-bit.
–
penguin359May 3 '11 at 11:01

That's the system architecture, which isn't always the kernel architecture. See this answer at SU for more variations.
–
GillesMay 4 '11 at 9:47

Theoretically, they may differ, but is there a chance they would mismatch on any real-life installation?
–
minaevMay 5 '11 at 11:30

Some distributions ship an amd64 kernel on the x86 version. I don't know how many people use them, I checked Debian popcon but it doesn't correlate between the various stats. I think the main use case is having a 32-bit main OS and running a 64-bit OS in a chroot or in a VM.
–
GillesMay 5 '11 at 20:00

@Gilles You're gonna love what you'll read about the new x32 architecture, If I'm not too late, off course. wiki.debian.org/X32Port
–
BehroozOct 27 '13 at 7:41