
Hi all, Under SDK 2.01a the following problem occured: Eventhough the linker is instructed to use addresses above 0x200 for variables (residing in scratch pad), it falsely allocates space that starts from address 0x0. That means address 0x0 is handled both for a variable declared in scratch pad, and by code that explicitly operates on that address. I have attached the files of a project that demostrate the problem. It can easily be demostrated if you run the simulation for 100cycles. Check the references of thread 0. Below is the code : Note that : 1) The linker is instructed of which address space to use for variables via the menu Build->Settings->Linker->Reserved Space for variables 2) The false assigment occurs only in optimize for speed, and optimize for size cases. 3) It only allocates falsely the buf array of thread 0 #include "ixp.h" void main(void) { __declspec(scratch) unsigned int buf[20]; unsigned int i; while (1) { for (i=0; i<20; i=i+1) buf[i] = 1; ctx_swap(); for (i=0; i<20; i=i+1) if (buf[i] == 1) buf[i] = 2; } } If anyone is interested on reproducing the problem i can send the whole project files. (I said If! :-) ) Thanks Yannis Charitakis haritak@ics.forth.gr