Please someone explain:

1. How does having the "NX" bit enabled for non-executable pages differ from what "Solar Designer"'s intel Linux patch (released quite a few years ago now) does? Specifically, this seems to be a hardware method of doing the same thing, which strikes me as a bit silly if you can do it in software on existing machines (unless there is a performance difference)

2. Does having the "NX" bit enabled mitigate "return into libc" stack-smashing attacks in Linux or Win32(/Win64) ? If not, it's not very useful, is it, as there are many existing exploits which use "return into libc" ?

3. What non-AMD compatible hardware already supports this functionality (if any), and is it used by other OS already (example Macos X, Solaris ?)