というファイルがあります。このファイルでは、アセンブリからidt.c
関数を呼び出す必要があります。idt_load
これで、アセンブリファイルから変数にアクセスする必要がidtp
あり、変数がidt.cで宣言されていることを除いて、これは問題なく機能します。
リンカはidt_loadが未定義であるか、idtpが未定義であると通知するため、これは機能しません。どうすればこれを機能させることができますか?
idt.cの関連部分
struct idt_entry
{
unsigned short base_lo;
unsigned short sel;
unsigned char always0;
unsigned char flags;
unsigned short base_hi;
} __attribute__((packed));
struct idt_ptr
{
unsigned short limit;
unsigned int base;
} __attribute__((packed));
struct idt_entry idt[256];
struct idt_ptr idtp;
extern void idt_load();
//Later in the code...
idt_load();
idt.asm
global idt_load
extern idtp
idt_load:
lidt [idtp]
ret