In a MP program the stack can contain only data private to the program that can never be exported to other programs. This way all stacks of all programs could start on the same virtual address.
This causes serious side effects. Consider following example:
void foobar(char *name)
{
struct FileInfoBlock fib;
TEXT buffer[108];
BPTR fh;
strcpy(buffer, name);
strcat(buffer, ".txt");
Printf("Open file %s\n", buffer);
fh = Open(name, MODE_NEWFILE);
Write(fh, buffer, sizeof(buffer));
ExamineFH(fh, &fib);
}
Looks like you have to fix dos.library first. You are going to have other indirect implications. Think about this:
void PlaySound(BYTE *buffer, LONG bufferlength)
{
io->Command = CMD_WRITE;
io->Buffer = buffer;
io->Length = bufferlength;
DoIO(io);
}
Ooops? You must document what API calls can take data stored on the stack. This is why I dont like MEMF_PUBLIC crazyness.