Hello, I think I have found a bug in mspgcc:
I'm using Windows XP I'm using prebuilt installer msp430-toolchain-win32-20030210.exe I use a MSP430F149 I compile every c file with the following rule : %.o: %.c msp430-gcc -g -mmcu=msp430x149 -O3 -c -I./include -o $@ $< dword is defined as follows: typedef unsigned long int dword; this is the code for cpu_demand (it doesn't do anything but the generated code is correct) dword cpu_demand(dword t, word taskcount, OS_Task_Specification *spec) { word i; dword sum=0,tmp; sum=0x12345678; return (dword) sum; } 000069fe <cpu_demand>: 69fe: 3e 40 78 56 mov #22136, r14 ;#0x5678 6a02: 3f 40 34 12 mov #4660, r15 ;#0x1234 6a06: 30 41 ret demand is a global variable defined as: dword demand; and its location is: 0000066c g O .bss 00000004 demand What I want is to execute the following line of code: demand=cpu_demand((dword) SHELL_PERIOD,1,(OS_Task_Specification *)taskspec); This results in the following code: 8768: 3c 40 86 86 mov #-31098,r12 ;#0x8686 876c: 1d 43 mov #1, r13 ;subst r3 with As==01 876e: 3e 40 20 03 mov #800, r14 ;#0x0320 8772: 0f 43 clr r15 ; 8774: b0 12 fe 69 call #27134 ;#0x69fe 8778: 82 4f 6c 06 mov r15, &0x066c ; 877c: 92 42 6c 06 6e 06 mov &0x066c,&0x066e ;src addr 0x066c 8782: 92 52 6e 06 6e 06 rla &0x066e ; 8788: 92 72 6e 06 6e 06 subc &0x066e,&0x066e ;src addr 0x066e 878e: b2 e3 6e 06 xor #-1, &0x066e ;subst r3 with As==11 Since the global defined var demand resides at 0x066c I expect that with the following prototype: extern dword cpu_demand(dword t, word taskcount, OS_Task_Specification *spec); the value of r14 (lsw) is written at 0x066c and the value of r15 (msw) at 0x066e This however not the case (see code) If I use the global var demand afterwards the value it contains is 0000:msw instead of msw:lsw Maybe I'm doing something realy stupid.... regards, Tjerk Hofmeijer t.j.hofmei...@cs.utwente.nl