Index: uspace/kbd/Makefile
===================================================================
--- uspace/kbd/Makefile	(revision 0166e99928c90c6d2e990c69a7aaf84a6f93c6c0)
+++ uspace/kbd/Makefile	(revision 9141377d3aec1027ed16cfa6e2085fc028ba13f7)
@@ -50,16 +50,30 @@
 
 ifeq ($(ARCH), ia32)
-	ARCH_SOURCES += arch/$(ARCH)/src/mouse.c
+	ARCH_SOURCES += \
+		arch/$(ARCH)/src/mouse.c \
+		arch/$(ARCH)/src/scanc.c
+	GENARCH_SOURCES = \
+		genarch/src/kbd.c
 	CFLAGS += -DMOUSE_ENABLED
 endif
 ifeq ($(ARCH), amd64)
-	ARCH_SOURCES += arch/$(ARCH)/src/mouse.c
+	ARCH_SOURCES += \
+		arch/$(ARCH)/src/mouse.c \
+		arch/$(ARCH)/src/scanc.c
+	GENARCH_SOURCES = \
+		genarch/src/kbd.c
 	CFLAGS += -DMOUSE_ENABLED
 endif
-
+ifeq ($(ARCH), sparc64)
+	ARCH_SOURCES += \
+		arch/$(ARCH)/src/scanc.c
+	GENARCH_SOURCES = \
+		genarch/src/kbd.c
+endif
 
 
 GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES)))
 ARCH_OBJECTS := $(addsuffix .o,$(basename $(ARCH_SOURCES)))
+GENARCH_OBJECTS := $(addsuffix .o,$(basename $(GENARCH_SOURCES)))
 
 .PHONY: all clean depend disasm links
@@ -71,13 +85,14 @@
 links:
 	ln -sfn ../arch/$(ARCH)/include include/arch
+	ln -sfn ../genarch/include include/genarch
 
 clean:
-	-rm -f $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm Makefile.depend include/arch
+	-rm -f $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm Makefile.depend include/arch include/genarch
 
 depend:
 	$(CC) $(DEFS) $(CFLAGS) -M $(SOURCES) > Makefile.depend
 
-$(OUTPUT): $(ARCH_OBJECTS) $(GENERIC_OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(ARCH)/_link.ld -e __entry_driver $(GENERIC_OBJECTS) $(ARCH_OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+$(OUTPUT): $(ARCH_OBJECTS) $(GENERIC_OBJECTS) $(GENARCH_OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(ARCH)/_link.ld -e __entry_driver $(GENERIC_OBJECTS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
 
 disasm:
