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




Reply via email to