Make console charset translation optional

By turning off the new CONSOLE_TRANSLATIONS option and dropping the
associated code and tables from the kernel, we can save about 7KiB.

Taken from linux-tiny project by Tim Bird and mangled further by dwmw2.

Signed-off-by: Tim Bird <tim.bird@am.sony.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>

+44 -3
+8
drivers/char/Kconfig
··· 36 If unsure, say Y, or else you won't be able to do much with your new 37 shiny Linux system :-) 38 39 config VT_CONSOLE 40 bool "Support for console on virtual terminal" if EMBEDDED 41 depends on VT
··· 36 If unsure, say Y, or else you won't be able to do much with your new 37 shiny Linux system :-) 38 39 + config CONSOLE_TRANSLATIONS 40 + depends on VT 41 + default y 42 + bool "Enable character translations in console" if EMBEDDED 43 + ---help--- 44 + This enables support for font mapping and Unicode translation 45 + on virtual consoles. 46 + 47 config VT_CONSOLE 48 bool "Support for console on virtual terminal" if EMBEDDED 49 depends on VT
+2 -2
drivers/char/Makefile
··· 12 obj-$(CONFIG_LEGACY_PTYS) += pty.o 13 obj-$(CONFIG_UNIX98_PTYS) += pty.o 14 obj-y += misc.o 15 - obj-$(CONFIG_VT) += vt_ioctl.o vc_screen.o consolemap.o \ 16 - consolemap_deftbl.o selection.o keyboard.o 17 obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o 18 obj-$(CONFIG_AUDIT) += tty_audit.o 19 obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
··· 12 obj-$(CONFIG_LEGACY_PTYS) += pty.o 13 obj-$(CONFIG_UNIX98_PTYS) += pty.o 14 obj-y += misc.o 15 + obj-$(CONFIG_VT) += vt_ioctl.o vc_screen.o selection.o keyboard.o 16 + obj-$(CONFIG_CONSOLE_TRANSLATIONS) += consolemap.o consolemap_deftbl.o 17 obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o 18 obj-$(CONFIG_AUDIT) += tty_audit.o 19 obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
+1 -1
drivers/char/vt.c
··· 2208 c = 0xfffd; 2209 tc = c; 2210 } else { /* no utf or alternate charset mode */ 2211 - tc = vc->vc_translate[vc->vc_toggle_meta ? (c | 0x80) : c]; 2212 } 2213 2214 param.c = tc;
··· 2208 c = 0xfffd; 2209 tc = c; 2210 } else { /* no utf or alternate charset mode */ 2211 + tc = vc_translate(vc, c); 2212 } 2213 2214 param.c = tc;
+14
include/linux/consolemap.h
··· 3 * 4 * Interface between console.c, selection.c and consolemap.c 5 */ 6 #define LAT1_MAP 0 7 #define GRAF_MAP 1 8 #define IBMPC_MAP 2 ··· 13 14 #include <linux/types.h> 15 16 struct vc_data; 17 18 extern u16 inverse_translate(struct vc_data *conp, int glyph, int use_unicode); ··· 22 extern u32 conv_8bit_to_uni(unsigned char c); 23 extern int conv_uni_to_8bit(u32 uni); 24 void console_map_init(void);
··· 3 * 4 * Interface between console.c, selection.c and consolemap.c 5 */ 6 + #ifndef __LINUX_CONSOLEMAP_H__ 7 + #define __LINUX_CONSOLEMAP_H__ 8 + 9 #define LAT1_MAP 0 10 #define GRAF_MAP 1 11 #define IBMPC_MAP 2 ··· 10 11 #include <linux/types.h> 12 13 + #ifdef CONFIG_CONSOLE_TRANSLATIONS 14 struct vc_data; 15 16 extern u16 inverse_translate(struct vc_data *conp, int glyph, int use_unicode); ··· 18 extern u32 conv_8bit_to_uni(unsigned char c); 19 extern int conv_uni_to_8bit(u32 uni); 20 void console_map_init(void); 21 + #else 22 + #define inverse_translate(conp, glyph, uni) ((uint16_t)glyph) 23 + #define set_translate(m, vc) ((unsigned short *)NULL) 24 + #define conv_uni_to_pc(conp, ucs) ((int) (ucs > 0xff ? -1: ucs)) 25 + #define conv_8bit_to_uni(c) ((uint32_t)(c)) 26 + #define conv_uni_to_8bit(c) ((int) ((c) & 0xff)) 27 + #define console_map_init(c) do { ; } while (0) 28 + #endif /* CONFIG_CONSOLE_TRANSLATIONS */ 29 + 30 + #endif /* __LINUX_CONSOLEMAP_H__ */
+19
include/linux/vt_kern.h
··· 12 #include <linux/mutex.h> 13 #include <linux/console_struct.h> 14 #include <linux/mm.h> 15 16 /* 17 * Presently, a lot of graphics programs do not restore the contents of ··· 55 struct tty_struct; 56 int tioclinux(struct tty_struct *tty, unsigned long arg); 57 58 /* consolemap.c */ 59 60 struct unimapinit; ··· 72 void con_free_unimap(struct vc_data *vc); 73 void con_protect_unimap(struct vc_data *vc, int rdonly); 74 int con_copy_unimap(struct vc_data *dst_vc, struct vc_data *src_vc); 75 76 /* vt.c */ 77 int vt_waitactive(int vt);
··· 12 #include <linux/mutex.h> 13 #include <linux/console_struct.h> 14 #include <linux/mm.h> 15 + #include <linux/consolemap.h> 16 17 /* 18 * Presently, a lot of graphics programs do not restore the contents of ··· 54 struct tty_struct; 55 int tioclinux(struct tty_struct *tty, unsigned long arg); 56 57 + #ifdef CONFIG_CONSOLE_TRANSLATIONS 58 /* consolemap.c */ 59 60 struct unimapinit; ··· 70 void con_free_unimap(struct vc_data *vc); 71 void con_protect_unimap(struct vc_data *vc, int rdonly); 72 int con_copy_unimap(struct vc_data *dst_vc, struct vc_data *src_vc); 73 + 74 + #define vc_translate(vc, c) ((vc)->vc_translate[(c) | \ 75 + (vc)->vc_toggle_meta ? 0x80 : 0]) 76 + #else 77 + #define con_set_trans_old(arg) (0) 78 + #define con_get_trans_old(arg) (-EINVAL) 79 + #define con_set_trans_new(arg) (0) 80 + #define con_get_trans_new(arg) (-EINVAL) 81 + #define con_clear_unimap(vc, ui) (0) 82 + #define con_set_unimap(vc, ct, list) (0) 83 + #define con_set_default_unimap(vc) (0) 84 + #define con_copy_unimap(d, s) (0) 85 + #define con_get_unimap(vc, ct, uct, list) (-EINVAL) 86 + #define con_free_unimap(vc) do { ; } while (0) 87 + 88 + #define vc_translate(vc, c) (c) 89 + #endif 90 91 /* vt.c */ 92 int vt_waitactive(int vt);