hey zusammen
Irgenwie hab ich ein problem das ich überhaupt nich begreife wieso...
Das kompeliere ich alles schön mit gpp und krieg beim Pic.cpp den warning: port.h:5: warning: inline function 'void outportb(unsigned int, unsigned char)' used but never defined.
danach beim zusammen linken geht garnichts mehr
Pic.o(.text+0x8):Pic.cpp: undefined reference to '__Z8outportbjh'
...
Höchst wahrscheinlich liegts an meinen C++ kenntnisse
Irgenwie hab ich ein problem das ich überhaupt nich begreife wieso...
Code: [Auswählen]
//Port.h
#ifndef PORT_INCLUDE
#define PORT_INCLUDE
inline unsigned char inportb(unsigned int port) ;
inline void outportb(unsigned int port,unsigned char value) ;
inline void outportw(unsigned int port,unsigned int value) ;
#endif
Code: [Auswählen]
//Port.cpp
#include "port.h"
inline unsigned char inportb(unsigned int port) /* Input a byte from a port */
{
unsigned char ret;
asm volatile ("inb %%dx,%%al":"=a" (ret):"d" (port));
return ret;
}
inline void outportb(unsigned int port,unsigned char value) /* Output a byte to a port */
{
asm volatile ("outb %%al,%%dx"::"d" (port), "a" (value));
}
inline void outportw(unsigned int port,unsigned int value) /* Output a word to a port */
{
asm volatile ("outw %%ax,%%dx"::"d" (port), "a" (value));
}
Code: [Auswählen]
//Pic.cpp
#include "port.h"
#include "pic.h"
void IntitPic(void)
{
outportb(M_PIC, ICW1); /* Start 8259 initialization */
outportb(S_PIC, ICW1);
outportb(M_PIC+1, M_VEC); /* Base interrupt vector */
outportb(S_PIC+1, S_VEC);
outportb(M_PIC+1, 1<<2); /* Bitmask for cascade on IRQ 2 */
outportb(S_PIC+1, 2); /* Cascade on IRQ 2 */
outportb(M_PIC+1, ICW4); /* Finish 8259 initialization */
outportb(S_PIC+1, ICW4);
outportb(M_IMR, 0xff); /* Mask all interrupts */
outportb(S_IMR, 0xff);
}
Code: [Auswählen]
//Pic.h
#ifndef PIC_H
#define PIC_H
void IntitPic(void);
#define M_PIC 0x20 /* I/O for master PIC */
#define M_IMR 0x21 /* I/O for master IMR */
#define S_PIC 0xA0 /* I/O for slave PIC */
#define S_IMR 0xA1 /* I/O for slace IMR */
#define ICW1 0x11 /* Cascade, Edge triggered */
/* ICW2 is vector */
/* ICW3 is slave bitmap or number */
#define ICW4 0x01 /* 8088 mode */
#define M_VEC 0x68 /* Vector for master */
#define S_VEC 0x70 /* Vector for slave */
#endif
Das kompeliere ich alles schön mit gpp und krieg beim Pic.cpp den warning: port.h:5: warning: inline function 'void outportb(unsigned int, unsigned char)' used but never defined.
danach beim zusammen linken geht garnichts mehr

Pic.o(.text+0x8):Pic.cpp: undefined reference to '__Z8outportbjh'
...
Höchst wahrscheinlich liegts an meinen C++ kenntnisse


Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
