Over on comp.arch.fpga, there has been a discussion (in the thread "exceeding 2GB limits in xilinx") about the memory models of Windoze versus Linux, and whether running a Windows program under wine would impose the Windows memory model on an application.
This all comes about because the newest Xilinx software says that to use their newest large devices, a computer needs a minimum of 3GB to run place and route! Apparently Windows allocates 2GB to user space and Linux allocates 3GB (just repeating what has been said by others there). It was mentioned that perhaps running the tools under Linux/wine might allow the tools to have access to the full 3GB available under Linux.
In any case, this made me curious, and I was hoping some of the more knowledgable people here might be able to explain how this works under wine.
Thanks, Duane
On Tue, Mar 12, 2002 at 09:09:12AM -0800, Duane Clark wrote:
Over on comp.arch.fpga, there has been a discussion (in the thread "exceeding 2GB limits in xilinx") about the memory models of Windoze versus Linux, and whether running a Windows program under wine would impose the Windows memory model on an application.
This all comes about because the newest Xilinx software says that to use their newest large devices, a computer needs a minimum of 3GB to run place and route! Apparently Windows allocates 2GB to user space and Linux allocates 3GB (just repeating what has been said by others there). It was mentioned that perhaps running the tools under Linux/wine might allow the tools to have access to the full 3GB available under Linux.
In any case, this made me curious, and I was hoping some of the more knowledgable people here might be able to explain how this works under wine.
I *think* this should use 3GB on Linux. After all RtlAllocateHeap calls VirtualAlloc which uses raw memory allocation without any 2GB restrictions to be seen anywhere. ICBVW, though.
I think that if Windows allocates 2GB only to user space, then that's it. If Linux allocs 3GB for that, then that's it, too. Wine only plays a minor role in that, AFAICS.
I *think* this should use 3GB on Linux. After all RtlAllocateHeap calls VirtualAlloc which uses raw memory allocation without any 2GB restrictions to be seen anywhere. ICBVW, though.
I think that if Windows allocates 2GB only to user space, then that's it. If Linux allocs 3GB for that, then that's it, too. Wine only plays a minor role in that, AFAICS.
This 3GB thing causes Borland C Builder 4's linker to lock up, it gets confused with virtual sizes > 2GB. I've had to hack my local copy of wine to get it to work. Perhaps it might be a good idea to have an option to restrict the size of what VirtualAlloc can return?
Duane Clark dclark@akamail.com writes:
This all comes about because the newest Xilinx software says that to use their newest large devices, a computer needs a minimum of 3GB to run place and route! Apparently Windows allocates 2GB to user space and Linux allocates 3GB (just repeating what has been said by others there). It was mentioned that perhaps running the tools under Linux/wine might allow the tools to have access to the full 3GB available under Linux.
In theory yes; however I think at this point Wine will only use 2Gb, because we are using mmap() to allocate memory and the mmap area starts at the 1Gb mark on Linux. It shouldn't be too hard to work around this limitation, I will give it a try.