Вот процедура, на которую ругается (алгоритм отвратный и незаконченный

)
-------------------------------------------------------------------------------------
void line (unsigned int x0, unsigned int y0,
unsigned int x1, unsigned int y1, unsigned int c){
unsigned int x = x0;
unsigned int y = y0;
int dx = x1 - x0;
int dy = y1 - y0;
int k = 0;
if (dx==0){
while (y != y1+1){
putpixel(x,y,c);
y++;
}
return;
}
if (dy==0){
while (x != x1+1){
putpixel(x,y,c);
x++;
}
return;
}
// если вышеперечисленные условия не выполняются (иначе будет деление на 0), то
// считаем коэф-т наклона линии
if (dy>=dx){
k = dy/dx;
while (y != y1+1){
x = x0 + (y-y0)/k;
putpixel(x,y,c);
y++;
}
return;
}
else {
k = dx/dy;
while (x != x1+1){
y = y0 + (x-x0)/k;
putpixel(x,y,c);
x++;
}
return;
}
}
-------------------------------------------------------------------------------------
+ makefile
-------------------------------------------------------------------------------------
NAME = uart_test
CC = arm-elf-gcc
LD = arm-elf-ld -v
AR = arm-elf-ar
AS = arm-elf-as
CP = arm-elf-objcopy
OD = arm-elf-objdump
CFLAGS = -c -mthumb-interwork -O3
AFLAGS = -ahls -mapcs-32 -o crt.o
LFLAGS = -Map main.map -Tflash.cmd
CPFLAGS = -O ihex
ODFLAGS = -dStl -x --syms -S
OBJECTS = crt.o crc16.o VIClowlevel.o uart.o main.o
all: main.out
@ echo "...copying"
$(CP) $(CPFLAGS) main.out main.hex
$(OD) $(ODFLAGS) main.out > main.dmp
clean:
-rm $(OBJECTS) crt.lst main.lst main.out main.hex main.map main.dmp
main.out: $(OBJECTS) flash.cmd
@ echo "..linking"
$(LD) $(LFLAGS) -o main.out $(OBJECTS)
crc16.o: crc16.c
@ echo ".compiling"
$(CC) $(CFLAGS) crc16.c
VIClowlevel.o: VIClowlevel.c
@ echo ".compiling"
$(CC) $(CFLAGS) VIClowlevel.c
crt.o: crt.s
@ echo ".assembling"
$(AS) $(AFLAGS) crt.o crt.s > crt.lst
main.o: main.c
@ echo ".compiling"
$(CC) $(CFLAGS) main.c
uart.o: uart.c
@ echo ".compiling"
$(CC) $(CFLAGS) uart.c