Hi Frank,
good to hear that you are further experimenting with Genode.
Your observation is not surprising because both ARM9 and IA32 (w/o PAE) lack the No-Execute (NX) bit in the page table. By default, data on these platforms is always executable. On ARM1139 however, the execute permission must be explicitely granted. When extending the support for newer ARM platforms, we will revisit the page-table attributes of dataspaces. We haven't done so yet because we have not settled on a API-level design for managing those bits (things like the a feature for downgrading permissions of dataspaces come in mind). Until we support the NX bit, your suggestion comes as a useful interim solution.
Best regards Norman