History

Merge branch 'akpm' (patches from Andrew)

Merge yet more updates from Andrew Morton: - the rest of MM - various misc fixes and tweaks * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (22 commits) mm: Change return type int to vm_fault_t for fault handlers lib/fonts: convert comments to utf-8 s390: ebcdic: convert comments to UTF-8 treewide: convert ISO_8859-1 text comments to utf-8 drivers/gpu/drm/gma500/: change return type to vm_fault_t docs/core-api: mm-api: add section about GFP flags docs/mm: make GFP flags descriptions usable as kernel-doc docs/core-api: split memory management API to a separate file docs/core-api: move *{str,mem}dup* to "String Manipulation" docs/core-api: kill trailing whitespace in kernel-api.rst mm/util: add kernel-doc for kvfree mm/util: make strndup_user description a kernel-doc comment fs/proc/vmcore.c: hide vmcoredd_mmap_dumps() for nommu builds treewide: correct "differenciate" and "instanciate" typos fs/afs: use new return type vm_fault_t drivers/hwtracing/intel_th/msu.c: change return type to vm_fault_t mm: soft-offline: close the race against page allocation mm: fix race on soft-offlining free huge pages namei: allow restricted O_CREAT of FIFOs and regular files hfs: prevent crash on exit from failed search ...

Linus Torvalds committed 8 years ago

Commit 33e17872 parents d475fac 2b7403063 files · +1209 −1006Browse files

Unified · Split

63 files
  1. Documentation/core-api/index.rst +1 −0
  2. Documentation/core-api/kernel-api.rst +4 −55
  3. Documentation/core-api/mm-api.rst +78 −0
  4. Documentation/devicetree/bindings/net/nfc/pn544.txt +1 −1
  5. Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt +1 −1
  6. Documentation/sysctl/fs.txt +36 −0
  7. arch/arm/boot/dts/sun4i-a10-inet97fv2.dts +1 −1
  8. arch/arm/crypto/sha256_glue.c +1 −1
  9. arch/arm/crypto/sha256_neon_glue.c +2 −2
  10. arch/powerpc/kvm/book3s_pr.c +1 −1
  11. arch/powerpc/kvm/book3s_xive.c +1 −1
  12. arch/powerpc/platforms/powermac/low_i2c.c +1 −1
  13. arch/powerpc/sysdev/xive/common.c +1 −1
  14. arch/s390/kernel/ebcdic.c +18 −18
  15. drivers/crypto/vmx/ghashp8-ppc.pl +6 −6
  16. drivers/gpu/drm/gma500/framebuffer.c +5 −9
  17. drivers/gpu/drm/gma500/gem.c +10 −17
  18. drivers/gpu/drm/gma500/psb_drv.h +2 −1
  19. drivers/hwtracing/intel_th/msu.c +1 −1
  20. drivers/iio/dac/ltc2632.c +1 −1
  21. drivers/power/reset/ltc2952-poweroff.c +2 −2
  22. drivers/thermal/intel_powerclamp.c +1 −1
  23. fs/afs/internal.h +2 −1
  24. fs/afs/write.c +1 −1
  25. fs/hfs/brec.c +4 −3
  26. fs/hfsplus/brec.c +4 −3
  27. fs/hfsplus/dir.c +2 −2
  28. fs/namei.c +50 −3
  29. fs/proc/vmcore.c +2 −0
  30. fs/userfaultfd.c +2 −4
  31. include/linux/fs.h +2 −0
  32. include/linux/gfp.h +154 −137
  33. include/linux/huge_mm.h +5 −4
  34. include/linux/hugetlb.h +1 −1
  35. include/linux/mm.h +7 −7
  36. include/linux/oom.h +1 −1
  37. include/linux/page-flags.h +5 −0
  38. include/linux/swapops.h +3 −12
  39. include/linux/userfaultfd_k.h +3 −2
  40. kernel/events/callchain.c +1 −1
  41. kernel/memremap.c +1 −1
  42. kernel/sysctl.c +18 −0
  43. lib/fonts/font_7x14.c +128 −128
  44. lib/fonts/font_8x16.c +128 −128
  45. lib/fonts/font_8x8.c +128 −128
  46. lib/fonts/font_pearl_8x8.c +128 −128
  47. mm/gup.c +2 −2
  48. mm/huge_memory.c +16 −15
  49. mm/hugetlb.c +18 −22
  50. mm/internal.h +1 −1
  51. mm/khugepaged.c +2 −1
  52. mm/memory-failure.c +35 −9
  53. mm/memory.c +46 −44
  54. mm/migrate.c +1 −3
  55. mm/page_alloc.c +30 −0
  56. mm/shmem.c +3 −2
  57. mm/util.c +8 −1
  58. net/netfilter/ipvs/Kconfig +4 −4
  59. net/netfilter/ipvs/ip_vs_mh.c +2 −2
  60. scripts/spelling.txt +2 −0
  61. sound/soc/intel/common/sst-dsp-priv.h +2 −2
  62. tools/power/cpupower/po/de.po +22 −22
  63. tools/power/cpupower/po/fr.po +60 −60
Documentation/core-api/index.rst+1−0
@@ -27,6 +27,7 @@ Core utilities · 26 unmodified lines
2727 errseq
2828 printk-formats
2929 circular-buffers
30+ mm-api
3031 gfp_mask-from-fs-io
3132 timekeeping
3233 boot-time-mm
Documentation/core-api/kernel-api.rst+4−55
@@ -39,6 +39,10 @@ String Manipulation · 38 unmodified lines
3939 .. kernel-doc:: lib/string.c
4040 :export:
4141
42+.. kernel-doc:: mm/util.c
43+ :functions: kstrdup kstrdup_const kstrndup kmemdup kmemdup_nul memdup_user
44+ vmemdup_user strndup_user memdup_user_nul
45+
4246 Basic Kernel Library Functions
4347 ==============================
4448
@@ -155,60 +159,6 @@ UUID/GUID · 110 unmodified lines
155159 .. kernel-doc:: lib/uuid.c
156160 :export:
157161
158−Memory Management in Linux
159−==========================
160−
161−The Slab Cache
162−--------------
163−
164−.. kernel-doc:: include/linux/slab.h
165− :internal:
166−
167−.. kernel-doc:: mm/slab.c
168− :export:
169−
170−.. kernel-doc:: mm/util.c
171− :export:
172−
173−User Space Memory Access
174−------------------------
175−
176−.. kernel-doc:: arch/x86/include/asm/uaccess.h
177− :internal:
178−
179−.. kernel-doc:: arch/x86/lib/usercopy_32.c
180− :export:
181−
182−More Memory Management Functions
183−--------------------------------
184−
185−.. kernel-doc:: mm/readahead.c
186− :export:
187−
188−.. kernel-doc:: mm/filemap.c
189− :export:
190−
191−.. kernel-doc:: mm/memory.c
192− :export:
193−
194−.. kernel-doc:: mm/vmalloc.c
195− :export:
196−
197−.. kernel-doc:: mm/page_alloc.c
198− :internal:
199−
200−.. kernel-doc:: mm/mempool.c
201− :export:
202−
203−.. kernel-doc:: mm/dmapool.c
204− :export:
205−
206−.. kernel-doc:: mm/page-writeback.c
207− :export:
208−
209−.. kernel-doc:: mm/truncate.c
210− :export:
211−
212162 Kernel IPC facilities
213163 =====================
214164
@@ -437,4 +387,3 @@ Read-Copy Update (RCU) · 222 unmodified lines
437387 .. kernel-doc:: include/linux/rcu_sync.h
438388
439389 .. kernel-doc:: kernel/rcu/sync.c
440−
Documentation/core-api/mm-api.rst+78−0
@@ -0,0 +1,78 @@
1+======================
2+Memory Management APIs
3+======================
4+
5+User Space Memory Access
6+========================
7+
8+.. kernel-doc:: arch/x86/include/asm/uaccess.h
9+ :internal:
10+
11+.. kernel-doc:: arch/x86/lib/usercopy_32.c
12+ :export:
13+
14+.. kernel-doc:: mm/util.c
15+ :functions: get_user_pages_fast
16+
17+Memory Allocation Controls
18+==========================
19+
20+Functions which need to allocate memory often use GFP flags to express
21+how that memory should be allocated. The GFP acronym stands for "get
22+free pages", the underlying memory allocation function. Not every GFP
23+flag is allowed to every function which may allocate memory. Most
24+users will want to use a plain ``GFP_KERNEL``.
25+
26+.. kernel-doc:: include/linux/gfp.h
27+ :doc: Page mobility and placement hints
28+
29+.. kernel-doc:: include/linux/gfp.h
30+ :doc: Watermark modifiers
31+
32+.. kernel-doc:: include/linux/gfp.h
33+ :doc: Reclaim modifiers
34+
35+.. kernel-doc:: include/linux/gfp.h
36+ :doc: Common combinations
37+
38+The Slab Cache
39+==============
40+
41+.. kernel-doc:: include/linux/slab.h
42+ :internal:
43+
44+.. kernel-doc:: mm/slab.c
45+ :export:
46+
47+.. kernel-doc:: mm/util.c
48+ :functions: kfree_const kvmalloc_node kvfree
49+
50+More Memory Management Functions
51+================================
52+
53+.. kernel-doc:: mm/readahead.c
54+ :export:
55+
56+.. kernel-doc:: mm/filemap.c
57+ :export:
58+
59+.. kernel-doc:: mm/memory.c
60+ :export:
61+
62+.. kernel-doc:: mm/vmalloc.c
63+ :export:
64+
65+.. kernel-doc:: mm/page_alloc.c
66+ :internal:
67+
68+.. kernel-doc:: mm/mempool.c
69+ :export:
70+
71+.. kernel-doc:: mm/dmapool.c
72+ :export:
73+
74+.. kernel-doc:: mm/page-writeback.c
75+ :export:
76+
77+.. kernel-doc:: mm/truncate.c
78+ :export:
Documentation/devicetree/bindings/net/nfc/pn544.txt+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
22
33 Required properties:
44 - compatible: Should be "nxp,pn544-i2c".
5−- clock-frequency: I�C work frequency.
5+- clock-frequency: I²C work frequency.
66 - reg: address on the bus
77 - interrupts: GPIO interrupt to which the chip is connected
88 - enable-gpios: Output GPIO pin used for enabling/disabling the PN544
Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt+1−1
@@ -49,7 +49,7 @@ compatible (optional) - standard definition · 48 unmodified lines
4949 - may contain the following strings:
5050 - shared-dma-pool: This indicates a region of memory meant to be
5151 used as a shared pool of DMA buffers for a set of devices. It can
52− be used by an operating system to instanciate the necessary pool
52+ be used by an operating system to instantiate the necessary pool
5353 management subsystem if necessary.
5454 - vendor specific string in the form <vendor>,[<device>-]<usage>
5555 no-map (optional) - empty property
Documentation/sysctl/fs.txt+36−0
@@ -34,7 +34,9 @@ Currently, these files are in /proc/sys/fs: · 33 unmodified lines
3434 - overflowgid
3535 - pipe-user-pages-hard
3636 - pipe-user-pages-soft
37+- protected_fifos
3738 - protected_hardlinks
39+- protected_regular
3840 - protected_symlinks
3941 - suid_dumpable
4042 - super-max
@@ -182,6 +184,24 @@ applied. · 141 unmodified lines
182184
183185 ==============================================================
184186
187+protected_fifos:
188+
189+The intent of this protection is to avoid unintentional writes to
190+an attacker-controlled FIFO, where a program expected to create a regular
191+file.
192+
193+When set to "0", writing to FIFOs is unrestricted.
194+
195+When set to "1" don't allow O_CREAT open on FIFOs that we don't own
196+in world writable sticky directories, unless they are owned by the
197+owner of the directory.
198+
199+When set to "2" it also applies to group writable sticky directories.
200+
201+This protection is based on the restrictions in Openwall.
202+
203+==============================================================
204+
185205 protected_hardlinks:
186206
187207 A long-standing class of security issues is the hardlink-based
@@ -202,6 +222,22 @@ This protection is based on the restrictions in Openwall and grsecurity. · 14 unmodified lines
202222
203223 ==============================================================
204224
225+protected_regular:
226+
227+This protection is similar to protected_fifos, but it
228+avoids writes to an attacker-controlled regular file, where a program
229+expected to create one.
230+
231+When set to "0", writing to regular files is unrestricted.
232+
233+When set to "1" don't allow O_CREAT open on regular files that we
234+don't own in world writable sticky directories, unless they are
235+owned by the owner of the directory.
236+
237+When set to "2" it also applies to group writable sticky directories.
238+
239+==============================================================
240+
205241 protected_symlinks:
206242
207243 A long-standing class of security issues is the symlink-based
arch/arm/boot/dts/sun4i-a10-inet97fv2.dts+1−1
@@ -1,7 +1,7 @@
11 /*
22 * Copyright 2014 Open Source Support GmbH
33 *
4− * David Lanzend�rfer <david.lanzendoerfer@o2s.ch>
4+ * David Lanzendörfer <david.lanzendoerfer@o2s.ch>
55 *
66 * This file is dual-licensed: you can use it either under the terms
77 * of the GPL or the X11 license, at your option. Note that this dual
arch/arm/crypto/sha256_glue.c+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
22 * Glue code for the SHA256 Secure Hash Algorithm assembly implementation
33 * using optimized ARM assembler and NEON instructions.
44 *
5− * Copyright � 2015 Google Inc.
5+ * Copyright © 2015 Google Inc.
66 *
77 * This file is based on sha256_ssse3_glue.c:
88 * Copyright (C) 2013 Intel Corporation
arch/arm/crypto/sha256_neon_glue.c+2−2
@@ -2,10 +2,10 @@ · 1 unmodified line
22 * Glue code for the SHA256 Secure Hash Algorithm assembly implementation
33 * using NEON instructions.
44 *
5− * Copyright � 2015 Google Inc.
5+ * Copyright © 2015 Google Inc.
66 *
77 * This file is based on sha512_neon_glue.c:
8− * Copyright � 2014 Jussi Kivilinna <jussi.kivilinna@iki.fi>
8+ * Copyright © 2014 Jussi Kivilinna <jussi.kivilinna@iki.fi>
99 *
1010 * This program is free software; you can redistribute it and/or modify it
1111 * under the terms of the GNU General Public License as published by the Free
arch/powerpc/kvm/book3s_pr.c+1−1
@@ -514,7 +514,7 @@ static void kvmppc_set_msr_pr(struct kvm_vcpu *vcpu, u64 msr) · 513 unmodified lines
514514 /*
515515 * When switching from 32 to 64-bit, we may have a stale 32-bit
516516 * magic page around, we need to flush it. Typically 32-bit magic
517− * page will be instanciated when calling into RTAS. Note: We
517+ * page will be instantiated when calling into RTAS. Note: We
518518 * assume that such transition only happens while in kernel mode,
519519 * ie, we never transition from user 32-bit to kernel 64-bit with
520520 * a 32-bit magic page around.
arch/powerpc/kvm/book3s_xive.c+1−1
@@ -38,7 +38,7 @@ · 37 unmodified lines
3838 * Virtual mode variants of the hcalls for use on radix/radix
3939 * with AIL. They require the VCPU's VP to be "pushed"
4040 *
41− * We still instanciate them here because we use some of the
41+ * We still instantiate them here because we use some of the
4242 * generated utility functions as well in this file.
4343 */
4444 #define XIVE_RUNTIME_CHECKS
arch/powerpc/platforms/powermac/low_i2c.c+1−1
@@ -1192,7 +1192,7 @@ static void pmac_i2c_devscan(void (*callback)(struct device_node *dev, · 1191 unmodified lines
11921192 { NULL, NULL, 0 },
11931193 };
11941194
1195− /* Only some devices need to have platform functions instanciated
1195+ /* Only some devices need to have platform functions instantiated
11961196 * here. For now, we have a table. Others, like 9554 i2c GPIOs used
11971197 * on Xserve, if we ever do a driver for them, will use their own
11981198 * platform function instance
arch/powerpc/sysdev/xive/common.c+1−1
@@ -266,7 +266,7 @@ static unsigned int xive_get_irq(void) · 265 unmodified lines
266266 * of pending priorities. This will also have the effect of
267267 * updating the CPPR to the most favored pending interrupts.
268268 *
269− * In the future, if we have a way to differenciate a first
269+ * In the future, if we have a way to differentiate a first
270270 * entry (on HW interrupt) from a replay triggered by EOI,
271271 * we could skip this on replays unless we soft-mask tells us
272272 * that a new HW interrupt occurred.
arch/s390/kernel/ebcdic.c+18−18
@@ -111,15 +111,15 @@ __u8 _ebcasc[256] = · 110 unmodified lines
111111 0x07, 0x07, 0x16, 0x07, 0x07, 0x07, 0x07, 0x04,
112112 /* 0x38 -SBS -IT -RFF -CU3 DC4 NAK ---- SUB */
113113 0x07, 0x07, 0x07, 0x07, 0x14, 0x15, 0x07, 0x1A,
114− /* 0x40 SP RSP �� ---- */
114+ /* 0x40 SP RSP ä ---- */
115115 0x20, 0xFF, 0x83, 0x84, 0x85, 0xA0, 0x07, 0x86,
116116 /* 0x48 . < ( + | */
117117 0x87, 0xA4, 0x9B, 0x2E, 0x3C, 0x28, 0x2B, 0x7C,
118118 /* 0x50 & ---- */
119119 0x26, 0x82, 0x88, 0x89, 0x8A, 0xA1, 0x8C, 0x07,
120− /* 0x58 �� ! $ * ) ; */
120+ /* 0x58 ß ! $ * ) ; */
121121 0x8D, 0xE1, 0x21, 0x24, 0x2A, 0x29, 0x3B, 0xAA,
122− /* 0x60 - / ---- �� ---- ---- ---- */
122+ /* 0x60 - / ---- Ä ---- ---- ---- */
123123 0x2D, 0x2F, 0x07, 0x8E, 0x07, 0x07, 0x07, 0x8F,
124124 /* 0x68 ---- , % _ > ? */
125125 0x80, 0xA5, 0x07, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
@@ -131,7 +131,7 @@ __u8 _ebcasc[256] = · 5 unmodified lines
131131 0x07, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
132132 /* 0x88 h i ---- ---- ---- */
133133 0x68, 0x69, 0xAE, 0xAF, 0x07, 0x07, 0x07, 0xF1,
134− /* 0x90 �� j k l m n o p */
134+ /* 0x90 ° j k l m n o p */
135135 0xF8, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
136136 /* 0x98 q r ---- ---- */
137137 0x71, 0x72, 0xA6, 0xA7, 0x91, 0x07, 0x92, 0x07,
@@ -139,25 +139,25 @@ __u8 _ebcasc[256] = · 1 unmodified line
139139 0xE6, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
140140 /* 0xA8 y z ---- ---- ---- ---- */
141141 0x79, 0x7A, 0xAD, 0xAB, 0x07, 0x07, 0x07, 0x07,
142− /* 0xB0 ^ ---- �� ---- */
142+ /* 0xB0 ^ ---- § ---- */
143143 0x5E, 0x9C, 0x9D, 0xFA, 0x07, 0x07, 0x07, 0xAC,
144144 /* 0xB8 ---- [ ] ---- ---- ---- ---- */
145145 0xAB, 0x07, 0x5B, 0x5D, 0x07, 0x07, 0x07, 0x07,
146146 /* 0xC0 { A B C D E F G */
147147 0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
148− /* 0xC8 H I ---- �� ---- */
148+ /* 0xC8 H I ---- ö ---- */
149149 0x48, 0x49, 0x07, 0x93, 0x94, 0x95, 0xA2, 0x07,
150150 /* 0xD0 } J K L M N O P */
151151 0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
152− /* 0xD8 Q R ---- �� */
152+ /* 0xD8 Q R ---- ü */
153153 0x51, 0x52, 0x07, 0x96, 0x81, 0x97, 0xA3, 0x98,
154154 /* 0xE0 \ S T U V W X */
155155 0x5C, 0xF6, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
156− /* 0xE8 Y Z ---- �� ---- ---- ---- */
156+ /* 0xE8 Y Z ---- Ö ---- ---- ---- */
157157 0x59, 0x5A, 0xFD, 0x07, 0x99, 0x07, 0x07, 0x07,
158158 /* 0xF0 0 1 2 3 4 5 6 7 */
159159 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
160− /* 0xF8 8 9 ---- ---- �� ---- ---- ---- */
160+ /* 0xF8 8 9 ---- ---- Ü ---- ---- ---- */
161161 0x38, 0x39, 0x07, 0x07, 0x9A, 0x07, 0x07, 0x07
162162 };
163163
@@ -260,15 +260,15 @@ __u8 _ebcasc_500[256] = · 96 unmodified lines
260260 0x07, 0x07, 0x16, 0x07, 0x07, 0x07, 0x07, 0x04,
261261 /* 0x38 -SBS -IT -RFF -CU3 DC4 NAK ---- SUB */
262262 0x07, 0x07, 0x07, 0x07, 0x14, 0x15, 0x07, 0x1A,
263− /* 0x40 SP RSP �� ---- */
263+ /* 0x40 SP RSP ä ---- */
264264 0x20, 0xFF, 0x83, 0x84, 0x85, 0xA0, 0x07, 0x86,
265265 /* 0x48 [ . < ( + ! */
266266 0x87, 0xA4, 0x5B, 0x2E, 0x3C, 0x28, 0x2B, 0x21,
267267 /* 0x50 & ---- */
268268 0x26, 0x82, 0x88, 0x89, 0x8A, 0xA1, 0x8C, 0x07,
269− /* 0x58 �� ] $ * ) ; ^ */
269+ /* 0x58 ß ] $ * ) ; ^ */
270270 0x8D, 0xE1, 0x5D, 0x24, 0x2A, 0x29, 0x3B, 0x5E,
271− /* 0x60 - / ---- �� ---- ---- ---- */
271+ /* 0x60 - / ---- Ä ---- ---- ---- */
272272 0x2D, 0x2F, 0x07, 0x8E, 0x07, 0x07, 0x07, 0x8F,
273273 /* 0x68 ---- , % _ > ? */
274274 0x80, 0xA5, 0x07, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
@@ -280,7 +280,7 @@ __u8 _ebcasc_500[256] = · 5 unmodified lines
280280 0x07, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
281281 /* 0x88 h i ---- ---- ---- */
282282 0x68, 0x69, 0xAE, 0xAF, 0x07, 0x07, 0x07, 0xF1,
283− /* 0x90 �� j k l m n o p */
283+ /* 0x90 ° j k l m n o p */
284284 0xF8, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
285285 /* 0x98 q r ---- ---- */
286286 0x71, 0x72, 0xA6, 0xA7, 0x91, 0x07, 0x92, 0x07,
@@ -288,25 +288,25 @@ __u8 _ebcasc_500[256] = · 1 unmodified line
288288 0xE6, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
289289 /* 0xA8 y z ---- ---- ---- ---- */
290290 0x79, 0x7A, 0xAD, 0xAB, 0x07, 0x07, 0x07, 0x07,
291− /* 0xB0 ---- �� ---- */
291+ /* 0xB0 ---- § ---- */
292292 0x9B, 0x9C, 0x9D, 0xFA, 0x07, 0x07, 0x07, 0xAC,
293293 /* 0xB8 ---- | ---- ---- ---- ---- */
294294 0xAB, 0x07, 0xAA, 0x7C, 0x07, 0x07, 0x07, 0x07,
295295 /* 0xC0 { A B C D E F G */
296296 0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
297− /* 0xC8 H I ---- �� ---- */
297+ /* 0xC8 H I ---- ö ---- */
298298 0x48, 0x49, 0x07, 0x93, 0x94, 0x95, 0xA2, 0x07,
299299 /* 0xD0 } J K L M N O P */
300300 0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
301− /* 0xD8 Q R ---- �� */
301+ /* 0xD8 Q R ---- ü */
302302 0x51, 0x52, 0x07, 0x96, 0x81, 0x97, 0xA3, 0x98,
303303 /* 0xE0 \ S T U V W X */
304304 0x5C, 0xF6, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
305− /* 0xE8 Y Z ---- �� ---- ---- ---- */
305+ /* 0xE8 Y Z ---- Ö ---- ---- ---- */
306306 0x59, 0x5A, 0xFD, 0x07, 0x99, 0x07, 0x07, 0x07,
307307 /* 0xF0 0 1 2 3 4 5 6 7 */
308308 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
309− /* 0xF8 8 9 ---- ---- �� ---- ---- ---- */
309+ /* 0xF8 8 9 ---- ---- Ü ---- ---- ---- */
310310 0x38, 0x39, 0x07, 0x07, 0x9A, 0x07, 0x07, 0x07
311311 };
312312
drivers/crypto/vmx/ghashp8-ppc.pl+6−6
@@ -129,9 +129,9 @@ $code=<<___; · 128 unmodified lines
129129 le?vperm $IN,$IN,$IN,$lemask
130130 vxor $zero,$zero,$zero
131131
132− vpmsumd $Xl,$IN,$Hl # H.lo�Xi.lo
133− vpmsumd $Xm,$IN,$H # H.hi�Xi.lo+H.lo�Xi.hi
134− vpmsumd $Xh,$IN,$Hh # H.hi�Xi.hi
132+ vpmsumd $Xl,$IN,$Hl # H.lo·Xi.lo
133+ vpmsumd $Xm,$IN,$H # H.hi·Xi.lo+H.lo·Xi.hi
134+ vpmsumd $Xh,$IN,$Hh # H.hi·Xi.hi
135135
136136 vpmsumd $t2,$Xl,$xC2 # 1st phase
137137
@@ -187,11 +187,11 @@ $code=<<___; · 49 unmodified lines
187187 .align 5
188188 Loop:
189189 subic $len,$len,16
190− vpmsumd $Xl,$IN,$Hl # H.lo�Xi.lo
190+ vpmsumd $Xl,$IN,$Hl # H.lo·Xi.lo
191191 subfe. r0,r0,r0 # borrow?-1:0
192− vpmsumd $Xm,$IN,$H # H.hi�Xi.lo+H.lo�Xi.hi
192+ vpmsumd $Xm,$IN,$H # H.hi·Xi.lo+H.lo·Xi.hi
193193 and r0,r0,$len
194− vpmsumd $Xh,$IN,$Hh # H.hi�Xi.hi
194+ vpmsumd $Xh,$IN,$Hh # H.hi·Xi.hi
195195 add $inp,$inp,r0
196196
197197 vpmsumd $t2,$Xl,$xC2 # 1st phase
drivers/gpu/drm/gma500/framebuffer.c+5−9
@@ -108,7 +108,7 @@ static int psbfb_pan(struct fb_var_screeninfo *var, struct fb_info *info) · 107 unmodified lines
108108 return 0;
109109 }
110110
111−static int psbfb_vm_fault(struct vm_fault *vmf)
111+static vm_fault_t psbfb_vm_fault(struct vm_fault *vmf)
112112 {
113113 struct vm_area_struct *vma = vmf->vma;
114114 struct psb_framebuffer *psbfb = vma->vm_private_data;
@@ -118,7 +118,7 @@ static int psbfb_vm_fault(struct vm_fault *vmf) · 3 unmodified lines
118118 int page_num;
119119 int i;
120120 unsigned long address;
121− int ret;
121+ vm_fault_t ret = VM_FAULT_SIGBUS;
122122 unsigned long pfn;
123123 unsigned long phys_addr = (unsigned long)dev_priv->stolen_base +
124124 gtt->offset;
@@ -131,18 +131,14 @@ static int psbfb_vm_fault(struct vm_fault *vmf) · 6 unmodified lines
131131 for (i = 0; i < page_num; i++) {
132132 pfn = (phys_addr >> PAGE_SHIFT);
133133
134− ret = vm_insert_mixed(vma, address,
134+ ret = vmf_insert_mixed(vma, address,
135135 __pfn_to_pfn_t(pfn, PFN_DEV));
136− if (unlikely((ret == -EBUSY) || (ret != 0 && i > 0)))
136+ if (unlikely(ret & VM_FAULT_ERROR))
137137 break;
138− else if (unlikely(ret != 0)) {
139− ret = (ret == -ENOMEM) ? VM_FAULT_OOM : VM_FAULT_SIGBUS;
140− return ret;
141− }
142138 address += PAGE_SIZE;
143139 phys_addr += PAGE_SIZE;
144140 }
145− return VM_FAULT_NOPAGE;
141+ return ret;
146142 }
147143
148144 static void psbfb_vm_open(struct vm_area_struct *vma)
drivers/gpu/drm/gma500/gem.c+10−17
@@ -134,12 +134,13 @@ int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev, · 133 unmodified lines
134134 * vma->vm_private_data points to the GEM object that is backing this
135135 * mapping.
136136 */
137−int psb_gem_fault(struct vm_fault *vmf)
137+vm_fault_t psb_gem_fault(struct vm_fault *vmf)
138138 {
139139 struct vm_area_struct *vma = vmf->vma;
140140 struct drm_gem_object *obj;
141141 struct gtt_range *r;
142− int ret;
142+ int err;
143+ vm_fault_t ret;
143144 unsigned long pfn;
144145 pgoff_t page_offset;
145146 struct drm_device *dev;
@@ -158,9 +159,10 @@ int psb_gem_fault(struct vm_fault *vmf) · 12 unmodified lines
158159 /* For now the mmap pins the object and it stays pinned. As things
159160 stand that will do us no harm */
160161 if (r->mmapping == 0) {
161− ret = psb_gtt_pin(r);
162− if (ret < 0) {
163− dev_err(dev->dev, "gma500: pin failed: %d\n", ret);
162+ err = psb_gtt_pin(r);
163+ if (err < 0) {
164+ dev_err(dev->dev, "gma500: pin failed: %d\n", err);
165+ ret = vmf_error(err);
164166 goto fail;
165167 }
166168 r->mmapping = 1;
@@ -175,18 +177,9 @@ int psb_gem_fault(struct vm_fault *vmf) · 8 unmodified lines
175177 pfn = (dev_priv->stolen_base + r->offset) >> PAGE_SHIFT;
176178 else
177179 pfn = page_to_pfn(r->pages[page_offset]);
178− ret = vm_insert_pfn(vma, vmf->address, pfn);
179−
180+ ret = vmf_insert_pfn(vma, vmf->address, pfn);
180181 fail:
181182 mutex_unlock(&dev_priv->mmap_mutex);
182− switch (ret) {
183− case 0:
184− case -ERESTARTSYS:
185− case -EINTR:
186− return VM_FAULT_NOPAGE;
187− case -ENOMEM:
188− return VM_FAULT_OOM;
189− default:
190− return VM_FAULT_SIGBUS;
191− }
183+
184+ return ret;
192185 }
drivers/gpu/drm/gma500/psb_drv.h+2−1
@@ -21,6 +21,7 @@ · 20 unmodified lines
2121 #define _PSB_DRV_H_
2222
2323 #include <linux/kref.h>
24+#include <linux/mm_types.h>
2425
2526 #include <drm/drmP.h>
2627 #include <drm/drm_global.h>
@@ -749,7 +750,7 @@ extern int psb_gem_get_aperture(struct drm_device *dev, void *data, · 722 unmodified lines
749750 struct drm_file *file);
750751 extern int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
751752 struct drm_mode_create_dumb *args);
752−extern int psb_gem_fault(struct vm_fault *vmf);
753+extern vm_fault_t psb_gem_fault(struct vm_fault *vmf);
753754
754755 /* psb_device.c */
755756 extern const struct psb_ops psb_chip_ops;
drivers/hwtracing/intel_th/msu.c+1−1
@@ -1182,7 +1182,7 @@ static void msc_mmap_close(struct vm_area_struct *vma) · 1181 unmodified lines
11821182 mutex_unlock(&msc->buf_mutex);
11831183 }
11841184
1185−static int msc_mmap_fault(struct vm_fault *vmf)
1185+static vm_fault_t msc_mmap_fault(struct vm_fault *vmf)
11861186 {
11871187 struct msc_iter *iter = vmf->vma->vm_file->private_data;
11881188 struct msc *msc = iter->msc;
drivers/iio/dac/ltc2632.c+1−1
@@ -1,7 +1,7 @@
11 /*
22 * LTC2632 Digital to analog convertors spi driver
33 *
4− * Copyright 2017 Maxime Roussin-B�langer
4+ * Copyright 2017 Maxime Roussin-Bélanger
55 * expanded by Silvan Murer <silvan.murer@gmail.com>
66 *
77 * Licensed under the GPL-2.
drivers/power/reset/ltc2952-poweroff.c+2−2
@@ -2,7 +2,7 @@ · 1 unmodified line
22 * LTC2952 (PowerPath) driver
33 *
44 * Copyright (C) 2014, Xsens Technologies BV <info@xsens.com>
5− * Maintainer: Ren� Moll <linux@r-moll.nl>
5+ * Maintainer: René Moll <linux@r-moll.nl>
66 *
77 * This program is free software; you can redistribute it and/or
88 * modify it under the terms of the GNU General Public License
@@ -319,6 +319,6 @@ static struct platform_driver ltc2952_poweroff_driver = { · 310 unmodified lines
319319
320320 module_platform_driver(ltc2952_poweroff_driver);
321321
322−MODULE_AUTHOR("Ren� Moll <rene.moll@xsens.com>");
322+MODULE_AUTHOR("René Moll <rene.moll@xsens.com>");
323323 MODULE_DESCRIPTION("LTC PowerPath power-off driver");
324324 MODULE_LICENSE("GPL v2");
drivers/thermal/intel_powerclamp.c+1−1
@@ -28,7 +28,7 @@ · 27 unmodified lines
2828 * case of external interrupts without need for ack, clamping down
2929 * cpu in non-irq context does not reduce irq. for majority of the
3030 * cases, clamping down cpu does help reduce irq as well, we should
31− * be able to differenciate the two cases and give a quantitative
31+ * be able to differentiate the two cases and give a quantitative
3232 * solution for the irqs that we can control. perhaps based on
3333 * get_cpu_iowait_time_us()
3434 *
fs/afs/internal.h+2−1
@@ -21,6 +21,7 @@ · 20 unmodified lines
2121 #include <linux/fscache.h>
2222 #include <linux/backing-dev.h>
2323 #include <linux/uuid.h>
24+#include <linux/mm_types.h>
2425 #include <net/net_namespace.h>
2526 #include <net/netns/generic.h>
2627 #include <net/sock.h>
@@ -1076,7 +1077,7 @@ extern int afs_writepages(struct address_space *, struct writeback_control *); · 1049 unmodified lines
10761077 extern void afs_pages_written_back(struct afs_vnode *, struct afs_call *);
10771078 extern ssize_t afs_file_write(struct kiocb *, struct iov_iter *);
10781079 extern int afs_fsync(struct file *, loff_t, loff_t, int);
1079−extern int afs_page_mkwrite(struct vm_fault *);
1080+extern vm_fault_t afs_page_mkwrite(struct vm_fault *vmf);
10801081 extern void afs_prune_wb_keys(struct afs_vnode *);
10811082 extern int afs_launder_page(struct page *);
10821083
fs/afs/write.c+1−1
@@ -753,7 +753,7 @@ int afs_fsync(struct file *file, loff_t start, loff_t end, int datasync) · 752 unmodified lines
753753 * notification that a previously read-only page is about to become writable
754754 * - if it returns an error, the caller will deliver a bus error signal
755755 */
756−int afs_page_mkwrite(struct vm_fault *vmf)
756+vm_fault_t afs_page_mkwrite(struct vm_fault *vmf)
757757 {
758758 struct file *file = vmf->vma->vm_file;
759759 struct inode *inode = file_inode(file);
fs/hfs/brec.c+4−3
@@ -75,9 +75,10 @@ int hfs_brec_insert(struct hfs_find_data *fd, void *entry, int entry_len) · 74 unmodified lines
7575 if (!fd->bnode) {
7676 if (!tree->root)
7777 hfs_btree_inc_height(tree);
78− fd->bnode = hfs_bnode_find(tree, tree->leaf_head);
79− if (IS_ERR(fd->bnode))
80− return PTR_ERR(fd->bnode);
78+ node = hfs_bnode_find(tree, tree->leaf_head);
79+ if (IS_ERR(node))
80+ return PTR_ERR(node);
81+ fd->bnode = node;
8182 fd->record = -1;
8283 }
8384 new_node = NULL;
fs/hfsplus/brec.c+4−3
@@ -73,9 +73,10 @@ int hfs_brec_insert(struct hfs_find_data *fd, void *entry, int entry_len) · 72 unmodified lines
7373 if (!fd->bnode) {
7474 if (!tree->root)
7575 hfs_btree_inc_height(tree);
76− fd->bnode = hfs_bnode_find(tree, tree->leaf_head);
77− if (IS_ERR(fd->bnode))
78− return PTR_ERR(fd->bnode);
76+ node = hfs_bnode_find(tree, tree->leaf_head);
77+ if (IS_ERR(node))
78+ return PTR_ERR(node);
79+ fd->bnode = node;
7980 fd->record = -1;
8081 }
8182 new_node = NULL;
fs/hfsplus/dir.c+2−2
@@ -77,13 +77,13 @@ again: · 76 unmodified lines
7777 cpu_to_be32(HFSP_HARDLINK_TYPE) &&
7878 entry.file.user_info.fdCreator ==
7979 cpu_to_be32(HFSP_HFSPLUS_CREATOR) &&
80+ HFSPLUS_SB(sb)->hidden_dir &&
8081 (entry.file.create_date ==
8182 HFSPLUS_I(HFSPLUS_SB(sb)->hidden_dir)->
8283 create_date ||
8384 entry.file.create_date ==
8485 HFSPLUS_I(d_inode(sb->s_root))->
85− create_date) &&
86− HFSPLUS_SB(sb)->hidden_dir) {
86+ create_date)) {
8787 struct qstr str;
8888 char name[32];
8989
fs/namei.c+50−3
@@ -887,6 +887,8 @@ static inline void put_link(struct nameidata *nd) · 886 unmodified lines
887887
888888 int sysctl_protected_symlinks __read_mostly = 0;
889889 int sysctl_protected_hardlinks __read_mostly = 0;
890+int sysctl_protected_fifos __read_mostly;
891+int sysctl_protected_regular __read_mostly;
890892
891893 /**
892894 * may_follow_link - Check symlink following for unsafe situations
@@ -1003,6 +1005,45 @@ static int may_linkat(struct path *link) · 110 unmodified lines
10031005 return -EPERM;
10041006 }
10051007
1008+/**
1009+ * may_create_in_sticky - Check whether an O_CREAT open in a sticky directory
1010+ * should be allowed, or not, on files that already
1011+ * exist.
1012+ * @dir: the sticky parent directory
1013+ * @inode: the inode of the file to open
1014+ *
1015+ * Block an O_CREAT open of a FIFO (or a regular file) when:
1016+ * - sysctl_protected_fifos (or sysctl_protected_regular) is enabled
1017+ * - the file already exists
1018+ * - we are in a sticky directory
1019+ * - we don't own the file
1020+ * - the owner of the directory doesn't own the file
1021+ * - the directory is world writable
1022+ * If the sysctl_protected_fifos (or sysctl_protected_regular) is set to 2
1023+ * the directory doesn't have to be world writable: being group writable will
1024+ * be enough.
1025+ *
1026+ * Returns 0 if the open is allowed, -ve on error.
1027+ */
1028+static int may_create_in_sticky(struct dentry * const dir,
1029+ struct inode * const inode)
1030+{
1031+ if ((!sysctl_protected_fifos && S_ISFIFO(inode->i_mode)) ||
1032+ (!sysctl_protected_regular && S_ISREG(inode->i_mode)) ||
1033+ likely(!(dir->d_inode->i_mode & S_ISVTX)) ||
1034+ uid_eq(inode->i_uid, dir->d_inode->i_uid) ||
1035+ uid_eq(current_fsuid(), inode->i_uid))
1036+ return 0;
1037+
1038+ if (likely(dir->d_inode->i_mode & 0002) ||
1039+ (dir->d_inode->i_mode & 0020 &&
1040+ ((sysctl_protected_fifos >= 2 && S_ISFIFO(inode->i_mode)) ||
1041+ (sysctl_protected_regular >= 2 && S_ISREG(inode->i_mode))))) {
1042+ return -EACCES;
1043+ }
1044+ return 0;
1045+}
1046+
10061047 static __always_inline
10071048 const char *get_link(struct nameidata *nd)
10081049 {
@@ -3348,9 +3389,15 @@ finish_open: · 2339 unmodified lines
33483389 if (error)
33493390 return error;
33503391 audit_inode(nd->name, nd->path.dentry, 0);
3351− error = -EISDIR;
3352− if ((open_flag & O_CREAT) && d_is_dir(nd->path.dentry))
3353− goto out;
3392+ if (open_flag & O_CREAT) {
3393+ error = -EISDIR;
3394+ if (d_is_dir(nd->path.dentry))
3395+ goto out;
3396+ error = may_create_in_sticky(dir,
3397+ d_backing_inode(nd->path.dentry));
3398+ if (unlikely(error))
3399+ goto out;
3400+ }
33543401 error = -ENOTDIR;
33553402 if ((nd->flags & LOOKUP_DIRECTORY) && !d_can_lookup(nd->path.dentry))
33563403 goto out;
fs/proc/vmcore.c+2−0
@@ -225,6 +225,7 @@ out_unlock: · 224 unmodified lines
225225 return ret;
226226 }
227227
228+#ifdef CONFIG_MMU
228229 static int vmcoredd_mmap_dumps(struct vm_area_struct *vma, unsigned long dst,
229230 u64 start, size_t size)
230231 {
@@ -259,6 +260,7 @@ out_unlock: · 28 unmodified lines
259260 mutex_unlock(&vmcoredd_mutex);
260261 return ret;
261262 }
263+#endif /* CONFIG_MMU */
262264 #endif /* CONFIG_PROC_VMCORE_DEVICE_DUMP */
263265
264266 /* Read from the ELF header and then the crash dump. On error, negative value is
fs/userfaultfd.c+2−4
@@ -340,17 +340,15 @@ out: · 339 unmodified lines
340340 * fatal_signal_pending()s, and the mmap_sem must be released before
341341 * returning it.
342342 */
343−int handle_userfault(struct vm_fault *vmf, unsigned long reason)
343+vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason)
344344 {
345345 struct mm_struct *mm = vmf->vma->vm_mm;
346346 struct userfaultfd_ctx *ctx;
347347 struct userfaultfd_wait_queue uwq;
348− int ret;
348+ vm_fault_t ret = VM_FAULT_SIGBUS;
349349 bool must_wait, return_to_userland;
350350 long blocking_state;
351351
352− ret = VM_FAULT_SIGBUS;
353−
354352 /*
355353 * We don't do userfault handling for the final child pid update.
356354 *
include/linux/fs.h+2−0
@@ -74,6 +74,8 @@ extern struct inodes_stat_t inodes_stat; · 73 unmodified lines
7474 extern int leases_enable, lease_break_time;
7575 extern int sysctl_protected_symlinks;
7676 extern int sysctl_protected_hardlinks;
77+extern int sysctl_protected_fifos;
78+extern int sysctl_protected_regular;
7779
7880 typedef __kernel_rwf_t rwf_t;
7981
include/linux/gfp.h+154−137
@@ -59,29 +59,32 @@ struct vm_area_struct; · 58 unmodified lines
5959 #define __GFP_MOVABLE ((__force gfp_t)___GFP_MOVABLE) /* ZONE_MOVABLE allowed */
6060 #define GFP_ZONEMASK (__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE)
6161
62−/*
62+/**
63+ * DOC: Page mobility and placement hints
64+ *
6365 * Page mobility and placement hints
66+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6467 *
6568 * These flags provide hints about how mobile the page is. Pages with similar
6669 * mobility are placed within the same pageblocks to minimise problems due
6770 * to external fragmentation.
6871 *
69− * __GFP_MOVABLE (also a zone modifier) indicates that the page can be
70− * moved by page migration during memory compaction or can be reclaimed.
72+ * %__GFP_MOVABLE (also a zone modifier) indicates that the page can be
73+ * moved by page migration during memory compaction or can be reclaimed.
7174 *
72− * __GFP_RECLAIMABLE is used for slab allocations that specify
73− * SLAB_RECLAIM_ACCOUNT and whose pages can be freed via shrinkers.
75+ * %__GFP_RECLAIMABLE is used for slab allocations that specify
76+ * SLAB_RECLAIM_ACCOUNT and whose pages can be freed via shrinkers.
7477 *
75− * __GFP_WRITE indicates the caller intends to dirty the page. Where possible,
76− * these pages will be spread between local zones to avoid all the dirty
77− * pages being in one zone (fair zone allocation policy).
78+ * %__GFP_WRITE indicates the caller intends to dirty the page. Where possible,
79+ * these pages will be spread between local zones to avoid all the dirty
80+ * pages being in one zone (fair zone allocation policy).
7881 *
79− * __GFP_HARDWALL enforces the cpuset memory allocation policy.
82+ * %__GFP_HARDWALL enforces the cpuset memory allocation policy.
8083 *
81− * __GFP_THISNODE forces the allocation to be satisified from the requested
82− * node with no fallbacks or placement policy enforcements.
84+ * %__GFP_THISNODE forces the allocation to be satisified from the requested
85+ * node with no fallbacks or placement policy enforcements.
8386 *
84− * __GFP_ACCOUNT causes the allocation to be accounted to kmemcg.
87+ * %__GFP_ACCOUNT causes the allocation to be accounted to kmemcg.
8588 */
8689 #define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE)
8790 #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE)
@@ -89,54 +92,60 @@ struct vm_area_struct; · 1 unmodified line
8992 #define __GFP_THISNODE ((__force gfp_t)___GFP_THISNODE)
9093 #define __GFP_ACCOUNT ((__force gfp_t)___GFP_ACCOUNT)
9194
92−/*
95+/**
96+ * DOC: Watermark modifiers
97+ *
9398 * Watermark modifiers -- controls access to emergency reserves
99+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94100 *
95− * __GFP_HIGH indicates that the caller is high-priority and that granting
96− * the request is necessary before the system can make forward progress.
97− * For example, creating an IO context to clean pages.
101+ * %__GFP_HIGH indicates that the caller is high-priority and that granting
102+ * the request is necessary before the system can make forward progress.
103+ * For example, creating an IO context to clean pages.
98104 *
99− * __GFP_ATOMIC indicates that the caller cannot reclaim or sleep and is
100− * high priority. Users are typically interrupt handlers. This may be
101− * used in conjunction with __GFP_HIGH
105+ * %__GFP_ATOMIC indicates that the caller cannot reclaim or sleep and is
106+ * high priority. Users are typically interrupt handlers. This may be
107+ * used in conjunction with %__GFP_HIGH
102108 *
103− * __GFP_MEMALLOC allows access to all memory. This should only be used when
104− * the caller guarantees the allocation will allow more memory to be freed
105− * very shortly e.g. process exiting or swapping. Users either should
106− * be the MM or co-ordinating closely with the VM (e.g. swap over NFS).
109+ * %__GFP_MEMALLOC allows access to all memory. This should only be used when
110+ * the caller guarantees the allocation will allow more memory to be freed
111+ * very shortly e.g. process exiting or swapping. Users either should
112+ * be the MM or co-ordinating closely with the VM (e.g. swap over NFS).
107113 *
108− * __GFP_NOMEMALLOC is used to explicitly forbid access to emergency reserves.
109− * This takes precedence over the __GFP_MEMALLOC flag if both are set.
114+ * %__GFP_NOMEMALLOC is used to explicitly forbid access to emergency reserves.
115+ * This takes precedence over the %__GFP_MEMALLOC flag if both are set.
110116 */
111117 #define __GFP_ATOMIC ((__force gfp_t)___GFP_ATOMIC)
112118 #define __GFP_HIGH ((__force gfp_t)___GFP_HIGH)
113119 #define __GFP_MEMALLOC ((__force gfp_t)___GFP_MEMALLOC)
114120 #define __GFP_NOMEMALLOC ((__force gfp_t)___GFP_NOMEMALLOC)
115121
116−/*
122+/**
123+ * DOC: Reclaim modifiers
124+ *
117125 * Reclaim modifiers
126+ * ~~~~~~~~~~~~~~~~~
118127 *
119− * __GFP_IO can start physical IO.
128+ * %__GFP_IO can start physical IO.
120129 *
121− * __GFP_FS can call down to the low-level FS. Clearing the flag avoids the
122− * allocator recursing into the filesystem which might already be holding
123− * locks.
130+ * %__GFP_FS can call down to the low-level FS. Clearing the flag avoids the
131+ * allocator recursing into the filesystem which might already be holding
132+ * locks.
124133 *
125− * __GFP_DIRECT_RECLAIM indicates that the caller may enter direct reclaim.
126− * This flag can be cleared to avoid unnecessary delays when a fallback
127− * option is available.
134+ * %__GFP_DIRECT_RECLAIM indicates that the caller may enter direct reclaim.
135+ * This flag can be cleared to avoid unnecessary delays when a fallback
136+ * option is available.
128137 *
129− * __GFP_KSWAPD_RECLAIM indicates that the caller wants to wake kswapd when
130− * the low watermark is reached and have it reclaim pages until the high
131− * watermark is reached. A caller may wish to clear this flag when fallback
132− * options are available and the reclaim is likely to disrupt the system. The
133− * canonical example is THP allocation where a fallback is cheap but
134− * reclaim/compaction may cause indirect stalls.
138+ * %__GFP_KSWAPD_RECLAIM indicates that the caller wants to wake kswapd when
139+ * the low watermark is reached and have it reclaim pages until the high
140+ * watermark is reached. A caller may wish to clear this flag when fallback
141+ * options are available and the reclaim is likely to disrupt the system. The
142+ * canonical example is THP allocation where a fallback is cheap but
143+ * reclaim/compaction may cause indirect stalls.
135144 *
136− * __GFP_RECLAIM is shorthand to allow/forbid both direct and kswapd reclaim.
145+ * %__GFP_RECLAIM is shorthand to allow/forbid both direct and kswapd reclaim.
137146 *
138147 * The default allocator behavior depends on the request size. We have a concept
139− * of so called costly allocations (with order > PAGE_ALLOC_COSTLY_ORDER).
148+ * of so called costly allocations (with order > %PAGE_ALLOC_COSTLY_ORDER).
140149 * !costly allocations are too essential to fail so they are implicitly
141150 * non-failing by default (with some exceptions like OOM victims might fail so
142151 * the caller still has to check for failures) while costly requests try to be
@@ -144,40 +153,40 @@ struct vm_area_struct; · 1 unmodified line
144153 * The following three modifiers might be used to override some of these
145154 * implicit rules
146155 *
147− * __GFP_NORETRY: The VM implementation will try only very lightweight
148− * memory direct reclaim to get some memory under memory pressure (thus
149− * it can sleep). It will avoid disruptive actions like OOM killer. The
150− * caller must handle the failure which is quite likely to happen under
151− * heavy memory pressure. The flag is suitable when failure can easily be
152− * handled at small cost, such as reduced throughput
153− *
154− * __GFP_RETRY_MAYFAIL: The VM implementation will retry memory reclaim
155− * procedures that have previously failed if there is some indication
156− * that progress has been made else where. It can wait for other
157− * tasks to attempt high level approaches to freeing memory such as
158− * compaction (which removes fragmentation) and page-out.
159− * There is still a definite limit to the number of retries, but it is
160− * a larger limit than with __GFP_NORETRY.
161− * Allocations with this flag may fail, but only when there is
162− * genuinely little unused memory. While these allocations do not
163− * directly trigger the OOM killer, their failure indicates that
164− * the system is likely to need to use the OOM killer soon. The
165− * caller must handle failure, but can reasonably do so by failing
166− * a higher-level request, or completing it only in a much less
167− * efficient manner.
168− * If the allocation does fail, and the caller is in a position to
169− * free some non-essential memory, doing so could benefit the system
170− * as a whole.
171− *
172− * __GFP_NOFAIL: The VM implementation _must_ retry infinitely: the caller
173− * cannot handle allocation failures. The allocation could block
174− * indefinitely but will never return with failure. Testing for
175− * failure is pointless.
176− * New users should be evaluated carefully (and the flag should be
177− * used only when there is no reasonable failure policy) but it is
178− * definitely preferable to use the flag rather than opencode endless
179− * loop around allocator.
180− * Using this flag for costly allocations is _highly_ discouraged.
156+ * %__GFP_NORETRY: The VM implementation will try only very lightweight
157+ * memory direct reclaim to get some memory under memory pressure (thus
158+ * it can sleep). It will avoid disruptive actions like OOM killer. The
159+ * caller must handle the failure which is quite likely to happen under
160+ * heavy memory pressure. The flag is suitable when failure can easily be
161+ * handled at small cost, such as reduced throughput
162+ *
163+ * %__GFP_RETRY_MAYFAIL: The VM implementation will retry memory reclaim
164+ * procedures that have previously failed if there is some indication
165+ * that progress has been made else where. It can wait for other
166+ * tasks to attempt high level approaches to freeing memory such as
167+ * compaction (which removes fragmentation) and page-out.
168+ * There is still a definite limit to the number of retries, but it is
169+ * a larger limit than with %__GFP_NORETRY.
170+ * Allocations with this flag may fail, but only when there is
171+ * genuinely little unused memory. While these allocations do not
172+ * directly trigger the OOM killer, their failure indicates that
173+ * the system is likely to need to use the OOM killer soon. The
174+ * caller must handle failure, but can reasonably do so by failing
175+ * a higher-level request, or completing it only in a much less
176+ * efficient manner.
177+ * If the allocation does fail, and the caller is in a position to
178+ * free some non-essential memory, doing so could benefit the system
179+ * as a whole.
180+ *
181+ * %__GFP_NOFAIL: The VM implementation _must_ retry infinitely: the caller
182+ * cannot handle allocation failures. The allocation could block
183+ * indefinitely but will never return with failure. Testing for
184+ * failure is pointless.
185+ * New users should be evaluated carefully (and the flag should be
186+ * used only when there is no reasonable failure policy) but it is
187+ * definitely preferable to use the flag rather than opencode endless
188+ * loop around allocator.
189+ * Using this flag for costly allocations is _highly_ discouraged.
181190 */
182191 #define __GFP_IO ((__force gfp_t)___GFP_IO)
183192 #define __GFP_FS ((__force gfp_t)___GFP_FS)
@@ -188,14 +197,17 @@ struct vm_area_struct; · 4 unmodified lines
188197 #define __GFP_NOFAIL ((__force gfp_t)___GFP_NOFAIL)
189198 #define __GFP_NORETRY ((__force gfp_t)___GFP_NORETRY)
190199
191−/*
200+/**
201+ * DOC: Action modifiers
202+ *
192203 * Action modifiers
204+ * ~~~~~~~~~~~~~~~~
193205 *
194− * __GFP_NOWARN suppresses allocation failure reports.
206+ * %__GFP_NOWARN suppresses allocation failure reports.
195207 *
196− * __GFP_COMP address compound page metadata.
208+ * %__GFP_COMP address compound page metadata.
197209 *
198− * __GFP_ZERO returns a zeroed page on success.
210+ * %__GFP_ZERO returns a zeroed page on success.
199211 */
200212 #define __GFP_NOWARN ((__force gfp_t)___GFP_NOWARN)
201213 #define __GFP_COMP ((__force gfp_t)___GFP_COMP)
@@ -208,66 +220,71 @@ struct vm_area_struct; · 6 unmodified lines
208220 #define __GFP_BITS_SHIFT (23 + IS_ENABLED(CONFIG_LOCKDEP))
209221 #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
210222
211−/*
223+/**
224+ * DOC: Useful GFP flag combinations
225+ *
226+ * Useful GFP flag combinations
227+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
228+ *
212229 * Useful GFP flag combinations that are commonly used. It is recommended
213230 * that subsystems start with one of these combinations and then set/clear
214− * __GFP_FOO flags as necessary.
215− *
216− * GFP_ATOMIC users can not sleep and need the allocation to succeed. A lower
217− * watermark is applied to allow access to "atomic reserves"
218− *
219− * GFP_KERNEL is typical for kernel-internal allocations. The caller requires
220− * ZONE_NORMAL or a lower zone for direct access but can direct reclaim.
221− *
222− * GFP_KERNEL_ACCOUNT is the same as GFP_KERNEL, except the allocation is
223− * accounted to kmemcg.
224− *
225− * GFP_NOWAIT is for kernel allocations that should not stall for direct
226− * reclaim, start physical IO or use any filesystem callback.
227− *
228− * GFP_NOIO will use direct reclaim to discard clean pages or slab pages
229− * that do not require the starting of any physical IO.
230− * Please try to avoid using this flag directly and instead use
231− * memalloc_noio_{save,restore} to mark the whole scope which cannot
232− * perform any IO with a short explanation why. All allocation requests
233− * will inherit GFP_NOIO implicitly.
234− *
235− * GFP_NOFS will use direct reclaim but will not use any filesystem interfaces.
236− * Please try to avoid using this flag directly and instead use
237− * memalloc_nofs_{save,restore} to mark the whole scope which cannot/shouldn't
238− * recurse into the FS layer with a short explanation why. All allocation
239− * requests will inherit GFP_NOFS implicitly.
240− *
241− * GFP_USER is for userspace allocations that also need to be directly
242− * accessibly by the kernel or hardware. It is typically used by hardware
243− * for buffers that are mapped to userspace (e.g. graphics) that hardware
244− * still must DMA to. cpuset limits are enforced for these allocations.
245− *
246− * GFP_DMA exists for historical reasons and should be avoided where possible.
247− * The flags indicates that the caller requires that the lowest zone be
248− * used (ZONE_DMA or 16M on x86-64). Ideally, this would be removed but
249− * it would require careful auditing as some users really require it and
250− * others use the flag to avoid lowmem reserves in ZONE_DMA and treat the
251− * lowest zone as a type of emergency reserve.
252− *
253− * GFP_DMA32 is similar to GFP_DMA except that the caller requires a 32-bit
254− * address.
255− *
256− * GFP_HIGHUSER is for userspace allocations that may be mapped to userspace,
257− * do not need to be directly accessible by the kernel but that cannot
258− * move once in use. An example may be a hardware allocation that maps
259− * data directly into userspace but has no addressing limitations.
260− *
261− * GFP_HIGHUSER_MOVABLE is for userspace allocations that the kernel does not
262− * need direct access to but can use kmap() when access is required. They
263− * are expected to be movable via page reclaim or page migration. Typically,
264− * pages on the LRU would also be allocated with GFP_HIGHUSER_MOVABLE.
265− *
266− * GFP_TRANSHUGE and GFP_TRANSHUGE_LIGHT are used for THP allocations. They are
267− * compound allocations that will generally fail quickly if memory is not
268− * available and will not wake kswapd/kcompactd on failure. The _LIGHT
269− * version does not attempt reclaim/compaction at all and is by default used
270− * in page fault path, while the non-light is used by khugepaged.
231+ * %__GFP_FOO flags as necessary.
232+ *
233+ * %GFP_ATOMIC users can not sleep and need the allocation to succeed. A lower
234+ * watermark is applied to allow access to "atomic reserves"
235+ *
236+ * %GFP_KERNEL is typical for kernel-internal allocations. The caller requires
237+ * %ZONE_NORMAL or a lower zone for direct access but can direct reclaim.
238+ *
239+ * %GFP_KERNEL_ACCOUNT is the same as GFP_KERNEL, except the allocation is
240+ * accounted to kmemcg.
241+ *
242+ * %GFP_NOWAIT is for kernel allocations that should not stall for direct
243+ * reclaim, start physical IO or use any filesystem callback.
244+ *
245+ * %GFP_NOIO will use direct reclaim to discard clean pages or slab pages
246+ * that do not require the starting of any physical IO.
247+ * Please try to avoid using this flag directly and instead use
248+ * memalloc_noio_{save,restore} to mark the whole scope which cannot
249+ * perform any IO with a short explanation why. All allocation requests
250+ * will inherit GFP_NOIO implicitly.
251+ *
252+ * %GFP_NOFS will use direct reclaim but will not use any filesystem interfaces.
253+ * Please try to avoid using this flag directly and instead use
254+ * memalloc_nofs_{save,restore} to mark the whole scope which cannot/shouldn't
255+ * recurse into the FS layer with a short explanation why. All allocation
256+ * requests will inherit GFP_NOFS implicitly.
257+ *
258+ * %GFP_USER is for userspace allocations that also need to be directly
259+ * accessibly by the kernel or hardware. It is typically used by hardware
260+ * for buffers that are mapped to userspace (e.g. graphics) that hardware
261+ * still must DMA to. cpuset limits are enforced for these allocations.
262+ *
263+ * %GFP_DMA exists for historical reasons and should be avoided where possible.
264+ * The flags indicates that the caller requires that the lowest zone be
265+ * used (%ZONE_DMA or 16M on x86-64). Ideally, this would be removed but
266+ * it would require careful auditing as some users really require it and
267+ * others use the flag to avoid lowmem reserves in %ZONE_DMA and treat the
268+ * lowest zone as a type of emergency reserve.
269+ *
270+ * %GFP_DMA32 is similar to %GFP_DMA except that the caller requires a 32-bit
271+ * address.
272+ *
273+ * %GFP_HIGHUSER is for userspace allocations that may be mapped to userspace,
274+ * do not need to be directly accessible by the kernel but that cannot
275+ * move once in use. An example may be a hardware allocation that maps
276+ * data directly into userspace but has no addressing limitations.
277+ *
278+ * %GFP_HIGHUSER_MOVABLE is for userspace allocations that the kernel does not
279+ * need direct access to but can use kmap() when access is required. They
280+ * are expected to be movable via page reclaim or page migration. Typically,
281+ * pages on the LRU would also be allocated with %GFP_HIGHUSER_MOVABLE.
282+ *
283+ * %GFP_TRANSHUGE and %GFP_TRANSHUGE_LIGHT are used for THP allocations. They
284+ * are compound allocations that will generally fail quickly if memory is not
285+ * available and will not wake kswapd/kcompactd on failure. The _LIGHT
286+ * version does not attempt reclaim/compaction at all and is by default used
287+ * in page fault path, while the non-light is used by khugepaged.
271288 */
272289 #define GFP_ATOMIC (__GFP_HIGH|__GFP_ATOMIC|__GFP_KSWAPD_RECLAIM)
273290 #define GFP_KERNEL (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
include/linux/huge_mm.h+5−4
@@ -6,7 +6,7 @@ · 5 unmodified lines
66
77 #include <linux/fs.h> /* only for vma_is_dax() */
88
9−extern int do_huge_pmd_anonymous_page(struct vm_fault *vmf);
9+extern vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf);
1010 extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
1111 pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
1212 struct vm_area_struct *vma);
@@ -23,7 +23,7 @@ static inline void huge_pud_set_accessed(struct vm_fault *vmf, pud_t orig_pud) · 10 unmodified lines
2323 }
2424 #endif
2525
26−extern int do_huge_pmd_wp_page(struct vm_fault *vmf, pmd_t orig_pmd);
26+extern vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf, pmd_t orig_pmd);
2727 extern struct page *follow_trans_huge_pmd(struct vm_area_struct *vma,
2828 unsigned long addr,
2929 pmd_t *pmd,
@@ -216,7 +216,7 @@ struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr, · 186 unmodified lines
216216 struct page *follow_devmap_pud(struct vm_area_struct *vma, unsigned long addr,
217217 pud_t *pud, int flags);
218218
219−extern int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t orig_pmd);
219+extern vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t orig_pmd);
220220
221221 extern struct page *huge_zero_page;
222222
@@ -321,7 +321,8 @@ static inline spinlock_t *pud_trans_huge_lock(pud_t *pud, · 98 unmodified lines
321321 return NULL;
322322 }
323323
324−static inline int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t orig_pmd)
324+static inline vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf,
325+ pmd_t orig_pmd)
325326 {
326327 return 0;
327328 }
include/linux/hugetlb.h+1−1
@@ -105,7 +105,7 @@ void hugetlb_report_meminfo(struct seq_file *); · 104 unmodified lines
105105 int hugetlb_report_node_meminfo(int, char *);
106106 void hugetlb_show_meminfo(void);
107107 unsigned long hugetlb_total_pages(void);
108−int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
108+vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
109109 unsigned long address, unsigned int flags);
110110 int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, pte_t *dst_pte,
111111 struct vm_area_struct *dst_vma,
include/linux/mm.h+7−7
@@ -728,10 +728,10 @@ static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma) · 727 unmodified lines
728728 return pte;
729729 }
730730
731−int alloc_set_pte(struct vm_fault *vmf, struct mem_cgroup *memcg,
731+vm_fault_t alloc_set_pte(struct vm_fault *vmf, struct mem_cgroup *memcg,
732732 struct page *page);
733−int finish_fault(struct vm_fault *vmf);
734−int finish_mkwrite_fault(struct vm_fault *vmf);
733+vm_fault_t finish_fault(struct vm_fault *vmf);
734+vm_fault_t finish_mkwrite_fault(struct vm_fault *vmf);
735735 #endif
736736
737737 /*
@@ -1403,8 +1403,8 @@ int generic_error_remove_page(struct address_space *mapping, struct page *page); · 665 unmodified lines
14031403 int invalidate_inode_page(struct page *page);
14041404
14051405 #ifdef CONFIG_MMU
1406−extern int handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
1407− unsigned int flags);
1406+extern vm_fault_t handle_mm_fault(struct vm_area_struct *vma,
1407+ unsigned long address, unsigned int flags);
14081408 extern int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm,
14091409 unsigned long address, unsigned int fault_flags,
14101410 bool *unlocked);
@@ -1413,7 +1413,7 @@ void unmap_mapping_pages(struct address_space *mapping, · 2 unmodified lines
14131413 void unmap_mapping_range(struct address_space *mapping,
14141414 loff_t const holebegin, loff_t const holelen, int even_cows);
14151415 #else
1416−static inline int handle_mm_fault(struct vm_area_struct *vma,
1416+static inline vm_fault_t handle_mm_fault(struct vm_area_struct *vma,
14171417 unsigned long address, unsigned int flags)
14181418 {
14191419 /* should never happen if there's no MMU */
@@ -2563,7 +2563,7 @@ static inline struct page *follow_page(struct vm_area_struct *vma, · 1143 unmodified lines
25632563 #define FOLL_COW 0x4000 /* internal GUP flag */
25642564 #define FOLL_ANON 0x8000 /* don't do file mappings */
25652565
2566−static inline int vm_fault_to_errno(int vm_fault, int foll_flags)
2566+static inline int vm_fault_to_errno(vm_fault_t vm_fault, int foll_flags)
25672567 {
25682568 if (vm_fault & VM_FAULT_OOM)
25692569 return -ENOMEM;
include/linux/oom.h+1−1
@@ -88,7 +88,7 @@ static inline bool mm_is_oom_victim(struct mm_struct *mm) · 87 unmodified lines
8888 *
8989 * Return 0 when the PF is safe VM_FAULT_SIGBUS otherwise.
9090 */
91−static inline int check_stable_address_space(struct mm_struct *mm)
91+static inline vm_fault_t check_stable_address_space(struct mm_struct *mm)
9292 {
9393 if (unlikely(test_bit(MMF_UNSTABLE, &mm->flags)))
9494 return VM_FAULT_SIGBUS;
include/linux/page-flags.h+5−0
@@ -369,8 +369,13 @@ PAGEFLAG_FALSE(Uncached) · 368 unmodified lines
369369 PAGEFLAG(HWPoison, hwpoison, PF_ANY)
370370 TESTSCFLAG(HWPoison, hwpoison, PF_ANY)
371371 #define __PG_HWPOISON (1UL << PG_hwpoison)
372+extern bool set_hwpoison_free_buddy_page(struct page *page);
372373 #else
373374 PAGEFLAG_FALSE(HWPoison)
375+static inline bool set_hwpoison_free_buddy_page(struct page *page)
376+{
377+ return 0;
378+}
374379 #define __PG_HWPOISON 0
375380 #endif
376381
include/linux/swapops.h+3−12
@@ -4,6 +4,7 @@ · 3 unmodified lines
44
55 #include <linux/radix-tree.h>
66 #include <linux/bug.h>
7+#include <linux/mm_types.h>
78
89 /*
910 * swapcache pages are stored in the swapper_space radix tree. We want to
@@ -134,7 +135,7 @@ static inline struct page *device_private_entry_to_page(swp_entry_t entry) · 124 unmodified lines
134135 return pfn_to_page(swp_offset(entry));
135136 }
136137
137−int device_private_entry_fault(struct vm_area_struct *vma,
138+vm_fault_t device_private_entry_fault(struct vm_area_struct *vma,
138139 unsigned long addr,
139140 swp_entry_t entry,
140141 unsigned int flags,
@@ -169,7 +170,7 @@ static inline struct page *device_private_entry_to_page(swp_entry_t entry) · 28 unmodified lines
169170 return NULL;
170171 }
171172
172−static inline int device_private_entry_fault(struct vm_area_struct *vma,
173+static inline vm_fault_t device_private_entry_fault(struct vm_area_struct *vma,
173174 unsigned long addr,
174175 swp_entry_t entry,
175176 unsigned int flags,
@@ -340,11 +341,6 @@ static inline int is_hwpoison_entry(swp_entry_t entry) · 164 unmodified lines
340341 return swp_type(entry) == SWP_HWPOISON;
341342 }
342343
343−static inline bool test_set_page_hwpoison(struct page *page)
344−{
345− return TestSetPageHWPoison(page);
346−}
347−
348344 static inline void num_poisoned_pages_inc(void)
349345 {
350346 atomic_long_inc(&num_poisoned_pages);
@@ -367,11 +363,6 @@ static inline int is_hwpoison_entry(swp_entry_t swp) · 16 unmodified lines
367363 return 0;
368364 }
369365
370−static inline bool test_set_page_hwpoison(struct page *page)
371−{
372− return false;
373−}
374−
375366 static inline void num_poisoned_pages_inc(void)
376367 {
377368 }
include/linux/userfaultfd_k.h+3−2
@@ -28,7 +28,7 @@ · 27 unmodified lines
2828 #define UFFD_SHARED_FCNTL_FLAGS (O_CLOEXEC | O_NONBLOCK)
2929 #define UFFD_FLAGS_SET (EFD_SHARED_FCNTL_FLAGS)
3030
31−extern int handle_userfault(struct vm_fault *vmf, unsigned long reason);
31+extern vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason);
3232
3333 extern ssize_t mcopy_atomic(struct mm_struct *dst_mm, unsigned long dst_start,
3434 unsigned long src_start, unsigned long len,
@@ -77,7 +77,8 @@ extern void userfaultfd_unmap_complete(struct mm_struct *mm, · 42 unmodified lines
7777 #else /* CONFIG_USERFAULTFD */
7878
7979 /* mm helpers */
80−static inline int handle_userfault(struct vm_fault *vmf, unsigned long reason)
80+static inline vm_fault_t handle_userfault(struct vm_fault *vmf,
81+ unsigned long reason)
8182 {
8283 return VM_FAULT_SIGBUS;
8384 }
kernel/events/callchain.c+1−1
@@ -4,7 +4,7 @@ · 3 unmodified lines
44 * Copyright (C) 2008 Thomas Gleixner <tglx@linutronix.de>
55 * Copyright (C) 2008-2011 Red Hat, Inc., Ingo Molnar
66 * Copyright (C) 2008-2011 Red Hat, Inc., Peter Zijlstra
7− * Copyright � 2009 Paul Mackerras, IBM Corp. <paulus@au1.ibm.com>
7+ * Copyright © 2009 Paul Mackerras, IBM Corp. <paulus@au1.ibm.com>
88 *
99 * For licensing details see kernel-base/COPYING
1010 */
kernel/memremap.c+1−1
@@ -43,7 +43,7 @@ static unsigned long order_at(struct resource *res, unsigned long pgoff) · 42 unmodified lines
4343 pgoff += 1UL << order, order = order_at((res), pgoff))
4444
4545 #if IS_ENABLED(CONFIG_DEVICE_PRIVATE)
46−int device_private_entry_fault(struct vm_area_struct *vma,
46+vm_fault_t device_private_entry_fault(struct vm_area_struct *vma,
4747 unsigned long addr,
4848 swp_entry_t entry,
4949 unsigned int flags,
kernel/sysctl.c+18−0
@@ -1807,6 +1807,24 @@ static struct ctl_table fs_table[] = { · 1806 unmodified lines
18071807 .extra1 = &zero,
18081808 .extra2 = &one,
18091809 },
1810+ {
1811+ .procname = "protected_fifos",
1812+ .data = &sysctl_protected_fifos,
1813+ .maxlen = sizeof(int),
1814+ .mode = 0600,
1815+ .proc_handler = proc_dointvec_minmax,
1816+ .extra1 = &zero,
1817+ .extra2 = &two,
1818+ },
1819+ {
1820+ .procname = "protected_regular",
1821+ .data = &sysctl_protected_regular,
1822+ .maxlen = sizeof(int),
1823+ .mode = 0600,
1824+ .proc_handler = proc_dointvec_minmax,
1825+ .extra1 = &zero,
1826+ .extra2 = &two,
1827+ },
18101828 {
18111829 .procname = "suid_dumpable",
18121830 .data = &suid_dumpable,
lib/fonts/font_7x14.c+128−128
@@ -2058,7 +2058,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 2057 unmodified lines
20582058 0x00, /* 0000000 */
20592059 0x00, /* 0000000 */
20602060
2061− /* 128 0x80 '�' */
2061+ /* 128 0x80 'Ç' */
20622062 0x00, /* 0000000 */
20632063 0x38, /* 0011100 */
20642064 0x6c, /* 0110110 */
@@ -2074,7 +2074,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
20742074 0x70, /* 0111000 */
20752075 0x00, /* 0000000 */
20762076
2077− /* 129 0x81 '�' */
2077+ /* 129 0x81 'ü' */
20782078 0x00, /* 0000000 */
20792079 0xcc, /* 1100110 */
20802080 0x00, /* 0000000 */
@@ -2090,7 +2090,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
20902090 0x00, /* 0000000 */
20912091 0x00, /* 0000000 */
20922092
2093− /* 130 0x82 '�' */
2093+ /* 130 0x82 'é' */
20942094 0x0c, /* 0000110 */
20952095 0x18, /* 0001100 */
20962096 0x30, /* 0011000 */
@@ -2106,7 +2106,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
21062106 0x00, /* 0000000 */
21072107 0x00, /* 0000000 */
21082108
2109− /* 131 0x83 '�' */
2109+ /* 131 0x83 'â' */
21102110 0x10, /* 0001000 */
21112111 0x38, /* 0011100 */
21122112 0x6c, /* 0110110 */
@@ -2122,7 +2122,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
21222122 0x00, /* 0000000 */
21232123 0x00, /* 0000000 */
21242124
2125− /* 132 0x84 '�' */
2125+ /* 132 0x84 'ä' */
21262126 0x00, /* 0000000 */
21272127 0xcc, /* 1100110 */
21282128 0x00, /* 0000000 */
@@ -2138,7 +2138,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
21382138 0x00, /* 0000000 */
21392139 0x00, /* 0000000 */
21402140
2141− /* 133 0x85 '�' */
2141+ /* 133 0x85 'à' */
21422142 0x60, /* 0110000 */
21432143 0x30, /* 0011000 */
21442144 0x18, /* 0001100 */
@@ -2154,7 +2154,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
21542154 0x00, /* 0000000 */
21552155 0x00, /* 0000000 */
21562156
2157− /* 134 0x86 '�' */
2157+ /* 134 0x86 'å' */
21582158 0x38, /* 0011100 */
21592159 0x6c, /* 0110110 */
21602160 0x38, /* 0011100 */
@@ -2170,7 +2170,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
21702170 0x00, /* 0000000 */
21712171 0x00, /* 0000000 */
21722172
2173− /* 135 0x87 '�' */
2173+ /* 135 0x87 'ç' */
21742174 0x00, /* 0000000 */
21752175 0x00, /* 0000000 */
21762176 0x00, /* 0000000 */
@@ -2186,7 +2186,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
21862186 0x30, /* 0011000 */
21872187 0xe0, /* 1110000 */
21882188
2189− /* 136 0x88 '�' */
2189+ /* 136 0x88 'ê' */
21902190 0x10, /* 0001000 */
21912191 0x38, /* 0011100 */
21922192 0x6c, /* 0110110 */
@@ -2202,7 +2202,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
22022202 0x00, /* 0000000 */
22032203 0x00, /* 0000000 */
22042204
2205− /* 137 0x89 '�' */
2205+ /* 137 0x89 'ë' */
22062206 0x00, /* 0000000 */
22072207 0xcc, /* 1100110 */
22082208 0x00, /* 0000000 */
@@ -2218,7 +2218,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
22182218 0x00, /* 0000000 */
22192219 0x00, /* 0000000 */
22202220
2221− /* 138 0x8a '�' */
2221+ /* 138 0x8a 'è' */
22222222 0xc0, /* 1100000 */
22232223 0x60, /* 0110000 */
22242224 0x30, /* 0011000 */
@@ -2234,7 +2234,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
22342234 0x00, /* 0000000 */
22352235 0x00, /* 0000000 */
22362236
2237− /* 139 0x8b '�' */
2237+ /* 139 0x8b 'ï' */
22382238 0x00, /* 0000000 */
22392239 0x6c, /* 0110110 */
22402240 0x00, /* 0000000 */
@@ -2250,7 +2250,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
22502250 0x00, /* 0000000 */
22512251 0x00, /* 0000000 */
22522252
2253− /* 140 0x8c '�' */
2253+ /* 140 0x8c 'î' */
22542254 0x30, /* 0011000 */
22552255 0x78, /* 0111100 */
22562256 0xcc, /* 1100110 */
@@ -2266,7 +2266,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
22662266 0x00, /* 0000000 */
22672267 0x00, /* 0000000 */
22682268
2269− /* 141 0x8d '�' */
2269+ /* 141 0x8d 'ì' */
22702270 0xc0, /* 1100000 */
22712271 0x60, /* 0110000 */
22722272 0x30, /* 0011000 */
@@ -2282,7 +2282,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
22822282 0x00, /* 0000000 */
22832283 0x00, /* 0000000 */
22842284
2285− /* 142 0x8e '�' */
2285+ /* 142 0x8e 'Ä' */
22862286 0x00, /* 0000000 */
22872287 0xcc, /* 1100110 */
22882288 0x00, /* 0000000 */
@@ -2298,7 +2298,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
22982298 0x00, /* 0000000 */
22992299 0x00, /* 0000000 */
23002300
2301− /* 143 0x8f '�' */
2301+ /* 143 0x8f 'Å' */
23022302 0x30, /* 0011000 */
23032303 0x48, /* 0100100 */
23042304 0x48, /* 0100100 */
@@ -2314,7 +2314,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
23142314 0x00, /* 0000000 */
23152315 0x00, /* 0000000 */
23162316
2317− /* 144 0x90 '�' */
2317+ /* 144 0x90 'É' */
23182318 0x18, /* 0001100 */
23192319 0x30, /* 0011000 */
23202320 0xfc, /* 1111110 */
@@ -2330,7 +2330,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
23302330 0x00, /* 0000000 */
23312331 0x00, /* 0000000 */
23322332
2333− /* 145 0x91 '�' */
2333+ /* 145 0x91 'æ' */
23342334 0x00, /* 0000000 */
23352335 0x00, /* 0000000 */
23362336 0x00, /* 0000000 */
@@ -2346,7 +2346,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
23462346 0x00, /* 0000000 */
23472347 0x00, /* 0000000 */
23482348
2349− /* 146 0x92 '�' */
2349+ /* 146 0x92 'Æ' */
23502350 0x00, /* 0000000 */
23512351 0x3e, /* 0011111 */
23522352 0x6c, /* 0110110 */
@@ -2362,7 +2362,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
23622362 0x00, /* 0000000 */
23632363 0x00, /* 0000000 */
23642364
2365− /* 147 0x93 '�' */
2365+ /* 147 0x93 'ô' */
23662366 0x10, /* 0001000 */
23672367 0x38, /* 0011100 */
23682368 0x6c, /* 0110110 */
@@ -2378,7 +2378,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
23782378 0x00, /* 0000000 */
23792379 0x00, /* 0000000 */
23802380
2381− /* 148 0x94 '�' */
2381+ /* 148 0x94 'ö' */
23822382 0x00, /* 0000000 */
23832383 0xcc, /* 1100110 */
23842384 0x00, /* 0000000 */
@@ -2394,7 +2394,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
23942394 0x00, /* 0000000 */
23952395 0x00, /* 0000000 */
23962396
2397− /* 149 0x95 '�' */
2397+ /* 149 0x95 'ò' */
23982398 0xc0, /* 1100000 */
23992399 0x60, /* 0110000 */
24002400 0x30, /* 0011000 */
@@ -2410,7 +2410,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
24102410 0x00, /* 0000000 */
24112411 0x00, /* 0000000 */
24122412
2413− /* 150 0x96 '�' */
2413+ /* 150 0x96 'û' */
24142414 0x30, /* 0011000 */
24152415 0x78, /* 0111100 */
24162416 0xcc, /* 1100110 */
@@ -2426,7 +2426,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
24262426 0x00, /* 0000000 */
24272427 0x00, /* 0000000 */
24282428
2429− /* 151 0x97 '�' */
2429+ /* 151 0x97 'ù' */
24302430 0x60, /* 0110000 */
24312431 0x30, /* 0011000 */
24322432 0x18, /* 0001100 */
@@ -2442,7 +2442,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
24422442 0x00, /* 0000000 */
24432443 0x00, /* 0000000 */
24442444
2445− /* 152 0x98 '�' */
2445+ /* 152 0x98 'ÿ' */
24462446 0x00, /* 0000000 */
24472447 0xcc, /* 1100110 */
24482448 0x00, /* 0000000 */
@@ -2458,7 +2458,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
24582458 0x18, /* 0001100 */
24592459 0x70, /* 0111000 */
24602460
2461− /* 153 0x99 '�' */
2461+ /* 153 0x99 'Ö' */
24622462 0xcc, /* 1100110 */
24632463 0x00, /* 0000000 */
24642464 0x78, /* 0111100 */
@@ -2474,7 +2474,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
24742474 0x00, /* 0000000 */
24752475 0x00, /* 0000000 */
24762476
2477− /* 154 0x9a '�' */
2477+ /* 154 0x9a 'Ü' */
24782478 0xcc, /* 1100110 */
24792479 0x00, /* 0000000 */
24802480 0xcc, /* 1100110 */
@@ -2490,7 +2490,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
24902490 0x00, /* 0000000 */
24912491 0x00, /* 0000000 */
24922492
2493− /* 155 0x9b '�' */
2493+ /* 155 0x9b '¢' */
24942494 0x30, /* 0011000 */
24952495 0x30, /* 0011000 */
24962496 0x7c, /* 0111110 */
@@ -2506,7 +2506,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
25062506 0x00, /* 0000000 */
25072507 0x00, /* 0000000 */
25082508
2509− /* 156 0x9c '�' */
2509+ /* 156 0x9c '£' */
25102510 0x38, /* 0011100 */
25112511 0x6c, /* 0110110 */
25122512 0x64, /* 0110010 */
@@ -2522,7 +2522,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
25222522 0x00, /* 0000000 */
25232523 0x00, /* 0000000 */
25242524
2525− /* 157 0x9d '�' */
2525+ /* 157 0x9d '¥' */
25262526 0x00, /* 0000000 */
25272527 0xcc, /* 1100110 */
25282528 0xcc, /* 1100110 */
@@ -2538,7 +2538,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
25382538 0x00, /* 0000000 */
25392539 0x00, /* 0000000 */
25402540
2541− /* 158 0x9e '�' */
2541+ /* 158 0x9e '₧' */
25422542 0xf8, /* 1111100 */
25432543 0xcc, /* 1100110 */
25442544 0xcc, /* 1100110 */
@@ -2554,7 +2554,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
25542554 0x00, /* 0000000 */
25552555 0x00, /* 0000000 */
25562556
2557− /* 159 0x9f '�' */
2557+ /* 159 0x9f 'ƒ' */
25582558 0x1c, /* 0001110 */
25592559 0x36, /* 0011011 */
25602560 0x30, /* 0011000 */
@@ -2570,7 +2570,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
25702570 0x00, /* 0000000 */
25712571 0x00, /* 0000000 */
25722572
2573− /* 160 0xa0 '�' */
2573+ /* 160 0xa0 'á' */
25742574 0x18, /* 0001100 */
25752575 0x30, /* 0011000 */
25762576 0x60, /* 0110000 */
@@ -2586,7 +2586,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
25862586 0x00, /* 0000000 */
25872587 0x00, /* 0000000 */
25882588
2589− /* 161 0xa1 '�' */
2589+ /* 161 0xa1 'í' */
25902590 0x18, /* 0001100 */
25912591 0x30, /* 0011000 */
25922592 0x60, /* 0110000 */
@@ -2602,7 +2602,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
26022602 0x00, /* 0000000 */
26032603 0x00, /* 0000000 */
26042604
2605− /* 162 0xa2 '�' */
2605+ /* 162 0xa2 'ó' */
26062606 0x18, /* 0001100 */
26072607 0x30, /* 0011000 */
26082608 0x60, /* 0110000 */
@@ -2618,7 +2618,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
26182618 0x00, /* 0000000 */
26192619 0x00, /* 0000000 */
26202620
2621− /* 163 0xa3 '�' */
2621+ /* 163 0xa3 'ú' */
26222622 0x18, /* 0001100 */
26232623 0x30, /* 0011000 */
26242624 0x60, /* 0110000 */
@@ -2634,7 +2634,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
26342634 0x00, /* 0000000 */
26352635 0x00, /* 0000000 */
26362636
2637− /* 164 0xa4 '�' */
2637+ /* 164 0xa4 'ñ' */
26382638 0x00, /* 0000000 */
26392639 0x76, /* 0111011 */
26402640 0xdc, /* 1101110 */
@@ -2650,7 +2650,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
26502650 0x00, /* 0000000 */
26512651 0x00, /* 0000000 */
26522652
2653− /* 165 0xa5 '�' */
2653+ /* 165 0xa5 'Ñ' */
26542654 0x76, /* 0111011 */
26552655 0xdc, /* 1101110 */
26562656 0x00, /* 0000000 */
@@ -2666,7 +2666,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
26662666 0x00, /* 0000000 */
26672667 0x00, /* 0000000 */
26682668
2669− /* 166 0xa6 '�' */
2669+ /* 166 0xa6 'ª' */
26702670 0x00, /* 0000000 */
26712671 0x78, /* 0111100 */
26722672 0xd8, /* 1101100 */
@@ -2682,7 +2682,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
26822682 0x00, /* 0000000 */
26832683 0x00, /* 0000000 */
26842684
2685− /* 167 0xa7 '�' */
2685+ /* 167 0xa7 'º' */
26862686 0x00, /* 0000000 */
26872687 0x70, /* 0111000 */
26882688 0xd8, /* 1101100 */
@@ -2698,7 +2698,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
26982698 0x00, /* 0000000 */
26992699 0x00, /* 0000000 */
27002700
2701− /* 168 0xa8 '�' */
2701+ /* 168 0xa8 '¿' */
27022702 0x00, /* 0000000 */
27032703 0x30, /* 0011000 */
27042704 0x30, /* 0011000 */
@@ -2714,7 +2714,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
27142714 0x00, /* 0000000 */
27152715 0x00, /* 0000000 */
27162716
2717− /* 169 0xa9 '�' */
2717+ /* 169 0xa9 '⌐' */
27182718 0x00, /* 0000000 */
27192719 0x00, /* 0000000 */
27202720 0x00, /* 0000000 */
@@ -2730,7 +2730,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
27302730 0x00, /* 0000000 */
27312731 0x00, /* 0000000 */
27322732
2733− /* 170 0xaa '�' */
2733+ /* 170 0xaa '¬' */
27342734 0x00, /* 0000000 */
27352735 0x00, /* 0000000 */
27362736 0x00, /* 0000000 */
@@ -2746,7 +2746,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
27462746 0x00, /* 0000000 */
27472747 0x00, /* 0000000 */
27482748
2749− /* 171 0xab '�' */
2749+ /* 171 0xab '½' */
27502750 0x60, /* 0110000 */
27512751 0xe0, /* 1110000 */
27522752 0x62, /* 0110001 */
@@ -2762,7 +2762,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
27622762 0x30, /* 0011000 */
27632763 0x7c, /* 0111110 */
27642764
2765− /* 172 0xac '�' */
2765+ /* 172 0xac '¼' */
27662766 0x60, /* 0110000 */
27672767 0xe0, /* 1110000 */
27682768 0x62, /* 0110001 */
@@ -2778,7 +2778,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
27782778 0x0c, /* 0000110 */
27792779 0x00, /* 0000000 */
27802780
2781− /* 173 0xad '�' */
2781+ /* 173 0xad '¡' */
27822782 0x00, /* 0000000 */
27832783 0x30, /* 0011000 */
27842784 0x30, /* 0011000 */
@@ -2794,7 +2794,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
27942794 0x00, /* 0000000 */
27952795 0x00, /* 0000000 */
27962796
2797− /* 174 0xae '�' */
2797+ /* 174 0xae '«' */
27982798 0x00, /* 0000000 */
27992799 0x00, /* 0000000 */
28002800 0x00, /* 0000000 */
@@ -2810,7 +2810,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
28102810 0x00, /* 0000000 */
28112811 0x00, /* 0000000 */
28122812
2813− /* 175 0xaf '�' */
2813+ /* 175 0xaf '»' */
28142814 0x00, /* 0000000 */
28152815 0x00, /* 0000000 */
28162816 0x00, /* 0000000 */
@@ -2826,7 +2826,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
28262826 0x00, /* 0000000 */
28272827 0x00, /* 0000000 */
28282828
2829− /* 176 0xb0 '�' */
2829+ /* 176 0xb0 '░' */
28302830 0x88, /* 1000100 */
28312831 0x22, /* 0010001 */
28322832 0x88, /* 1000100 */
@@ -2842,7 +2842,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
28422842 0x88, /* 1000100 */
28432843 0x22, /* 0010001 */
28442844
2845− /* 177 0xb1 '�' */
2845+ /* 177 0xb1 '▒' */
28462846 0x54, /* 0101010 */
28472847 0xaa, /* 1010101 */
28482848 0x54, /* 0101010 */
@@ -2858,7 +2858,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
28582858 0x54, /* 0101010 */
28592859 0xaa, /* 1010101 */
28602860
2861− /* 178 0xb2 '�' */
2861+ /* 178 0xb2 '▓' */
28622862 0xee, /* 1110111 */
28632863 0xba, /* 1011101 */
28642864 0xee, /* 1110111 */
@@ -2874,7 +2874,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
28742874 0xee, /* 1110111 */
28752875 0xba, /* 1011101 */
28762876
2877− /* 179 0xb3 '�' */
2877+ /* 179 0xb3 '│' */
28782878 0x30, /* 0011000 */
28792879 0x30, /* 0011000 */
28802880 0x30, /* 0011000 */
@@ -2890,7 +2890,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
28902890 0x30, /* 0011000 */
28912891 0x30, /* 0011000 */
28922892
2893− /* 180 0xb4 '�' */
2893+ /* 180 0xb4 '┤' */
28942894 0x30, /* 0011000 */
28952895 0x30, /* 0011000 */
28962896 0x30, /* 0011000 */
@@ -2906,7 +2906,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
29062906 0x30, /* 0011000 */
29072907 0x30, /* 0011000 */
29082908
2909− /* 181 0xb5 '�' */
2909+ /* 181 0xb5 '╡' */
29102910 0x30, /* 0011000 */
29112911 0x30, /* 0011000 */
29122912 0x30, /* 0011000 */
@@ -2922,7 +2922,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
29222922 0x30, /* 0011000 */
29232923 0x30, /* 0011000 */
29242924
2925− /* 182 0xb6 '�' */
2925+ /* 182 0xb6 '╢' */
29262926 0x6c, /* 0110110 */
29272927 0x6c, /* 0110110 */
29282928 0x6c, /* 0110110 */
@@ -2938,7 +2938,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
29382938 0x6c, /* 0110110 */
29392939 0x6c, /* 0110110 */
29402940
2941− /* 183 0xb7 '�' */
2941+ /* 183 0xb7 '╖' */
29422942 0x00, /* 0000000 */
29432943 0x00, /* 0000000 */
29442944 0x00, /* 0000000 */
@@ -2954,7 +2954,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
29542954 0x6c, /* 0110110 */
29552955 0x6c, /* 0110110 */
29562956
2957− /* 184 0xb8 '�' */
2957+ /* 184 0xb8 '╕' */
29582958 0x00, /* 0000000 */
29592959 0x00, /* 0000000 */
29602960 0x00, /* 0000000 */
@@ -2970,7 +2970,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
29702970 0x30, /* 0011000 */
29712971 0x30, /* 0011000 */
29722972
2973− /* 185 0xb9 '�' */
2973+ /* 185 0xb9 '╣' */
29742974 0x6c, /* 0110110 */
29752975 0x6c, /* 0110110 */
29762976 0x6c, /* 0110110 */
@@ -2986,7 +2986,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
29862986 0x6c, /* 0110110 */
29872987 0x6c, /* 0110110 */
29882988
2989− /* 186 0xba '�' */
2989+ /* 186 0xba '║' */
29902990 0x6c, /* 0110110 */
29912991 0x6c, /* 0110110 */
29922992 0x6c, /* 0110110 */
@@ -3002,7 +3002,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
30023002 0x6c, /* 0110110 */
30033003 0x6c, /* 0110110 */
30043004
3005− /* 187 0xbb '�' */
3005+ /* 187 0xbb '╗' */
30063006 0x00, /* 0000000 */
30073007 0x00, /* 0000000 */
30083008 0x00, /* 0000000 */
@@ -3018,7 +3018,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
30183018 0x6c, /* 0110110 */
30193019 0x6c, /* 0110110 */
30203020
3021− /* 188 0xbc '�' */
3021+ /* 188 0xbc '╝' */
30223022 0x6c, /* 0110110 */
30233023 0x6c, /* 0110110 */
30243024 0x6c, /* 0110110 */
@@ -3034,7 +3034,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
30343034 0x00, /* 0000000 */
30353035 0x00, /* 0000000 */
30363036
3037− /* 189 0xbd '�' */
3037+ /* 189 0xbd '╜' */
30383038 0x6c, /* 0110110 */
30393039 0x6c, /* 0110110 */
30403040 0x6c, /* 0110110 */
@@ -3050,7 +3050,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
30503050 0x00, /* 0000000 */
30513051 0x00, /* 0000000 */
30523052
3053− /* 190 0xbe '�' */
3053+ /* 190 0xbe '╛' */
30543054 0x30, /* 0011000 */
30553055 0x30, /* 0011000 */
30563056 0x30, /* 0011000 */
@@ -3066,7 +3066,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
30663066 0x00, /* 0000000 */
30673067 0x00, /* 0000000 */
30683068
3069− /* 191 0xbf '�' */
3069+ /* 191 0xbf '┐' */
30703070 0x00, /* 0000000 */
30713071 0x00, /* 0000000 */
30723072 0x00, /* 0000000 */
@@ -3082,7 +3082,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
30823082 0x30, /* 0011000 */
30833083 0x30, /* 0011000 */
30843084
3085− /* 192 0xc0 '�' */
3085+ /* 192 0xc0 '└' */
30863086 0x30, /* 0011000 */
30873087 0x30, /* 0011000 */
30883088 0x30, /* 0011000 */
@@ -3098,7 +3098,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
30983098 0x00, /* 0000000 */
30993099 0x00, /* 0000000 */
31003100
3101− /* 193 0xc1 '�' */
3101+ /* 193 0xc1 '┴' */
31023102 0x30, /* 0011000 */
31033103 0x30, /* 0011000 */
31043104 0x30, /* 0011000 */
@@ -3114,7 +3114,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
31143114 0x00, /* 0000000 */
31153115 0x00, /* 0000000 */
31163116
3117− /* 194 0xc2 '�' */
3117+ /* 194 0xc2 '┬' */
31183118 0x00, /* 0000000 */
31193119 0x00, /* 0000000 */
31203120 0x00, /* 0000000 */
@@ -3130,7 +3130,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
31303130 0x30, /* 0011000 */
31313131 0x30, /* 0011000 */
31323132
3133− /* 195 0xc3 '�' */
3133+ /* 195 0xc3 '├' */
31343134 0x30, /* 0011000 */
31353135 0x30, /* 0011000 */
31363136 0x30, /* 0011000 */
@@ -3146,7 +3146,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
31463146 0x30, /* 0011000 */
31473147 0x30, /* 0011000 */
31483148
3149− /* 196 0xc4 '�' */
3149+ /* 196 0xc4 '─' */
31503150 0x00, /* 0000000 */
31513151 0x00, /* 0000000 */
31523152 0x00, /* 0000000 */
@@ -3162,7 +3162,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
31623162 0x00, /* 0000000 */
31633163 0x00, /* 0000000 */
31643164
3165− /* 197 0xc5 '�' */
3165+ /* 197 0xc5 '┼' */
31663166 0x30, /* 0011000 */
31673167 0x30, /* 0011000 */
31683168 0x30, /* 0011000 */
@@ -3178,7 +3178,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
31783178 0x30, /* 0011000 */
31793179 0x30, /* 0011000 */
31803180
3181− /* 198 0xc6 '�' */
3181+ /* 198 0xc6 '╞' */
31823182 0x30, /* 0011000 */
31833183 0x30, /* 0011000 */
31843184 0x30, /* 0011000 */
@@ -3194,7 +3194,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
31943194 0x30, /* 0011000 */
31953195 0x30, /* 0011000 */
31963196
3197− /* 199 0xc7 '�' */
3197+ /* 199 0xc7 '╟' */
31983198 0x6c, /* 0110110 */
31993199 0x6c, /* 0110110 */
32003200 0x6c, /* 0110110 */
@@ -3210,7 +3210,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
32103210 0x6c, /* 0110110 */
32113211 0x6c, /* 0110110 */
32123212
3213− /* 200 0xc8 '�' */
3213+ /* 200 0xc8 '╚' */
32143214 0x6c, /* 0110110 */
32153215 0x6c, /* 0110110 */
32163216 0x6c, /* 0110110 */
@@ -3226,7 +3226,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
32263226 0x00, /* 0000000 */
32273227 0x00, /* 0000000 */
32283228
3229− /* 201 0xc9 '�' */
3229+ /* 201 0xc9 '╔' */
32303230 0x00, /* 0000000 */
32313231 0x00, /* 0000000 */
32323232 0x00, /* 0000000 */
@@ -3242,7 +3242,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
32423242 0x6c, /* 0110110 */
32433243 0x6c, /* 0110110 */
32443244
3245− /* 202 0xca '�' */
3245+ /* 202 0xca '╩' */
32463246 0x6c, /* 0110110 */
32473247 0x6c, /* 0110110 */
32483248 0x6c, /* 0110110 */
@@ -3258,7 +3258,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
32583258 0x00, /* 0000000 */
32593259 0x00, /* 0000000 */
32603260
3261− /* 203 0xcb '�' */
3261+ /* 203 0xcb '╦' */
32623262 0x00, /* 0000000 */
32633263 0x00, /* 0000000 */
32643264 0x00, /* 0000000 */
@@ -3274,7 +3274,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
32743274 0x6c, /* 0110110 */
32753275 0x6c, /* 0110110 */
32763276
3277− /* 204 0xcc '�' */
3277+ /* 204 0xcc '╠' */
32783278 0x6c, /* 0110110 */
32793279 0x6c, /* 0110110 */
32803280 0x6c, /* 0110110 */
@@ -3290,7 +3290,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
32903290 0x6c, /* 0110110 */
32913291 0x6c, /* 0110110 */
32923292
3293− /* 205 0xcd '�' */
3293+ /* 205 0xcd '═' */
32943294 0x00, /* 0000000 */
32953295 0x00, /* 0000000 */
32963296 0x00, /* 0000000 */
@@ -3306,7 +3306,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
33063306 0x00, /* 0000000 */
33073307 0x00, /* 0000000 */
33083308
3309− /* 206 0xce '�' */
3309+ /* 206 0xce '╬' */
33103310 0x6c, /* 0110110 */
33113311 0x6c, /* 0110110 */
33123312 0x6c, /* 0110110 */
@@ -3322,7 +3322,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
33223322 0x6c, /* 0110110 */
33233323 0x6c, /* 0110110 */
33243324
3325− /* 207 0xcf '�' */
3325+ /* 207 0xcf '╧' */
33263326 0x30, /* 0011000 */
33273327 0x30, /* 0011000 */
33283328 0x30, /* 0011000 */
@@ -3338,7 +3338,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
33383338 0x00, /* 0000000 */
33393339 0x00, /* 0000000 */
33403340
3341− /* 208 0xd0 '�' */
3341+ /* 208 0xd0 '╨' */
33423342 0x6c, /* 0110110 */
33433343 0x6c, /* 0110110 */
33443344 0x6c, /* 0110110 */
@@ -3354,7 +3354,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
33543354 0x00, /* 0000000 */
33553355 0x00, /* 0000000 */
33563356
3357− /* 209 0xd1 '�' */
3357+ /* 209 0xd1 '╤' */
33583358 0x00, /* 0000000 */
33593359 0x00, /* 0000000 */
33603360 0x00, /* 0000000 */
@@ -3370,7 +3370,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
33703370 0x30, /* 0011000 */
33713371 0x30, /* 0011000 */
33723372
3373− /* 210 0xd2 '�' */
3373+ /* 210 0xd2 '╥' */
33743374 0x00, /* 0000000 */
33753375 0x00, /* 0000000 */
33763376 0x00, /* 0000000 */
@@ -3386,7 +3386,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
33863386 0x6c, /* 0110110 */
33873387 0x6c, /* 0110110 */
33883388
3389− /* 211 0xd3 '�' */
3389+ /* 211 0xd3 '╙' */
33903390 0x6c, /* 0110110 */
33913391 0x6c, /* 0110110 */
33923392 0x6c, /* 0110110 */
@@ -3402,7 +3402,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
34023402 0x00, /* 0000000 */
34033403 0x00, /* 0000000 */
34043404
3405− /* 212 0xd4 '�' */
3405+ /* 212 0xd4 '╘' */
34063406 0x30, /* 0011000 */
34073407 0x30, /* 0011000 */
34083408 0x30, /* 0011000 */
@@ -3418,7 +3418,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
34183418 0x00, /* 0000000 */
34193419 0x00, /* 0000000 */
34203420
3421− /* 213 0xd5 '�' */
3421+ /* 213 0xd5 '╒' */
34223422 0x00, /* 0000000 */
34233423 0x00, /* 0000000 */
34243424 0x00, /* 0000000 */
@@ -3434,7 +3434,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
34343434 0x30, /* 0011000 */
34353435 0x30, /* 0011000 */
34363436
3437− /* 214 0xd6 '�' */
3437+ /* 214 0xd6 '╓' */
34383438 0x00, /* 0000000 */
34393439 0x00, /* 0000000 */
34403440 0x00, /* 0000000 */
@@ -3450,7 +3450,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
34503450 0x6c, /* 0110110 */
34513451 0x6c, /* 0110110 */
34523452
3453− /* 215 0xd7 '�' */
3453+ /* 215 0xd7 '╫' */
34543454 0x6c, /* 0110110 */
34553455 0x6c, /* 0110110 */
34563456 0x6c, /* 0110110 */
@@ -3466,7 +3466,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
34663466 0x6c, /* 0110110 */
34673467 0x6c, /* 0110110 */
34683468
3469− /* 216 0xd8 '�' */
3469+ /* 216 0xd8 '╪' */
34703470 0x30, /* 0011000 */
34713471 0x30, /* 0011000 */
34723472 0x30, /* 0011000 */
@@ -3482,7 +3482,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
34823482 0x30, /* 0011000 */
34833483 0x30, /* 0011000 */
34843484
3485− /* 217 0xd9 '�' */
3485+ /* 217 0xd9 '┘' */
34863486 0x30, /* 0011000 */
34873487 0x30, /* 0011000 */
34883488 0x30, /* 0011000 */
@@ -3498,7 +3498,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
34983498 0x00, /* 0000000 */
34993499 0x00, /* 0000000 */
35003500
3501− /* 218 0xda '�' */
3501+ /* 218 0xda '┌' */
35023502 0x00, /* 0000000 */
35033503 0x00, /* 0000000 */
35043504 0x00, /* 0000000 */
@@ -3514,7 +3514,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
35143514 0x30, /* 0011000 */
35153515 0x30, /* 0011000 */
35163516
3517− /* 219 0xdb '�' */
3517+ /* 219 0xdb '█' */
35183518 0xfe, /* 1111111 */
35193519 0xfe, /* 1111111 */
35203520 0xfe, /* 1111111 */
@@ -3530,7 +3530,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
35303530 0xfe, /* 1111111 */
35313531 0xfe, /* 1111111 */
35323532
3533− /* 220 0xdc '�' */
3533+ /* 220 0xdc '▄' */
35343534 0x00, /* 0000000 */
35353535 0x00, /* 0000000 */
35363536 0x00, /* 0000000 */
@@ -3546,7 +3546,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
35463546 0xfe, /* 1111111 */
35473547 0xfe, /* 1111111 */
35483548
3549− /* 221 0xdd '�' */
3549+ /* 221 0xdd '▌' */
35503550 0xe0, /* 1110000 */
35513551 0xe0, /* 1110000 */
35523552 0xe0, /* 1110000 */
@@ -3562,7 +3562,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
35623562 0xe0, /* 1110000 */
35633563 0xe0, /* 1110000 */
35643564
3565− /* 222 0xde '�' */
3565+ /* 222 0xde '▐' */
35663566 0x1e, /* 0001111 */
35673567 0x1e, /* 0001111 */
35683568 0x1e, /* 0001111 */
@@ -3578,7 +3578,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
35783578 0x1e, /* 0001111 */
35793579 0x1e, /* 0001111 */
35803580
3581− /* 223 0xdf '�' */
3581+ /* 223 0xdf '▀' */
35823582 0xfe, /* 1111111 */
35833583 0xfe, /* 1111111 */
35843584 0xfe, /* 1111111 */
@@ -3594,7 +3594,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
35943594 0x00, /* 0000000 */
35953595 0x00, /* 0000000 */
35963596
3597− /* 224 0xe0 '�' */
3597+ /* 224 0xe0 'α' */
35983598 0x00, /* 0000000 */
35993599 0x00, /* 0000000 */
36003600 0x00, /* 0000000 */
@@ -3610,7 +3610,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
36103610 0x00, /* 0000000 */
36113611 0x00, /* 0000000 */
36123612
3613− /* 225 0xe1 '�' */
3613+ /* 225 0xe1 'ß' */
36143614 0x00, /* 0000000 */
36153615 0x78, /* 0111100 */
36163616 0xcc, /* 1100110 */
@@ -3626,7 +3626,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
36263626 0x00, /* 0000000 */
36273627 0x00, /* 0000000 */
36283628
3629− /* 226 0xe2 '�' */
3629+ /* 226 0xe2 'Γ' */
36303630 0x00, /* 0000000 */
36313631 0xfc, /* 1111110 */
36323632 0xcc, /* 1100110 */
@@ -3642,7 +3642,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
36423642 0x00, /* 0000000 */
36433643 0x00, /* 0000000 */
36443644
3645− /* 227 0xe3 '�' */
3645+ /* 227 0xe3 'π' */
36463646 0x00, /* 0000000 */
36473647 0x00, /* 0000000 */
36483648 0xfe, /* 1111111 */
@@ -3658,7 +3658,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
36583658 0x00, /* 0000000 */
36593659 0x00, /* 0000000 */
36603660
3661− /* 228 0xe4 '�' */
3661+ /* 228 0xe4 'Σ' */
36623662 0x00, /* 0000000 */
36633663 0xfc, /* 1111110 */
36643664 0xcc, /* 1100110 */
@@ -3674,7 +3674,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
36743674 0x00, /* 0000000 */
36753675 0x00, /* 0000000 */
36763676
3677− /* 229 0xe5 '�' */
3677+ /* 229 0xe5 'σ' */
36783678 0x00, /* 0000000 */
36793679 0x00, /* 0000000 */
36803680 0x00, /* 0000000 */
@@ -3690,7 +3690,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
36903690 0x00, /* 0000000 */
36913691 0x00, /* 0000000 */
36923692
3693− /* 230 0xe6 '�' */
3693+ /* 230 0xe6 'µ' */
36943694 0x00, /* 0000000 */
36953695 0x00, /* 0000000 */
36963696 0x00, /* 0000000 */
@@ -3706,7 +3706,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
37063706 0xc0, /* 1100000 */
37073707 0x80, /* 1000000 */
37083708
3709− /* 231 0xe7 '�' */
3709+ /* 231 0xe7 'τ' */
37103710 0x00, /* 0000000 */
37113711 0x00, /* 0000000 */
37123712 0x00, /* 0000000 */
@@ -3722,7 +3722,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
37223722 0x00, /* 0000000 */
37233723 0x00, /* 0000000 */
37243724
3725− /* 232 0xe8 '�' */
3725+ /* 232 0xe8 'Φ' */
37263726 0x00, /* 0000000 */
37273727 0xfc, /* 1111110 */
37283728 0x30, /* 0011000 */
@@ -3738,7 +3738,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
37383738 0x00, /* 0000000 */
37393739 0x00, /* 0000000 */
37403740
3741− /* 233 0xe9 '�' */
3741+ /* 233 0xe9 'Θ' */
37423742 0x00, /* 0000000 */
37433743 0x38, /* 0011100 */
37443744 0x6c, /* 0110110 */
@@ -3754,7 +3754,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
37543754 0x00, /* 0000000 */
37553755 0x00, /* 0000000 */
37563756
3757− /* 234 0xea '�' */
3757+ /* 234 0xea 'Ω' */
37583758 0x00, /* 0000000 */
37593759 0x38, /* 0011100 */
37603760 0x6c, /* 0110110 */
@@ -3770,7 +3770,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
37703770 0x00, /* 0000000 */
37713771 0x00, /* 0000000 */
37723772
3773− /* 235 0xeb '�' */
3773+ /* 235 0xeb 'δ' */
37743774 0x00, /* 0000000 */
37753775 0x3c, /* 0011110 */
37763776 0x60, /* 0110000 */
@@ -3786,7 +3786,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
37863786 0x00, /* 0000000 */
37873787 0x00, /* 0000000 */
37883788
3789− /* 236 0xec '�' */
3789+ /* 236 0xec '∞' */
37903790 0x00, /* 0000000 */
37913791 0x00, /* 0000000 */
37923792 0x00, /* 0000000 */
@@ -3802,7 +3802,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
38023802 0x00, /* 0000000 */
38033803 0x00, /* 0000000 */
38043804
3805− /* 237 0xed '�' */
3805+ /* 237 0xed 'φ' */
38063806 0x00, /* 0000000 */
38073807 0x00, /* 0000000 */
38083808 0x06, /* 0000011 */
@@ -3818,7 +3818,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
38183818 0x00, /* 0000000 */
38193819 0x00, /* 0000000 */
38203820
3821− /* 238 0xee '�' */
3821+ /* 238 0xee 'ε' */
38223822 0x00, /* 0000000 */
38233823 0x1c, /* 0001110 */
38243824 0x30, /* 0011000 */
@@ -3834,7 +3834,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
38343834 0x00, /* 0000000 */
38353835 0x00, /* 0000000 */
38363836
3837− /* 239 0xef '�' */
3837+ /* 239 0xef '∩' */
38383838 0x00, /* 0000000 */
38393839 0x00, /* 0000000 */
38403840 0x78, /* 0111100 */
@@ -3850,7 +3850,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
38503850 0x00, /* 0000000 */
38513851 0x00, /* 0000000 */
38523852
3853− /* 240 0xf0 '�' */
3853+ /* 240 0xf0 '≡' */
38543854 0x00, /* 0000000 */
38553855 0x00, /* 0000000 */
38563856 0x00, /* 0000000 */
@@ -3866,7 +3866,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
38663866 0x00, /* 0000000 */
38673867 0x00, /* 0000000 */
38683868
3869− /* 241 0xf1 '�' */
3869+ /* 241 0xf1 '±' */
38703870 0x00, /* 0000000 */
38713871 0x00, /* 0000000 */
38723872 0x00, /* 0000000 */
@@ -3882,7 +3882,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
38823882 0x00, /* 0000000 */
38833883 0x00, /* 0000000 */
38843884
3885− /* 242 0xf2 '�' */
3885+ /* 242 0xf2 '≥' */
38863886 0x00, /* 0000000 */
38873887 0x00, /* 0000000 */
38883888 0x60, /* 0110000 */
@@ -3898,7 +3898,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
38983898 0x00, /* 0000000 */
38993899 0x00, /* 0000000 */
39003900
3901− /* 243 0xf3 '�' */
3901+ /* 243 0xf3 '≤' */
39023902 0x00, /* 0000000 */
39033903 0x00, /* 0000000 */
39043904 0x18, /* 0001100 */
@@ -3914,7 +3914,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
39143914 0x00, /* 0000000 */
39153915 0x00, /* 0000000 */
39163916
3917− /* 244 0xf4 '�' */
3917+ /* 244 0xf4 '⌠' */
39183918 0x00, /* 0000000 */
39193919 0x1c, /* 0001110 */
39203920 0x36, /* 0011011 */
@@ -3930,7 +3930,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
39303930 0x30, /* 0011000 */
39313931 0x30, /* 0011000 */
39323932
3933− /* 245 0xf5 '�' */
3933+ /* 245 0xf5 '⌡' */
39343934 0x18, /* 0001100 */
39353935 0x18, /* 0001100 */
39363936 0x18, /* 0001100 */
@@ -3946,7 +3946,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
39463946 0x00, /* 0000000 */
39473947 0x00, /* 0000000 */
39483948
3949− /* 246 0xf6 '�' */
3949+ /* 246 0xf6 '÷' */
39503950 0x00, /* 0000000 */
39513951 0x00, /* 0000000 */
39523952 0x00, /* 0000000 */
@@ -3962,7 +3962,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
39623962 0x00, /* 0000000 */
39633963 0x00, /* 0000000 */
39643964
3965− /* 247 0xf7 '�' */
3965+ /* 247 0xf7 '≈' */
39663966 0x00, /* 0000000 */
39673967 0x00, /* 0000000 */
39683968 0x00, /* 0000000 */
@@ -3978,7 +3978,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
39783978 0x00, /* 0000000 */
39793979 0x00, /* 0000000 */
39803980
3981− /* 248 0xf8 '�' */
3981+ /* 248 0xf8 '°' */
39823982 0x38, /* 0011100 */
39833983 0x6c, /* 0110110 */
39843984 0x6c, /* 0110110 */
@@ -3994,7 +3994,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
39943994 0x00, /* 0000000 */
39953995 0x00, /* 0000000 */
39963996
3997− /* 249 0xf9 '�' */
3997+ /* 249 0xf9 '·' */
39983998 0x00, /* 0000000 */
39993999 0x00, /* 0000000 */
40004000 0x00, /* 0000000 */
@@ -4010,7 +4010,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
40104010 0x00, /* 0000000 */
40114011 0x00, /* 0000000 */
40124012
4013− /* 250 0xfa '�' */
4013+ /* 250 0xfa '•' */
40144014 0x00, /* 0000000 */
40154015 0x00, /* 0000000 */
40164016 0x00, /* 0000000 */
@@ -4026,7 +4026,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
40264026 0x00, /* 0000000 */
40274027 0x00, /* 0000000 */
40284028
4029− /* 251 0xfb '�' */
4029+ /* 251 0xfb '√' */
40304030 0x1e, /* 0001111 */
40314031 0x18, /* 0001100 */
40324032 0x18, /* 0001100 */
@@ -4042,7 +4042,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
40424042 0x00, /* 0000000 */
40434043 0x00, /* 0000000 */
40444044
4045− /* 252 0xfc '�' */
4045+ /* 252 0xfc 'ⁿ' */
40464046 0xd8, /* 1101100 */
40474047 0x6c, /* 0110110 */
40484048 0x6c, /* 0110110 */
@@ -4058,7 +4058,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
40584058 0x00, /* 0000000 */
40594059 0x00, /* 0000000 */
40604060
4061− /* 253 0xfd '�' */
4061+ /* 253 0xfd '²' */
40624062 0x78, /* 0111100 */
40634063 0xcc, /* 1100110 */
40644064 0x18, /* 0001100 */
@@ -4074,7 +4074,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
40744074 0x00, /* 0000000 */
40754075 0x00, /* 0000000 */
40764076
4077− /* 254 0xfe '�' */
4077+ /* 254 0xfe '■' */
40784078 0x00, /* 0000000 */
40794079 0x00, /* 0000000 */
40804080 0x00, /* 0000000 */
@@ -4090,7 +4090,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { · 9 unmodified lines
40904090 0x00, /* 0000000 */
40914091 0x00, /* 0000000 */
40924092
4093− /* 255 0xff '�' */
4093+ /* 255 0xff ' ' */
40944094 0x00, /* 0000000 */
40954095 0x00, /* 0000000 */
40964096 0x00, /* 0000000 */
lib/fonts/font_8x16.c+128−128
@@ -2316,7 +2316,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 2315 unmodified lines
23162316 0x00, /* 00000000 */
23172317 0x00, /* 00000000 */
23182318
2319− /* 128 0x80 '�' */
2319+ /* 128 0x80 'Ç' */
23202320 0x00, /* 00000000 */
23212321 0x00, /* 00000000 */
23222322 0x3c, /* 00111100 */
@@ -2334,7 +2334,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
23342334 0x00, /* 00000000 */
23352335 0x00, /* 00000000 */
23362336
2337− /* 129 0x81 '�' */
2337+ /* 129 0x81 'ü' */
23382338 0x00, /* 00000000 */
23392339 0x00, /* 00000000 */
23402340 0xcc, /* 11001100 */
@@ -2352,7 +2352,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
23522352 0x00, /* 00000000 */
23532353 0x00, /* 00000000 */
23542354
2355− /* 130 0x82 '�' */
2355+ /* 130 0x82 'é' */
23562356 0x00, /* 00000000 */
23572357 0x0c, /* 00001100 */
23582358 0x18, /* 00011000 */
@@ -2370,7 +2370,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
23702370 0x00, /* 00000000 */
23712371 0x00, /* 00000000 */
23722372
2373− /* 131 0x83 '�' */
2373+ /* 131 0x83 'â' */
23742374 0x00, /* 00000000 */
23752375 0x10, /* 00010000 */
23762376 0x38, /* 00111000 */
@@ -2388,7 +2388,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
23882388 0x00, /* 00000000 */
23892389 0x00, /* 00000000 */
23902390
2391− /* 132 0x84 '�' */
2391+ /* 132 0x84 'ä' */
23922392 0x00, /* 00000000 */
23932393 0x00, /* 00000000 */
23942394 0xcc, /* 11001100 */
@@ -2406,7 +2406,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
24062406 0x00, /* 00000000 */
24072407 0x00, /* 00000000 */
24082408
2409− /* 133 0x85 '�' */
2409+ /* 133 0x85 'à' */
24102410 0x00, /* 00000000 */
24112411 0x60, /* 01100000 */
24122412 0x30, /* 00110000 */
@@ -2424,7 +2424,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
24242424 0x00, /* 00000000 */
24252425 0x00, /* 00000000 */
24262426
2427− /* 134 0x86 '�' */
2427+ /* 134 0x86 'å' */
24282428 0x00, /* 00000000 */
24292429 0x38, /* 00111000 */
24302430 0x6c, /* 01101100 */
@@ -2442,7 +2442,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
24422442 0x00, /* 00000000 */
24432443 0x00, /* 00000000 */
24442444
2445− /* 135 0x87 '�' */
2445+ /* 135 0x87 'ç' */
24462446 0x00, /* 00000000 */
24472447 0x00, /* 00000000 */
24482448 0x00, /* 00000000 */
@@ -2460,7 +2460,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
24602460 0x00, /* 00000000 */
24612461 0x00, /* 00000000 */
24622462
2463− /* 136 0x88 '�' */
2463+ /* 136 0x88 'ê' */
24642464 0x00, /* 00000000 */
24652465 0x10, /* 00010000 */
24662466 0x38, /* 00111000 */
@@ -2478,7 +2478,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
24782478 0x00, /* 00000000 */
24792479 0x00, /* 00000000 */
24802480
2481− /* 137 0x89 '�' */
2481+ /* 137 0x89 'ë' */
24822482 0x00, /* 00000000 */
24832483 0x00, /* 00000000 */
24842484 0xc6, /* 11000110 */
@@ -2496,7 +2496,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
24962496 0x00, /* 00000000 */
24972497 0x00, /* 00000000 */
24982498
2499− /* 138 0x8a '�' */
2499+ /* 138 0x8a 'è' */
25002500 0x00, /* 00000000 */
25012501 0x60, /* 01100000 */
25022502 0x30, /* 00110000 */
@@ -2514,7 +2514,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
25142514 0x00, /* 00000000 */
25152515 0x00, /* 00000000 */
25162516
2517− /* 139 0x8b '�' */
2517+ /* 139 0x8b 'ï' */
25182518 0x00, /* 00000000 */
25192519 0x00, /* 00000000 */
25202520 0x66, /* 01100110 */
@@ -2532,7 +2532,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
25322532 0x00, /* 00000000 */
25332533 0x00, /* 00000000 */
25342534
2535− /* 140 0x8c '�' */
2535+ /* 140 0x8c 'î' */
25362536 0x00, /* 00000000 */
25372537 0x18, /* 00011000 */
25382538 0x3c, /* 00111100 */
@@ -2550,7 +2550,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
25502550 0x00, /* 00000000 */
25512551 0x00, /* 00000000 */
25522552
2553− /* 141 0x8d '�' */
2553+ /* 141 0x8d 'ì' */
25542554 0x00, /* 00000000 */
25552555 0x60, /* 01100000 */
25562556 0x30, /* 00110000 */
@@ -2568,7 +2568,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
25682568 0x00, /* 00000000 */
25692569 0x00, /* 00000000 */
25702570
2571− /* 142 0x8e '�' */
2571+ /* 142 0x8e 'Ä' */
25722572 0x00, /* 00000000 */
25732573 0xc6, /* 11000110 */
25742574 0x00, /* 00000000 */
@@ -2586,7 +2586,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
25862586 0x00, /* 00000000 */
25872587 0x00, /* 00000000 */
25882588
2589− /* 143 0x8f '�' */
2589+ /* 143 0x8f 'Å' */
25902590 0x38, /* 00111000 */
25912591 0x6c, /* 01101100 */
25922592 0x38, /* 00111000 */
@@ -2604,7 +2604,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
26042604 0x00, /* 00000000 */
26052605 0x00, /* 00000000 */
26062606
2607− /* 144 0x90 '�' */
2607+ /* 144 0x90 'É' */
26082608 0x0c, /* 00001100 */
26092609 0x18, /* 00011000 */
26102610 0x00, /* 00000000 */
@@ -2622,7 +2622,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
26222622 0x00, /* 00000000 */
26232623 0x00, /* 00000000 */
26242624
2625− /* 145 0x91 '�' */
2625+ /* 145 0x91 'æ' */
26262626 0x00, /* 00000000 */
26272627 0x00, /* 00000000 */
26282628 0x00, /* 00000000 */
@@ -2640,7 +2640,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
26402640 0x00, /* 00000000 */
26412641 0x00, /* 00000000 */
26422642
2643− /* 146 0x92 '�' */
2643+ /* 146 0x92 'Æ' */
26442644 0x00, /* 00000000 */
26452645 0x00, /* 00000000 */
26462646 0x3e, /* 00111110 */
@@ -2658,7 +2658,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
26582658 0x00, /* 00000000 */
26592659 0x00, /* 00000000 */
26602660
2661− /* 147 0x93 '�' */
2661+ /* 147 0x93 'ô' */
26622662 0x00, /* 00000000 */
26632663 0x10, /* 00010000 */
26642664 0x38, /* 00111000 */
@@ -2676,7 +2676,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
26762676 0x00, /* 00000000 */
26772677 0x00, /* 00000000 */
26782678
2679− /* 148 0x94 '�' */
2679+ /* 148 0x94 'ö' */
26802680 0x00, /* 00000000 */
26812681 0x00, /* 00000000 */
26822682 0xc6, /* 11000110 */
@@ -2694,7 +2694,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
26942694 0x00, /* 00000000 */
26952695 0x00, /* 00000000 */
26962696
2697− /* 149 0x95 '�' */
2697+ /* 149 0x95 'ò' */
26982698 0x00, /* 00000000 */
26992699 0x60, /* 01100000 */
27002700 0x30, /* 00110000 */
@@ -2712,7 +2712,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
27122712 0x00, /* 00000000 */
27132713 0x00, /* 00000000 */
27142714
2715− /* 150 0x96 '�' */
2715+ /* 150 0x96 'û' */
27162716 0x00, /* 00000000 */
27172717 0x30, /* 00110000 */
27182718 0x78, /* 01111000 */
@@ -2730,7 +2730,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
27302730 0x00, /* 00000000 */
27312731 0x00, /* 00000000 */
27322732
2733− /* 151 0x97 '�' */
2733+ /* 151 0x97 'ù' */
27342734 0x00, /* 00000000 */
27352735 0x60, /* 01100000 */
27362736 0x30, /* 00110000 */
@@ -2748,7 +2748,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
27482748 0x00, /* 00000000 */
27492749 0x00, /* 00000000 */
27502750
2751− /* 152 0x98 '�' */
2751+ /* 152 0x98 'ÿ' */
27522752 0x00, /* 00000000 */
27532753 0x00, /* 00000000 */
27542754 0xc6, /* 11000110 */
@@ -2766,7 +2766,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
27662766 0x78, /* 01111000 */
27672767 0x00, /* 00000000 */
27682768
2769− /* 153 0x99 '�' */
2769+ /* 153 0x99 'Ö' */
27702770 0x00, /* 00000000 */
27712771 0xc6, /* 11000110 */
27722772 0x00, /* 00000000 */
@@ -2784,7 +2784,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
27842784 0x00, /* 00000000 */
27852785 0x00, /* 00000000 */
27862786
2787− /* 154 0x9a '�' */
2787+ /* 154 0x9a 'Ü' */
27882788 0x00, /* 00000000 */
27892789 0xc6, /* 11000110 */
27902790 0x00, /* 00000000 */
@@ -2802,7 +2802,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
28022802 0x00, /* 00000000 */
28032803 0x00, /* 00000000 */
28042804
2805− /* 155 0x9b '�' */
2805+ /* 155 0x9b '¢' */
28062806 0x00, /* 00000000 */
28072807 0x18, /* 00011000 */
28082808 0x18, /* 00011000 */
@@ -2820,7 +2820,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
28202820 0x00, /* 00000000 */
28212821 0x00, /* 00000000 */
28222822
2823− /* 156 0x9c '�' */
2823+ /* 156 0x9c '£' */
28242824 0x00, /* 00000000 */
28252825 0x38, /* 00111000 */
28262826 0x6c, /* 01101100 */
@@ -2838,7 +2838,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
28382838 0x00, /* 00000000 */
28392839 0x00, /* 00000000 */
28402840
2841− /* 157 0x9d '�' */
2841+ /* 157 0x9d '¥' */
28422842 0x00, /* 00000000 */
28432843 0x00, /* 00000000 */
28442844 0x66, /* 01100110 */
@@ -2856,7 +2856,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
28562856 0x00, /* 00000000 */
28572857 0x00, /* 00000000 */
28582858
2859− /* 158 0x9e '�' */
2859+ /* 158 0x9e '₧' */
28602860 0x00, /* 00000000 */
28612861 0xf8, /* 11111000 */
28622862 0xcc, /* 11001100 */
@@ -2874,7 +2874,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
28742874 0x00, /* 00000000 */
28752875 0x00, /* 00000000 */
28762876
2877− /* 159 0x9f '�' */
2877+ /* 159 0x9f 'ƒ' */
28782878 0x00, /* 00000000 */
28792879 0x0e, /* 00001110 */
28802880 0x1b, /* 00011011 */
@@ -2892,7 +2892,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
28922892 0x00, /* 00000000 */
28932893 0x00, /* 00000000 */
28942894
2895− /* 160 0xa0 '�' */
2895+ /* 160 0xa0 'á' */
28962896 0x00, /* 00000000 */
28972897 0x18, /* 00011000 */
28982898 0x30, /* 00110000 */
@@ -2910,7 +2910,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
29102910 0x00, /* 00000000 */
29112911 0x00, /* 00000000 */
29122912
2913− /* 161 0xa1 '�' */
2913+ /* 161 0xa1 'í' */
29142914 0x00, /* 00000000 */
29152915 0x0c, /* 00001100 */
29162916 0x18, /* 00011000 */
@@ -2928,7 +2928,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
29282928 0x00, /* 00000000 */
29292929 0x00, /* 00000000 */
29302930
2931− /* 162 0xa2 '�' */
2931+ /* 162 0xa2 'ó' */
29322932 0x00, /* 00000000 */
29332933 0x18, /* 00011000 */
29342934 0x30, /* 00110000 */
@@ -2946,7 +2946,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
29462946 0x00, /* 00000000 */
29472947 0x00, /* 00000000 */
29482948
2949− /* 163 0xa3 '�' */
2949+ /* 163 0xa3 'ú' */
29502950 0x00, /* 00000000 */
29512951 0x18, /* 00011000 */
29522952 0x30, /* 00110000 */
@@ -2964,7 +2964,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
29642964 0x00, /* 00000000 */
29652965 0x00, /* 00000000 */
29662966
2967− /* 164 0xa4 '�' */
2967+ /* 164 0xa4 'ñ' */
29682968 0x00, /* 00000000 */
29692969 0x00, /* 00000000 */
29702970 0x76, /* 01110110 */
@@ -2982,7 +2982,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
29822982 0x00, /* 00000000 */
29832983 0x00, /* 00000000 */
29842984
2985− /* 165 0xa5 '�' */
2985+ /* 165 0xa5 'Ñ' */
29862986 0x76, /* 01110110 */
29872987 0xdc, /* 11011100 */
29882988 0x00, /* 00000000 */
@@ -3000,7 +3000,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
30003000 0x00, /* 00000000 */
30013001 0x00, /* 00000000 */
30023002
3003− /* 166 0xa6 '�' */
3003+ /* 166 0xa6 'ª' */
30043004 0x00, /* 00000000 */
30053005 0x00, /* 00000000 */
30063006 0x3c, /* 00111100 */
@@ -3018,7 +3018,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
30183018 0x00, /* 00000000 */
30193019 0x00, /* 00000000 */
30203020
3021− /* 167 0xa7 '�' */
3021+ /* 167 0xa7 'º' */
30223022 0x00, /* 00000000 */
30233023 0x00, /* 00000000 */
30243024 0x38, /* 00111000 */
@@ -3036,7 +3036,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
30363036 0x00, /* 00000000 */
30373037 0x00, /* 00000000 */
30383038
3039− /* 168 0xa8 '�' */
3039+ /* 168 0xa8 '¿' */
30403040 0x00, /* 00000000 */
30413041 0x00, /* 00000000 */
30423042 0x30, /* 00110000 */
@@ -3054,7 +3054,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
30543054 0x00, /* 00000000 */
30553055 0x00, /* 00000000 */
30563056
3057− /* 169 0xa9 '�' */
3057+ /* 169 0xa9 '⌐' */
30583058 0x00, /* 00000000 */
30593059 0x00, /* 00000000 */
30603060 0x00, /* 00000000 */
@@ -3072,7 +3072,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
30723072 0x00, /* 00000000 */
30733073 0x00, /* 00000000 */
30743074
3075− /* 170 0xaa '�' */
3075+ /* 170 0xaa '¬' */
30763076 0x00, /* 00000000 */
30773077 0x00, /* 00000000 */
30783078 0x00, /* 00000000 */
@@ -3090,7 +3090,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
30903090 0x00, /* 00000000 */
30913091 0x00, /* 00000000 */
30923092
3093− /* 171 0xab '�' */
3093+ /* 171 0xab '½' */
30943094 0x00, /* 00000000 */
30953095 0x60, /* 01100000 */
30963096 0xe0, /* 11100000 */
@@ -3108,7 +3108,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
31083108 0x00, /* 00000000 */
31093109 0x00, /* 00000000 */
31103110
3111− /* 172 0xac '�' */
3111+ /* 172 0xac '¼' */
31123112 0x00, /* 00000000 */
31133113 0x60, /* 01100000 */
31143114 0xe0, /* 11100000 */
@@ -3126,7 +3126,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
31263126 0x00, /* 00000000 */
31273127 0x00, /* 00000000 */
31283128
3129− /* 173 0xad '�' */
3129+ /* 173 0xad '¡' */
31303130 0x00, /* 00000000 */
31313131 0x00, /* 00000000 */
31323132 0x18, /* 00011000 */
@@ -3144,7 +3144,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
31443144 0x00, /* 00000000 */
31453145 0x00, /* 00000000 */
31463146
3147− /* 174 0xae '�' */
3147+ /* 174 0xae '«' */
31483148 0x00, /* 00000000 */
31493149 0x00, /* 00000000 */
31503150 0x00, /* 00000000 */
@@ -3162,7 +3162,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
31623162 0x00, /* 00000000 */
31633163 0x00, /* 00000000 */
31643164
3165− /* 175 0xaf '�' */
3165+ /* 175 0xaf '»' */
31663166 0x00, /* 00000000 */
31673167 0x00, /* 00000000 */
31683168 0x00, /* 00000000 */
@@ -3180,7 +3180,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
31803180 0x00, /* 00000000 */
31813181 0x00, /* 00000000 */
31823182
3183− /* 176 0xb0 '�' */
3183+ /* 176 0xb0 '░' */
31843184 0x11, /* 00010001 */
31853185 0x44, /* 01000100 */
31863186 0x11, /* 00010001 */
@@ -3198,7 +3198,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
31983198 0x11, /* 00010001 */
31993199 0x44, /* 01000100 */
32003200
3201− /* 177 0xb1 '�' */
3201+ /* 177 0xb1 '▒' */
32023202 0x55, /* 01010101 */
32033203 0xaa, /* 10101010 */
32043204 0x55, /* 01010101 */
@@ -3216,7 +3216,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
32163216 0x55, /* 01010101 */
32173217 0xaa, /* 10101010 */
32183218
3219− /* 178 0xb2 '�' */
3219+ /* 178 0xb2 '▓' */
32203220 0xdd, /* 11011101 */
32213221 0x77, /* 01110111 */
32223222 0xdd, /* 11011101 */
@@ -3234,7 +3234,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
32343234 0xdd, /* 11011101 */
32353235 0x77, /* 01110111 */
32363236
3237− /* 179 0xb3 '�' */
3237+ /* 179 0xb3 '│' */
32383238 0x18, /* 00011000 */
32393239 0x18, /* 00011000 */
32403240 0x18, /* 00011000 */
@@ -3252,7 +3252,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
32523252 0x18, /* 00011000 */
32533253 0x18, /* 00011000 */
32543254
3255− /* 180 0xb4 '�' */
3255+ /* 180 0xb4 '┤' */
32563256 0x18, /* 00011000 */
32573257 0x18, /* 00011000 */
32583258 0x18, /* 00011000 */
@@ -3270,7 +3270,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
32703270 0x18, /* 00011000 */
32713271 0x18, /* 00011000 */
32723272
3273− /* 181 0xb5 '�' */
3273+ /* 181 0xb5 '╡' */
32743274 0x18, /* 00011000 */
32753275 0x18, /* 00011000 */
32763276 0x18, /* 00011000 */
@@ -3288,7 +3288,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
32883288 0x18, /* 00011000 */
32893289 0x18, /* 00011000 */
32903290
3291− /* 182 0xb6 '�' */
3291+ /* 182 0xb6 '╢' */
32923292 0x36, /* 00110110 */
32933293 0x36, /* 00110110 */
32943294 0x36, /* 00110110 */
@@ -3306,7 +3306,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
33063306 0x36, /* 00110110 */
33073307 0x36, /* 00110110 */
33083308
3309− /* 183 0xb7 '�' */
3309+ /* 183 0xb7 '╖' */
33103310 0x00, /* 00000000 */
33113311 0x00, /* 00000000 */
33123312 0x00, /* 00000000 */
@@ -3324,7 +3324,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
33243324 0x36, /* 00110110 */
33253325 0x36, /* 00110110 */
33263326
3327− /* 184 0xb8 '�' */
3327+ /* 184 0xb8 '╕' */
33283328 0x00, /* 00000000 */
33293329 0x00, /* 00000000 */
33303330 0x00, /* 00000000 */
@@ -3342,7 +3342,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
33423342 0x18, /* 00011000 */
33433343 0x18, /* 00011000 */
33443344
3345− /* 185 0xb9 '�' */
3345+ /* 185 0xb9 '╣' */
33463346 0x36, /* 00110110 */
33473347 0x36, /* 00110110 */
33483348 0x36, /* 00110110 */
@@ -3360,7 +3360,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
33603360 0x36, /* 00110110 */
33613361 0x36, /* 00110110 */
33623362
3363− /* 186 0xba '�' */
3363+ /* 186 0xba '║' */
33643364 0x36, /* 00110110 */
33653365 0x36, /* 00110110 */
33663366 0x36, /* 00110110 */
@@ -3378,7 +3378,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
33783378 0x36, /* 00110110 */
33793379 0x36, /* 00110110 */
33803380
3381− /* 187 0xbb '�' */
3381+ /* 187 0xbb '╗' */
33823382 0x00, /* 00000000 */
33833383 0x00, /* 00000000 */
33843384 0x00, /* 00000000 */
@@ -3396,7 +3396,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
33963396 0x36, /* 00110110 */
33973397 0x36, /* 00110110 */
33983398
3399− /* 188 0xbc '�' */
3399+ /* 188 0xbc '╝' */
34003400 0x36, /* 00110110 */
34013401 0x36, /* 00110110 */
34023402 0x36, /* 00110110 */
@@ -3414,7 +3414,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
34143414 0x00, /* 00000000 */
34153415 0x00, /* 00000000 */
34163416
3417− /* 189 0xbd '�' */
3417+ /* 189 0xbd '╜' */
34183418 0x36, /* 00110110 */
34193419 0x36, /* 00110110 */
34203420 0x36, /* 00110110 */
@@ -3432,7 +3432,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
34323432 0x00, /* 00000000 */
34333433 0x00, /* 00000000 */
34343434
3435− /* 190 0xbe '�' */
3435+ /* 190 0xbe '╛' */
34363436 0x18, /* 00011000 */
34373437 0x18, /* 00011000 */
34383438 0x18, /* 00011000 */
@@ -3450,7 +3450,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
34503450 0x00, /* 00000000 */
34513451 0x00, /* 00000000 */
34523452
3453− /* 191 0xbf '�' */
3453+ /* 191 0xbf '┐' */
34543454 0x00, /* 00000000 */
34553455 0x00, /* 00000000 */
34563456 0x00, /* 00000000 */
@@ -3468,7 +3468,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
34683468 0x18, /* 00011000 */
34693469 0x18, /* 00011000 */
34703470
3471− /* 192 0xc0 '�' */
3471+ /* 192 0xc0 '└' */
34723472 0x18, /* 00011000 */
34733473 0x18, /* 00011000 */
34743474 0x18, /* 00011000 */
@@ -3486,7 +3486,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
34863486 0x00, /* 00000000 */
34873487 0x00, /* 00000000 */
34883488
3489− /* 193 0xc1 '�' */
3489+ /* 193 0xc1 '┴' */
34903490 0x18, /* 00011000 */
34913491 0x18, /* 00011000 */
34923492 0x18, /* 00011000 */
@@ -3504,7 +3504,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
35043504 0x00, /* 00000000 */
35053505 0x00, /* 00000000 */
35063506
3507− /* 194 0xc2 '�' */
3507+ /* 194 0xc2 '┬' */
35083508 0x00, /* 00000000 */
35093509 0x00, /* 00000000 */
35103510 0x00, /* 00000000 */
@@ -3522,7 +3522,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
35223522 0x18, /* 00011000 */
35233523 0x18, /* 00011000 */
35243524
3525− /* 195 0xc3 '�' */
3525+ /* 195 0xc3 '├' */
35263526 0x18, /* 00011000 */
35273527 0x18, /* 00011000 */
35283528 0x18, /* 00011000 */
@@ -3540,7 +3540,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
35403540 0x18, /* 00011000 */
35413541 0x18, /* 00011000 */
35423542
3543− /* 196 0xc4 '�' */
3543+ /* 196 0xc4 '─' */
35443544 0x00, /* 00000000 */
35453545 0x00, /* 00000000 */
35463546 0x00, /* 00000000 */
@@ -3558,7 +3558,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
35583558 0x00, /* 00000000 */
35593559 0x00, /* 00000000 */
35603560
3561− /* 197 0xc5 '�' */
3561+ /* 197 0xc5 '┼' */
35623562 0x18, /* 00011000 */
35633563 0x18, /* 00011000 */
35643564 0x18, /* 00011000 */
@@ -3576,7 +3576,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
35763576 0x18, /* 00011000 */
35773577 0x18, /* 00011000 */
35783578
3579− /* 198 0xc6 '�' */
3579+ /* 198 0xc6 '╞' */
35803580 0x18, /* 00011000 */
35813581 0x18, /* 00011000 */
35823582 0x18, /* 00011000 */
@@ -3594,7 +3594,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
35943594 0x18, /* 00011000 */
35953595 0x18, /* 00011000 */
35963596
3597− /* 199 0xc7 '�' */
3597+ /* 199 0xc7 '╟' */
35983598 0x36, /* 00110110 */
35993599 0x36, /* 00110110 */
36003600 0x36, /* 00110110 */
@@ -3612,7 +3612,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
36123612 0x36, /* 00110110 */
36133613 0x36, /* 00110110 */
36143614
3615− /* 200 0xc8 '�' */
3615+ /* 200 0xc8 '╚' */
36163616 0x36, /* 00110110 */
36173617 0x36, /* 00110110 */
36183618 0x36, /* 00110110 */
@@ -3630,7 +3630,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
36303630 0x00, /* 00000000 */
36313631 0x00, /* 00000000 */
36323632
3633− /* 201 0xc9 '�' */
3633+ /* 201 0xc9 '╔' */
36343634 0x00, /* 00000000 */
36353635 0x00, /* 00000000 */
36363636 0x00, /* 00000000 */
@@ -3648,7 +3648,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
36483648 0x36, /* 00110110 */
36493649 0x36, /* 00110110 */
36503650
3651− /* 202 0xca '�' */
3651+ /* 202 0xca '╩' */
36523652 0x36, /* 00110110 */
36533653 0x36, /* 00110110 */
36543654 0x36, /* 00110110 */
@@ -3666,7 +3666,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
36663666 0x00, /* 00000000 */
36673667 0x00, /* 00000000 */
36683668
3669− /* 203 0xcb '�' */
3669+ /* 203 0xcb '╦' */
36703670 0x00, /* 00000000 */
36713671 0x00, /* 00000000 */
36723672 0x00, /* 00000000 */
@@ -3684,7 +3684,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
36843684 0x36, /* 00110110 */
36853685 0x36, /* 00110110 */
36863686
3687− /* 204 0xcc '�' */
3687+ /* 204 0xcc '╠' */
36883688 0x36, /* 00110110 */
36893689 0x36, /* 00110110 */
36903690 0x36, /* 00110110 */
@@ -3702,7 +3702,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
37023702 0x36, /* 00110110 */
37033703 0x36, /* 00110110 */
37043704
3705− /* 205 0xcd '�' */
3705+ /* 205 0xcd '═' */
37063706 0x00, /* 00000000 */
37073707 0x00, /* 00000000 */
37083708 0x00, /* 00000000 */
@@ -3720,7 +3720,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
37203720 0x00, /* 00000000 */
37213721 0x00, /* 00000000 */
37223722
3723− /* 206 0xce '�' */
3723+ /* 206 0xce '╬' */
37243724 0x36, /* 00110110 */
37253725 0x36, /* 00110110 */
37263726 0x36, /* 00110110 */
@@ -3738,7 +3738,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
37383738 0x36, /* 00110110 */
37393739 0x36, /* 00110110 */
37403740
3741− /* 207 0xcf '�' */
3741+ /* 207 0xcf '╧' */
37423742 0x18, /* 00011000 */
37433743 0x18, /* 00011000 */
37443744 0x18, /* 00011000 */
@@ -3756,7 +3756,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
37563756 0x00, /* 00000000 */
37573757 0x00, /* 00000000 */
37583758
3759− /* 208 0xd0 '�' */
3759+ /* 208 0xd0 '╨' */
37603760 0x36, /* 00110110 */
37613761 0x36, /* 00110110 */
37623762 0x36, /* 00110110 */
@@ -3774,7 +3774,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
37743774 0x00, /* 00000000 */
37753775 0x00, /* 00000000 */
37763776
3777− /* 209 0xd1 '�' */
3777+ /* 209 0xd1 '╤' */
37783778 0x00, /* 00000000 */
37793779 0x00, /* 00000000 */
37803780 0x00, /* 00000000 */
@@ -3792,7 +3792,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
37923792 0x18, /* 00011000 */
37933793 0x18, /* 00011000 */
37943794
3795− /* 210 0xd2 '�' */
3795+ /* 210 0xd2 '╥' */
37963796 0x00, /* 00000000 */
37973797 0x00, /* 00000000 */
37983798 0x00, /* 00000000 */
@@ -3810,7 +3810,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
38103810 0x36, /* 00110110 */
38113811 0x36, /* 00110110 */
38123812
3813− /* 211 0xd3 '�' */
3813+ /* 211 0xd3 '╙' */
38143814 0x36, /* 00110110 */
38153815 0x36, /* 00110110 */
38163816 0x36, /* 00110110 */
@@ -3828,7 +3828,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
38283828 0x00, /* 00000000 */
38293829 0x00, /* 00000000 */
38303830
3831− /* 212 0xd4 '�' */
3831+ /* 212 0xd4 '╘' */
38323832 0x18, /* 00011000 */
38333833 0x18, /* 00011000 */
38343834 0x18, /* 00011000 */
@@ -3846,7 +3846,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
38463846 0x00, /* 00000000 */
38473847 0x00, /* 00000000 */
38483848
3849− /* 213 0xd5 '�' */
3849+ /* 213 0xd5 '╒' */
38503850 0x00, /* 00000000 */
38513851 0x00, /* 00000000 */
38523852 0x00, /* 00000000 */
@@ -3864,7 +3864,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
38643864 0x18, /* 00011000 */
38653865 0x18, /* 00011000 */
38663866
3867− /* 214 0xd6 '�' */
3867+ /* 214 0xd6 '╓' */
38683868 0x00, /* 00000000 */
38693869 0x00, /* 00000000 */
38703870 0x00, /* 00000000 */
@@ -3882,7 +3882,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
38823882 0x36, /* 00110110 */
38833883 0x36, /* 00110110 */
38843884
3885− /* 215 0xd7 '�' */
3885+ /* 215 0xd7 '╫' */
38863886 0x36, /* 00110110 */
38873887 0x36, /* 00110110 */
38883888 0x36, /* 00110110 */
@@ -3900,7 +3900,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
39003900 0x36, /* 00110110 */
39013901 0x36, /* 00110110 */
39023902
3903− /* 216 0xd8 '�' */
3903+ /* 216 0xd8 '╪' */
39043904 0x18, /* 00011000 */
39053905 0x18, /* 00011000 */
39063906 0x18, /* 00011000 */
@@ -3918,7 +3918,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
39183918 0x18, /* 00011000 */
39193919 0x18, /* 00011000 */
39203920
3921− /* 217 0xd9 '�' */
3921+ /* 217 0xd9 '┘' */
39223922 0x18, /* 00011000 */
39233923 0x18, /* 00011000 */
39243924 0x18, /* 00011000 */
@@ -3936,7 +3936,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
39363936 0x00, /* 00000000 */
39373937 0x00, /* 00000000 */
39383938
3939− /* 218 0xda '�' */
3939+ /* 218 0xda '┌' */
39403940 0x00, /* 00000000 */
39413941 0x00, /* 00000000 */
39423942 0x00, /* 00000000 */
@@ -3954,7 +3954,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
39543954 0x18, /* 00011000 */
39553955 0x18, /* 00011000 */
39563956
3957− /* 219 0xdb '�' */
3957+ /* 219 0xdb '█' */
39583958 0xff, /* 11111111 */
39593959 0xff, /* 11111111 */
39603960 0xff, /* 11111111 */
@@ -3972,7 +3972,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
39723972 0xff, /* 11111111 */
39733973 0xff, /* 11111111 */
39743974
3975− /* 220 0xdc '�' */
3975+ /* 220 0xdc '▄' */
39763976 0x00, /* 00000000 */
39773977 0x00, /* 00000000 */
39783978 0x00, /* 00000000 */
@@ -3990,7 +3990,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
39903990 0xff, /* 11111111 */
39913991 0xff, /* 11111111 */
39923992
3993− /* 221 0xdd '�' */
3993+ /* 221 0xdd '▌' */
39943994 0xf0, /* 11110000 */
39953995 0xf0, /* 11110000 */
39963996 0xf0, /* 11110000 */
@@ -4008,7 +4008,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
40084008 0xf0, /* 11110000 */
40094009 0xf0, /* 11110000 */
40104010
4011− /* 222 0xde '�' */
4011+ /* 222 0xde '▐' */
40124012 0x0f, /* 00001111 */
40134013 0x0f, /* 00001111 */
40144014 0x0f, /* 00001111 */
@@ -4026,7 +4026,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
40264026 0x0f, /* 00001111 */
40274027 0x0f, /* 00001111 */
40284028
4029− /* 223 0xdf '�' */
4029+ /* 223 0xdf '▀' */
40304030 0xff, /* 11111111 */
40314031 0xff, /* 11111111 */
40324032 0xff, /* 11111111 */
@@ -4044,7 +4044,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
40444044 0x00, /* 00000000 */
40454045 0x00, /* 00000000 */
40464046
4047− /* 224 0xe0 '�' */
4047+ /* 224 0xe0 'α' */
40484048 0x00, /* 00000000 */
40494049 0x00, /* 00000000 */
40504050 0x00, /* 00000000 */
@@ -4062,7 +4062,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
40624062 0x00, /* 00000000 */
40634063 0x00, /* 00000000 */
40644064
4065− /* 225 0xe1 '�' */
4065+ /* 225 0xe1 'ß' */
40664066 0x00, /* 00000000 */
40674067 0x00, /* 00000000 */
40684068 0x78, /* 01111000 */
@@ -4080,7 +4080,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
40804080 0x00, /* 00000000 */
40814081 0x00, /* 00000000 */
40824082
4083− /* 226 0xe2 '�' */
4083+ /* 226 0xe2 'Γ' */
40844084 0x00, /* 00000000 */
40854085 0x00, /* 00000000 */
40864086 0xfe, /* 11111110 */
@@ -4098,7 +4098,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
40984098 0x00, /* 00000000 */
40994099 0x00, /* 00000000 */
41004100
4101− /* 227 0xe3 '�' */
4101+ /* 227 0xe3 'π' */
41024102 0x00, /* 00000000 */
41034103 0x00, /* 00000000 */
41044104 0x00, /* 00000000 */
@@ -4116,7 +4116,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
41164116 0x00, /* 00000000 */
41174117 0x00, /* 00000000 */
41184118
4119− /* 228 0xe4 '�' */
4119+ /* 228 0xe4 'Σ' */
41204120 0x00, /* 00000000 */
41214121 0x00, /* 00000000 */
41224122 0xfe, /* 11111110 */
@@ -4134,7 +4134,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
41344134 0x00, /* 00000000 */
41354135 0x00, /* 00000000 */
41364136
4137− /* 229 0xe5 '�' */
4137+ /* 229 0xe5 'σ' */
41384138 0x00, /* 00000000 */
41394139 0x00, /* 00000000 */
41404140 0x00, /* 00000000 */
@@ -4152,7 +4152,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
41524152 0x00, /* 00000000 */
41534153 0x00, /* 00000000 */
41544154
4155− /* 230 0xe6 '�' */
4155+ /* 230 0xe6 'µ' */
41564156 0x00, /* 00000000 */
41574157 0x00, /* 00000000 */
41584158 0x00, /* 00000000 */
@@ -4170,7 +4170,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
41704170 0xc0, /* 11000000 */
41714171 0x00, /* 00000000 */
41724172
4173− /* 231 0xe7 '�' */
4173+ /* 231 0xe7 'τ' */
41744174 0x00, /* 00000000 */
41754175 0x00, /* 00000000 */
41764176 0x00, /* 00000000 */
@@ -4188,7 +4188,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
41884188 0x00, /* 00000000 */
41894189 0x00, /* 00000000 */
41904190
4191− /* 232 0xe8 '�' */
4191+ /* 232 0xe8 'Φ' */
41924192 0x00, /* 00000000 */
41934193 0x00, /* 00000000 */
41944194 0x7e, /* 01111110 */
@@ -4206,7 +4206,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
42064206 0x00, /* 00000000 */
42074207 0x00, /* 00000000 */
42084208
4209− /* 233 0xe9 '�' */
4209+ /* 233 0xe9 'Θ' */
42104210 0x00, /* 00000000 */
42114211 0x00, /* 00000000 */
42124212 0x38, /* 00111000 */
@@ -4224,7 +4224,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
42244224 0x00, /* 00000000 */
42254225 0x00, /* 00000000 */
42264226
4227− /* 234 0xea '�' */
4227+ /* 234 0xea 'Ω' */
42284228 0x00, /* 00000000 */
42294229 0x00, /* 00000000 */
42304230 0x38, /* 00111000 */
@@ -4242,7 +4242,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
42424242 0x00, /* 00000000 */
42434243 0x00, /* 00000000 */
42444244
4245− /* 235 0xeb '�' */
4245+ /* 235 0xeb 'δ' */
42464246 0x00, /* 00000000 */
42474247 0x00, /* 00000000 */
42484248 0x1e, /* 00011110 */
@@ -4260,7 +4260,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
42604260 0x00, /* 00000000 */
42614261 0x00, /* 00000000 */
42624262
4263− /* 236 0xec '�' */
4263+ /* 236 0xec '∞' */
42644264 0x00, /* 00000000 */
42654265 0x00, /* 00000000 */
42664266 0x00, /* 00000000 */
@@ -4278,7 +4278,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
42784278 0x00, /* 00000000 */
42794279 0x00, /* 00000000 */
42804280
4281− /* 237 0xed '�' */
4281+ /* 237 0xed 'φ' */
42824282 0x00, /* 00000000 */
42834283 0x00, /* 00000000 */
42844284 0x00, /* 00000000 */
@@ -4296,7 +4296,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
42964296 0x00, /* 00000000 */
42974297 0x00, /* 00000000 */
42984298
4299− /* 238 0xee '�' */
4299+ /* 238 0xee 'ε' */
43004300 0x00, /* 00000000 */
43014301 0x00, /* 00000000 */
43024302 0x1c, /* 00011100 */
@@ -4314,7 +4314,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
43144314 0x00, /* 00000000 */
43154315 0x00, /* 00000000 */
43164316
4317− /* 239 0xef '�' */
4317+ /* 239 0xef '∩' */
43184318 0x00, /* 00000000 */
43194319 0x00, /* 00000000 */
43204320 0x00, /* 00000000 */
@@ -4332,7 +4332,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
43324332 0x00, /* 00000000 */
43334333 0x00, /* 00000000 */
43344334
4335− /* 240 0xf0 '�' */
4335+ /* 240 0xf0 '≡' */
43364336 0x00, /* 00000000 */
43374337 0x00, /* 00000000 */
43384338 0x00, /* 00000000 */
@@ -4350,7 +4350,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
43504350 0x00, /* 00000000 */
43514351 0x00, /* 00000000 */
43524352
4353− /* 241 0xf1 '�' */
4353+ /* 241 0xf1 '±' */
43544354 0x00, /* 00000000 */
43554355 0x00, /* 00000000 */
43564356 0x00, /* 00000000 */
@@ -4368,7 +4368,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
43684368 0x00, /* 00000000 */
43694369 0x00, /* 00000000 */
43704370
4371− /* 242 0xf2 '�' */
4371+ /* 242 0xf2 '≥' */
43724372 0x00, /* 00000000 */
43734373 0x00, /* 00000000 */
43744374 0x00, /* 00000000 */
@@ -4386,7 +4386,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
43864386 0x00, /* 00000000 */
43874387 0x00, /* 00000000 */
43884388
4389− /* 243 0xf3 '�' */
4389+ /* 243 0xf3 '≤' */
43904390 0x00, /* 00000000 */
43914391 0x00, /* 00000000 */
43924392 0x00, /* 00000000 */
@@ -4404,7 +4404,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
44044404 0x00, /* 00000000 */
44054405 0x00, /* 00000000 */
44064406
4407− /* 244 0xf4 '�' */
4407+ /* 244 0xf4 '⌠' */
44084408 0x00, /* 00000000 */
44094409 0x00, /* 00000000 */
44104410 0x0e, /* 00001110 */
@@ -4422,7 +4422,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
44224422 0x18, /* 00011000 */
44234423 0x18, /* 00011000 */
44244424
4425− /* 245 0xf5 '�' */
4425+ /* 245 0xf5 '⌡' */
44264426 0x18, /* 00011000 */
44274427 0x18, /* 00011000 */
44284428 0x18, /* 00011000 */
@@ -4440,7 +4440,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
44404440 0x00, /* 00000000 */
44414441 0x00, /* 00000000 */
44424442
4443− /* 246 0xf6 '�' */
4443+ /* 246 0xf6 '÷' */
44444444 0x00, /* 00000000 */
44454445 0x00, /* 00000000 */
44464446 0x00, /* 00000000 */
@@ -4458,7 +4458,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
44584458 0x00, /* 00000000 */
44594459 0x00, /* 00000000 */
44604460
4461− /* 247 0xf7 '�' */
4461+ /* 247 0xf7 '≈' */
44624462 0x00, /* 00000000 */
44634463 0x00, /* 00000000 */
44644464 0x00, /* 00000000 */
@@ -4476,7 +4476,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
44764476 0x00, /* 00000000 */
44774477 0x00, /* 00000000 */
44784478
4479− /* 248 0xf8 '�' */
4479+ /* 248 0xf8 '°' */
44804480 0x00, /* 00000000 */
44814481 0x38, /* 00111000 */
44824482 0x6c, /* 01101100 */
@@ -4494,7 +4494,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
44944494 0x00, /* 00000000 */
44954495 0x00, /* 00000000 */
44964496
4497− /* 249 0xf9 '�' */
4497+ /* 249 0xf9 '·' */
44984498 0x00, /* 00000000 */
44994499 0x00, /* 00000000 */
45004500 0x00, /* 00000000 */
@@ -4512,7 +4512,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
45124512 0x00, /* 00000000 */
45134513 0x00, /* 00000000 */
45144514
4515− /* 250 0xfa '�' */
4515+ /* 250 0xfa '•' */
45164516 0x00, /* 00000000 */
45174517 0x00, /* 00000000 */
45184518 0x00, /* 00000000 */
@@ -4530,7 +4530,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
45304530 0x00, /* 00000000 */
45314531 0x00, /* 00000000 */
45324532
4533− /* 251 0xfb '�' */
4533+ /* 251 0xfb '√' */
45344534 0x00, /* 00000000 */
45354535 0x0f, /* 00001111 */
45364536 0x0c, /* 00001100 */
@@ -4548,7 +4548,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
45484548 0x00, /* 00000000 */
45494549 0x00, /* 00000000 */
45504550
4551− /* 252 0xfc '�' */
4551+ /* 252 0xfc 'ⁿ' */
45524552 0x00, /* 00000000 */
45534553 0x6c, /* 01101100 */
45544554 0x36, /* 00110110 */
@@ -4566,7 +4566,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
45664566 0x00, /* 00000000 */
45674567 0x00, /* 00000000 */
45684568
4569− /* 253 0xfd '�' */
4569+ /* 253 0xfd '²' */
45704570 0x00, /* 00000000 */
45714571 0x3c, /* 00111100 */
45724572 0x66, /* 01100110 */
@@ -4584,7 +4584,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
45844584 0x00, /* 00000000 */
45854585 0x00, /* 00000000 */
45864586
4587− /* 254 0xfe '�' */
4587+ /* 254 0xfe '■' */
45884588 0x00, /* 00000000 */
45894589 0x00, /* 00000000 */
45904590 0x00, /* 00000000 */
@@ -4602,7 +4602,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { · 11 unmodified lines
46024602 0x00, /* 00000000 */
46034603 0x00, /* 00000000 */
46044604
4605− /* 255 0xff '�' */
4605+ /* 255 0xff ' ' */
46064606 0x00, /* 00000000 */
46074607 0x00, /* 00000000 */
46084608 0x00, /* 00000000 */
lib/fonts/font_8x8.c+128−128
@@ -1291,7 +1291,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 1290 unmodified lines
12911291 0xfe, /* 11111110 */
12921292 0x00, /* 00000000 */
12931293
1294− /* 128 0x80 '�' */
1294+ /* 128 0x80 'Ç' */
12951295 0x7c, /* 01111100 */
12961296 0xc6, /* 11000110 */
12971297 0xc0, /* 11000000 */
@@ -1301,7 +1301,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13011301 0x0c, /* 00001100 */
13021302 0x78, /* 01111000 */
13031303
1304− /* 129 0x81 '�' */
1304+ /* 129 0x81 'ü' */
13051305 0xcc, /* 11001100 */
13061306 0x00, /* 00000000 */
13071307 0xcc, /* 11001100 */
@@ -1311,7 +1311,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13111311 0x76, /* 01110110 */
13121312 0x00, /* 00000000 */
13131313
1314− /* 130 0x82 '�' */
1314+ /* 130 0x82 'é' */
13151315 0x0c, /* 00001100 */
13161316 0x18, /* 00011000 */
13171317 0x7c, /* 01111100 */
@@ -1321,7 +1321,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13211321 0x7c, /* 01111100 */
13221322 0x00, /* 00000000 */
13231323
1324− /* 131 0x83 '�' */
1324+ /* 131 0x83 'â' */
13251325 0x7c, /* 01111100 */
13261326 0x82, /* 10000010 */
13271327 0x78, /* 01111000 */
@@ -1331,7 +1331,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13311331 0x76, /* 01110110 */
13321332 0x00, /* 00000000 */
13331333
1334− /* 132 0x84 '�' */
1334+ /* 132 0x84 'ä' */
13351335 0xc6, /* 11000110 */
13361336 0x00, /* 00000000 */
13371337 0x78, /* 01111000 */
@@ -1341,7 +1341,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13411341 0x76, /* 01110110 */
13421342 0x00, /* 00000000 */
13431343
1344− /* 133 0x85 '�' */
1344+ /* 133 0x85 'à' */
13451345 0x30, /* 00110000 */
13461346 0x18, /* 00011000 */
13471347 0x78, /* 01111000 */
@@ -1351,7 +1351,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13511351 0x76, /* 01110110 */
13521352 0x00, /* 00000000 */
13531353
1354− /* 134 0x86 '�' */
1354+ /* 134 0x86 'å' */
13551355 0x30, /* 00110000 */
13561356 0x30, /* 00110000 */
13571357 0x78, /* 01111000 */
@@ -1361,7 +1361,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13611361 0x76, /* 01110110 */
13621362 0x00, /* 00000000 */
13631363
1364− /* 135 0x87 '�' */
1364+ /* 135 0x87 'ç' */
13651365 0x00, /* 00000000 */
13661366 0x00, /* 00000000 */
13671367 0x7e, /* 01111110 */
@@ -1371,7 +1371,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13711371 0x0c, /* 00001100 */
13721372 0x38, /* 00111000 */
13731373
1374− /* 136 0x88 '�' */
1374+ /* 136 0x88 'ê' */
13751375 0x7c, /* 01111100 */
13761376 0x82, /* 10000010 */
13771377 0x7c, /* 01111100 */
@@ -1381,7 +1381,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13811381 0x7c, /* 01111100 */
13821382 0x00, /* 00000000 */
13831383
1384− /* 137 0x89 '�' */
1384+ /* 137 0x89 'ë' */
13851385 0xc6, /* 11000110 */
13861386 0x00, /* 00000000 */
13871387 0x7c, /* 01111100 */
@@ -1391,7 +1391,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
13911391 0x7c, /* 01111100 */
13921392 0x00, /* 00000000 */
13931393
1394− /* 138 0x8a '�' */
1394+ /* 138 0x8a 'è' */
13951395 0x30, /* 00110000 */
13961396 0x18, /* 00011000 */
13971397 0x7c, /* 01111100 */
@@ -1401,7 +1401,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14011401 0x7c, /* 01111100 */
14021402 0x00, /* 00000000 */
14031403
1404− /* 139 0x8b '�' */
1404+ /* 139 0x8b 'ï' */
14051405 0x66, /* 01100110 */
14061406 0x00, /* 00000000 */
14071407 0x38, /* 00111000 */
@@ -1411,7 +1411,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14111411 0x3c, /* 00111100 */
14121412 0x00, /* 00000000 */
14131413
1414− /* 140 0x8c '�' */
1414+ /* 140 0x8c 'î' */
14151415 0x7c, /* 01111100 */
14161416 0x82, /* 10000010 */
14171417 0x38, /* 00111000 */
@@ -1421,7 +1421,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14211421 0x3c, /* 00111100 */
14221422 0x00, /* 00000000 */
14231423
1424− /* 141 0x8d '�' */
1424+ /* 141 0x8d 'ì' */
14251425 0x30, /* 00110000 */
14261426 0x18, /* 00011000 */
14271427 0x00, /* 00000000 */
@@ -1431,7 +1431,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14311431 0x3c, /* 00111100 */
14321432 0x00, /* 00000000 */
14331433
1434− /* 142 0x8e '�' */
1434+ /* 142 0x8e 'Ä' */
14351435 0xc6, /* 11000110 */
14361436 0x38, /* 00111000 */
14371437 0x6c, /* 01101100 */
@@ -1441,7 +1441,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14411441 0xc6, /* 11000110 */
14421442 0x00, /* 00000000 */
14431443
1444− /* 143 0x8f '�' */
1444+ /* 143 0x8f 'Å' */
14451445 0x38, /* 00111000 */
14461446 0x6c, /* 01101100 */
14471447 0x7c, /* 01111100 */
@@ -1451,7 +1451,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14511451 0xc6, /* 11000110 */
14521452 0x00, /* 00000000 */
14531453
1454− /* 144 0x90 '�' */
1454+ /* 144 0x90 'É' */
14551455 0x18, /* 00011000 */
14561456 0x30, /* 00110000 */
14571457 0xfe, /* 11111110 */
@@ -1461,7 +1461,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14611461 0xfe, /* 11111110 */
14621462 0x00, /* 00000000 */
14631463
1464− /* 145 0x91 '�' */
1464+ /* 145 0x91 'æ' */
14651465 0x00, /* 00000000 */
14661466 0x00, /* 00000000 */
14671467 0x7e, /* 01111110 */
@@ -1471,7 +1471,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14711471 0x7e, /* 01111110 */
14721472 0x00, /* 00000000 */
14731473
1474− /* 146 0x92 '�' */
1474+ /* 146 0x92 'Æ' */
14751475 0x3e, /* 00111110 */
14761476 0x6c, /* 01101100 */
14771477 0xcc, /* 11001100 */
@@ -1481,7 +1481,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14811481 0xce, /* 11001110 */
14821482 0x00, /* 00000000 */
14831483
1484− /* 147 0x93 '�' */
1484+ /* 147 0x93 'ô' */
14851485 0x7c, /* 01111100 */
14861486 0x82, /* 10000010 */
14871487 0x7c, /* 01111100 */
@@ -1491,7 +1491,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
14911491 0x7c, /* 01111100 */
14921492 0x00, /* 00000000 */
14931493
1494− /* 148 0x94 '�' */
1494+ /* 148 0x94 'ö' */
14951495 0xc6, /* 11000110 */
14961496 0x00, /* 00000000 */
14971497 0x7c, /* 01111100 */
@@ -1501,7 +1501,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15011501 0x7c, /* 01111100 */
15021502 0x00, /* 00000000 */
15031503
1504− /* 149 0x95 '�' */
1504+ /* 149 0x95 'ò' */
15051505 0x30, /* 00110000 */
15061506 0x18, /* 00011000 */
15071507 0x7c, /* 01111100 */
@@ -1511,7 +1511,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15111511 0x7c, /* 01111100 */
15121512 0x00, /* 00000000 */
15131513
1514− /* 150 0x96 '�' */
1514+ /* 150 0x96 'û' */
15151515 0x78, /* 01111000 */
15161516 0x84, /* 10000100 */
15171517 0x00, /* 00000000 */
@@ -1521,7 +1521,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15211521 0x76, /* 01110110 */
15221522 0x00, /* 00000000 */
15231523
1524− /* 151 0x97 '�' */
1524+ /* 151 0x97 'ù' */
15251525 0x60, /* 01100000 */
15261526 0x30, /* 00110000 */
15271527 0xcc, /* 11001100 */
@@ -1531,7 +1531,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15311531 0x76, /* 01110110 */
15321532 0x00, /* 00000000 */
15331533
1534− /* 152 0x98 '�' */
1534+ /* 152 0x98 'ÿ' */
15351535 0xc6, /* 11000110 */
15361536 0x00, /* 00000000 */
15371537 0xc6, /* 11000110 */
@@ -1541,7 +1541,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15411541 0x06, /* 00000110 */
15421542 0xfc, /* 11111100 */
15431543
1544− /* 153 0x99 '�' */
1544+ /* 153 0x99 'Ö' */
15451545 0xc6, /* 11000110 */
15461546 0x38, /* 00111000 */
15471547 0x6c, /* 01101100 */
@@ -1551,7 +1551,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15511551 0x38, /* 00111000 */
15521552 0x00, /* 00000000 */
15531553
1554− /* 154 0x9a '�' */
1554+ /* 154 0x9a 'Ü' */
15551555 0xc6, /* 11000110 */
15561556 0x00, /* 00000000 */
15571557 0xc6, /* 11000110 */
@@ -1561,7 +1561,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15611561 0x7c, /* 01111100 */
15621562 0x00, /* 00000000 */
15631563
1564− /* 155 0x9b '�' */
1564+ /* 155 0x9b '¢' */
15651565 0x18, /* 00011000 */
15661566 0x18, /* 00011000 */
15671567 0x7e, /* 01111110 */
@@ -1571,7 +1571,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15711571 0x18, /* 00011000 */
15721572 0x18, /* 00011000 */
15731573
1574− /* 156 0x9c '�' */
1574+ /* 156 0x9c '£' */
15751575 0x38, /* 00111000 */
15761576 0x6c, /* 01101100 */
15771577 0x64, /* 01100100 */
@@ -1581,7 +1581,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15811581 0xfc, /* 11111100 */
15821582 0x00, /* 00000000 */
15831583
1584− /* 157 0x9d '�' */
1584+ /* 157 0x9d '¥' */
15851585 0x66, /* 01100110 */
15861586 0x66, /* 01100110 */
15871587 0x3c, /* 00111100 */
@@ -1591,7 +1591,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
15911591 0x18, /* 00011000 */
15921592 0x18, /* 00011000 */
15931593
1594− /* 158 0x9e '�' */
1594+ /* 158 0x9e '₧' */
15951595 0xf8, /* 11111000 */
15961596 0xcc, /* 11001100 */
15971597 0xcc, /* 11001100 */
@@ -1601,7 +1601,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16011601 0xc6, /* 11000110 */
16021602 0xc7, /* 11000111 */
16031603
1604− /* 159 0x9f '�' */
1604+ /* 159 0x9f 'ƒ' */
16051605 0x0e, /* 00001110 */
16061606 0x1b, /* 00011011 */
16071607 0x18, /* 00011000 */
@@ -1611,7 +1611,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16111611 0x70, /* 01110000 */
16121612 0x00, /* 00000000 */
16131613
1614− /* 160 0xa0 '�' */
1614+ /* 160 0xa0 'á' */
16151615 0x18, /* 00011000 */
16161616 0x30, /* 00110000 */
16171617 0x78, /* 01111000 */
@@ -1621,7 +1621,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16211621 0x76, /* 01110110 */
16221622 0x00, /* 00000000 */
16231623
1624− /* 161 0xa1 '�' */
1624+ /* 161 0xa1 'í' */
16251625 0x0c, /* 00001100 */
16261626 0x18, /* 00011000 */
16271627 0x00, /* 00000000 */
@@ -1631,7 +1631,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16311631 0x3c, /* 00111100 */
16321632 0x00, /* 00000000 */
16331633
1634− /* 162 0xa2 '�' */
1634+ /* 162 0xa2 'ó' */
16351635 0x0c, /* 00001100 */
16361636 0x18, /* 00011000 */
16371637 0x7c, /* 01111100 */
@@ -1641,7 +1641,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16411641 0x7c, /* 01111100 */
16421642 0x00, /* 00000000 */
16431643
1644− /* 163 0xa3 '�' */
1644+ /* 163 0xa3 'ú' */
16451645 0x18, /* 00011000 */
16461646 0x30, /* 00110000 */
16471647 0xcc, /* 11001100 */
@@ -1651,7 +1651,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16511651 0x76, /* 01110110 */
16521652 0x00, /* 00000000 */
16531653
1654− /* 164 0xa4 '�' */
1654+ /* 164 0xa4 'ñ' */
16551655 0x76, /* 01110110 */
16561656 0xdc, /* 11011100 */
16571657 0x00, /* 00000000 */
@@ -1661,7 +1661,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16611661 0x66, /* 01100110 */
16621662 0x00, /* 00000000 */
16631663
1664− /* 165 0xa5 '�' */
1664+ /* 165 0xa5 'Ñ' */
16651665 0x76, /* 01110110 */
16661666 0xdc, /* 11011100 */
16671667 0x00, /* 00000000 */
@@ -1671,7 +1671,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16711671 0xce, /* 11001110 */
16721672 0x00, /* 00000000 */
16731673
1674− /* 166 0xa6 '�' */
1674+ /* 166 0xa6 'ª' */
16751675 0x3c, /* 00111100 */
16761676 0x6c, /* 01101100 */
16771677 0x6c, /* 01101100 */
@@ -1681,7 +1681,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16811681 0x00, /* 00000000 */
16821682 0x00, /* 00000000 */
16831683
1684− /* 167 0xa7 '�' */
1684+ /* 167 0xa7 'º' */
16851685 0x38, /* 00111000 */
16861686 0x6c, /* 01101100 */
16871687 0x6c, /* 01101100 */
@@ -1691,7 +1691,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
16911691 0x00, /* 00000000 */
16921692 0x00, /* 00000000 */
16931693
1694− /* 168 0xa8 '�' */
1694+ /* 168 0xa8 '¿' */
16951695 0x18, /* 00011000 */
16961696 0x00, /* 00000000 */
16971697 0x18, /* 00011000 */
@@ -1701,7 +1701,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17011701 0x3e, /* 00111110 */
17021702 0x00, /* 00000000 */
17031703
1704− /* 169 0xa9 '�' */
1704+ /* 169 0xa9 '⌐' */
17051705 0x00, /* 00000000 */
17061706 0x00, /* 00000000 */
17071707 0x00, /* 00000000 */
@@ -1711,7 +1711,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17111711 0x00, /* 00000000 */
17121712 0x00, /* 00000000 */
17131713
1714− /* 170 0xaa '�' */
1714+ /* 170 0xaa '¬' */
17151715 0x00, /* 00000000 */
17161716 0x00, /* 00000000 */
17171717 0x00, /* 00000000 */
@@ -1721,7 +1721,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17211721 0x00, /* 00000000 */
17221722 0x00, /* 00000000 */
17231723
1724− /* 171 0xab '�' */
1724+ /* 171 0xab '½' */
17251725 0x63, /* 01100011 */
17261726 0xe6, /* 11100110 */
17271727 0x6c, /* 01101100 */
@@ -1731,7 +1731,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17311731 0xcc, /* 11001100 */
17321732 0x0f, /* 00001111 */
17331733
1734− /* 172 0xac '�' */
1734+ /* 172 0xac '¼' */
17351735 0x63, /* 01100011 */
17361736 0xe6, /* 11100110 */
17371737 0x6c, /* 01101100 */
@@ -1741,7 +1741,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17411741 0xdf, /* 11011111 */
17421742 0x06, /* 00000110 */
17431743
1744− /* 173 0xad '�' */
1744+ /* 173 0xad '¡' */
17451745 0x18, /* 00011000 */
17461746 0x00, /* 00000000 */
17471747 0x18, /* 00011000 */
@@ -1751,7 +1751,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17511751 0x18, /* 00011000 */
17521752 0x00, /* 00000000 */
17531753
1754− /* 174 0xae '�' */
1754+ /* 174 0xae '«' */
17551755 0x00, /* 00000000 */
17561756 0x33, /* 00110011 */
17571757 0x66, /* 01100110 */
@@ -1761,7 +1761,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17611761 0x00, /* 00000000 */
17621762 0x00, /* 00000000 */
17631763
1764− /* 175 0xaf '�' */
1764+ /* 175 0xaf '»' */
17651765 0x00, /* 00000000 */
17661766 0xcc, /* 11001100 */
17671767 0x66, /* 01100110 */
@@ -1771,7 +1771,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17711771 0x00, /* 00000000 */
17721772 0x00, /* 00000000 */
17731773
1774− /* 176 0xb0 '�' */
1774+ /* 176 0xb0 '░' */
17751775 0x22, /* 00100010 */
17761776 0x88, /* 10001000 */
17771777 0x22, /* 00100010 */
@@ -1781,7 +1781,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17811781 0x22, /* 00100010 */
17821782 0x88, /* 10001000 */
17831783
1784− /* 177 0xb1 '�' */
1784+ /* 177 0xb1 '▒' */
17851785 0x55, /* 01010101 */
17861786 0xaa, /* 10101010 */
17871787 0x55, /* 01010101 */
@@ -1791,7 +1791,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
17911791 0x55, /* 01010101 */
17921792 0xaa, /* 10101010 */
17931793
1794− /* 178 0xb2 '�' */
1794+ /* 178 0xb2 '▓' */
17951795 0x77, /* 01110111 */
17961796 0xdd, /* 11011101 */
17971797 0x77, /* 01110111 */
@@ -1801,7 +1801,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18011801 0x77, /* 01110111 */
18021802 0xdd, /* 11011101 */
18031803
1804− /* 179 0xb3 '�' */
1804+ /* 179 0xb3 '│' */
18051805 0x18, /* 00011000 */
18061806 0x18, /* 00011000 */
18071807 0x18, /* 00011000 */
@@ -1811,7 +1811,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18111811 0x18, /* 00011000 */
18121812 0x18, /* 00011000 */
18131813
1814− /* 180 0xb4 '�' */
1814+ /* 180 0xb4 '┤' */
18151815 0x18, /* 00011000 */
18161816 0x18, /* 00011000 */
18171817 0x18, /* 00011000 */
@@ -1821,7 +1821,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18211821 0x18, /* 00011000 */
18221822 0x18, /* 00011000 */
18231823
1824− /* 181 0xb5 '�' */
1824+ /* 181 0xb5 '╡' */
18251825 0x18, /* 00011000 */
18261826 0x18, /* 00011000 */
18271827 0xf8, /* 11111000 */
@@ -1831,7 +1831,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18311831 0x18, /* 00011000 */
18321832 0x18, /* 00011000 */
18331833
1834− /* 182 0xb6 '�' */
1834+ /* 182 0xb6 '╢' */
18351835 0x36, /* 00110110 */
18361836 0x36, /* 00110110 */
18371837 0x36, /* 00110110 */
@@ -1841,7 +1841,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18411841 0x36, /* 00110110 */
18421842 0x36, /* 00110110 */
18431843
1844− /* 183 0xb7 '�' */
1844+ /* 183 0xb7 '╖' */
18451845 0x00, /* 00000000 */
18461846 0x00, /* 00000000 */
18471847 0x00, /* 00000000 */
@@ -1851,7 +1851,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18511851 0x36, /* 00110110 */
18521852 0x36, /* 00110110 */
18531853
1854− /* 184 0xb8 '�' */
1854+ /* 184 0xb8 '╕' */
18551855 0x00, /* 00000000 */
18561856 0x00, /* 00000000 */
18571857 0xf8, /* 11111000 */
@@ -1861,7 +1861,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18611861 0x18, /* 00011000 */
18621862 0x18, /* 00011000 */
18631863
1864− /* 185 0xb9 '�' */
1864+ /* 185 0xb9 '╣' */
18651865 0x36, /* 00110110 */
18661866 0x36, /* 00110110 */
18671867 0xf6, /* 11110110 */
@@ -1871,7 +1871,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18711871 0x36, /* 00110110 */
18721872 0x36, /* 00110110 */
18731873
1874− /* 186 0xba '�' */
1874+ /* 186 0xba '║' */
18751875 0x36, /* 00110110 */
18761876 0x36, /* 00110110 */
18771877 0x36, /* 00110110 */
@@ -1881,7 +1881,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18811881 0x36, /* 00110110 */
18821882 0x36, /* 00110110 */
18831883
1884− /* 187 0xbb '�' */
1884+ /* 187 0xbb '╗' */
18851885 0x00, /* 00000000 */
18861886 0x00, /* 00000000 */
18871887 0xfe, /* 11111110 */
@@ -1891,7 +1891,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
18911891 0x36, /* 00110110 */
18921892 0x36, /* 00110110 */
18931893
1894− /* 188 0xbc '�' */
1894+ /* 188 0xbc '╝' */
18951895 0x36, /* 00110110 */
18961896 0x36, /* 00110110 */
18971897 0xf6, /* 11110110 */
@@ -1901,7 +1901,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19011901 0x00, /* 00000000 */
19021902 0x00, /* 00000000 */
19031903
1904− /* 189 0xbd '�' */
1904+ /* 189 0xbd '╜' */
19051905 0x36, /* 00110110 */
19061906 0x36, /* 00110110 */
19071907 0x36, /* 00110110 */
@@ -1911,7 +1911,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19111911 0x00, /* 00000000 */
19121912 0x00, /* 00000000 */
19131913
1914− /* 190 0xbe '�' */
1914+ /* 190 0xbe '╛' */
19151915 0x18, /* 00011000 */
19161916 0x18, /* 00011000 */
19171917 0xf8, /* 11111000 */
@@ -1921,7 +1921,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19211921 0x00, /* 00000000 */
19221922 0x00, /* 00000000 */
19231923
1924− /* 191 0xbf '�' */
1924+ /* 191 0xbf '┐' */
19251925 0x00, /* 00000000 */
19261926 0x00, /* 00000000 */
19271927 0x00, /* 00000000 */
@@ -1931,7 +1931,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19311931 0x18, /* 00011000 */
19321932 0x18, /* 00011000 */
19331933
1934− /* 192 0xc0 '�' */
1934+ /* 192 0xc0 '└' */
19351935 0x18, /* 00011000 */
19361936 0x18, /* 00011000 */
19371937 0x18, /* 00011000 */
@@ -1941,7 +1941,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19411941 0x00, /* 00000000 */
19421942 0x00, /* 00000000 */
19431943
1944− /* 193 0xc1 '�' */
1944+ /* 193 0xc1 '┴' */
19451945 0x18, /* 00011000 */
19461946 0x18, /* 00011000 */
19471947 0x18, /* 00011000 */
@@ -1951,7 +1951,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19511951 0x00, /* 00000000 */
19521952 0x00, /* 00000000 */
19531953
1954− /* 194 0xc2 '�' */
1954+ /* 194 0xc2 '┬' */
19551955 0x00, /* 00000000 */
19561956 0x00, /* 00000000 */
19571957 0x00, /* 00000000 */
@@ -1961,7 +1961,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19611961 0x18, /* 00011000 */
19621962 0x18, /* 00011000 */
19631963
1964− /* 195 0xc3 '�' */
1964+ /* 195 0xc3 '├' */
19651965 0x18, /* 00011000 */
19661966 0x18, /* 00011000 */
19671967 0x18, /* 00011000 */
@@ -1971,7 +1971,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19711971 0x18, /* 00011000 */
19721972 0x18, /* 00011000 */
19731973
1974− /* 196 0xc4 '�' */
1974+ /* 196 0xc4 '─' */
19751975 0x00, /* 00000000 */
19761976 0x00, /* 00000000 */
19771977 0x00, /* 00000000 */
@@ -1981,7 +1981,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19811981 0x00, /* 00000000 */
19821982 0x00, /* 00000000 */
19831983
1984− /* 197 0xc5 '�' */
1984+ /* 197 0xc5 '┼' */
19851985 0x18, /* 00011000 */
19861986 0x18, /* 00011000 */
19871987 0x18, /* 00011000 */
@@ -1991,7 +1991,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
19911991 0x18, /* 00011000 */
19921992 0x18, /* 00011000 */
19931993
1994− /* 198 0xc6 '�' */
1994+ /* 198 0xc6 '╞' */
19951995 0x18, /* 00011000 */
19961996 0x18, /* 00011000 */
19971997 0x1f, /* 00011111 */
@@ -2001,7 +2001,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20012001 0x18, /* 00011000 */
20022002 0x18, /* 00011000 */
20032003
2004− /* 199 0xc7 '�' */
2004+ /* 199 0xc7 '╟' */
20052005 0x36, /* 00110110 */
20062006 0x36, /* 00110110 */
20072007 0x36, /* 00110110 */
@@ -2011,7 +2011,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20112011 0x36, /* 00110110 */
20122012 0x36, /* 00110110 */
20132013
2014− /* 200 0xc8 '�' */
2014+ /* 200 0xc8 '╚' */
20152015 0x36, /* 00110110 */
20162016 0x36, /* 00110110 */
20172017 0x37, /* 00110111 */
@@ -2021,7 +2021,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20212021 0x00, /* 00000000 */
20222022 0x00, /* 00000000 */
20232023
2024− /* 201 0xc9 '�' */
2024+ /* 201 0xc9 '╔' */
20252025 0x00, /* 00000000 */
20262026 0x00, /* 00000000 */
20272027 0x3f, /* 00111111 */
@@ -2031,7 +2031,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20312031 0x36, /* 00110110 */
20322032 0x36, /* 00110110 */
20332033
2034− /* 202 0xca '�' */
2034+ /* 202 0xca '╩' */
20352035 0x36, /* 00110110 */
20362036 0x36, /* 00110110 */
20372037 0xf7, /* 11110111 */
@@ -2041,7 +2041,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20412041 0x00, /* 00000000 */
20422042 0x00, /* 00000000 */
20432043
2044− /* 203 0xcb '�' */
2044+ /* 203 0xcb '╦' */
20452045 0x00, /* 00000000 */
20462046 0x00, /* 00000000 */
20472047 0xff, /* 11111111 */
@@ -2051,7 +2051,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20512051 0x36, /* 00110110 */
20522052 0x36, /* 00110110 */
20532053
2054− /* 204 0xcc '�' */
2054+ /* 204 0xcc '╠' */
20552055 0x36, /* 00110110 */
20562056 0x36, /* 00110110 */
20572057 0x37, /* 00110111 */
@@ -2061,7 +2061,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20612061 0x36, /* 00110110 */
20622062 0x36, /* 00110110 */
20632063
2064− /* 205 0xcd '�' */
2064+ /* 205 0xcd '═' */
20652065 0x00, /* 00000000 */
20662066 0x00, /* 00000000 */
20672067 0xff, /* 11111111 */
@@ -2071,7 +2071,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20712071 0x00, /* 00000000 */
20722072 0x00, /* 00000000 */
20732073
2074− /* 206 0xce '�' */
2074+ /* 206 0xce '╬' */
20752075 0x36, /* 00110110 */
20762076 0x36, /* 00110110 */
20772077 0xf7, /* 11110111 */
@@ -2081,7 +2081,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20812081 0x36, /* 00110110 */
20822082 0x36, /* 00110110 */
20832083
2084− /* 207 0xcf '�' */
2084+ /* 207 0xcf '╧' */
20852085 0x18, /* 00011000 */
20862086 0x18, /* 00011000 */
20872087 0xff, /* 11111111 */
@@ -2091,7 +2091,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
20912091 0x00, /* 00000000 */
20922092 0x00, /* 00000000 */
20932093
2094− /* 208 0xd0 '�' */
2094+ /* 208 0xd0 '╨' */
20952095 0x36, /* 00110110 */
20962096 0x36, /* 00110110 */
20972097 0x36, /* 00110110 */
@@ -2101,7 +2101,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21012101 0x00, /* 00000000 */
21022102 0x00, /* 00000000 */
21032103
2104− /* 209 0xd1 '�' */
2104+ /* 209 0xd1 '╤' */
21052105 0x00, /* 00000000 */
21062106 0x00, /* 00000000 */
21072107 0xff, /* 11111111 */
@@ -2111,7 +2111,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21112111 0x18, /* 00011000 */
21122112 0x18, /* 00011000 */
21132113
2114− /* 210 0xd2 '�' */
2114+ /* 210 0xd2 '╥' */
21152115 0x00, /* 00000000 */
21162116 0x00, /* 00000000 */
21172117 0x00, /* 00000000 */
@@ -2121,7 +2121,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21212121 0x36, /* 00110110 */
21222122 0x36, /* 00110110 */
21232123
2124− /* 211 0xd3 '�' */
2124+ /* 211 0xd3 '╙' */
21252125 0x36, /* 00110110 */
21262126 0x36, /* 00110110 */
21272127 0x36, /* 00110110 */
@@ -2131,7 +2131,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21312131 0x00, /* 00000000 */
21322132 0x00, /* 00000000 */
21332133
2134− /* 212 0xd4 '�' */
2134+ /* 212 0xd4 '╘' */
21352135 0x18, /* 00011000 */
21362136 0x18, /* 00011000 */
21372137 0x1f, /* 00011111 */
@@ -2141,7 +2141,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21412141 0x00, /* 00000000 */
21422142 0x00, /* 00000000 */
21432143
2144− /* 213 0xd5 '�' */
2144+ /* 213 0xd5 '╒' */
21452145 0x00, /* 00000000 */
21462146 0x00, /* 00000000 */
21472147 0x1f, /* 00011111 */
@@ -2151,7 +2151,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21512151 0x18, /* 00011000 */
21522152 0x18, /* 00011000 */
21532153
2154− /* 214 0xd6 '�' */
2154+ /* 214 0xd6 '╓' */
21552155 0x00, /* 00000000 */
21562156 0x00, /* 00000000 */
21572157 0x00, /* 00000000 */
@@ -2161,7 +2161,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21612161 0x36, /* 00110110 */
21622162 0x36, /* 00110110 */
21632163
2164− /* 215 0xd7 '�' */
2164+ /* 215 0xd7 '╫' */
21652165 0x36, /* 00110110 */
21662166 0x36, /* 00110110 */
21672167 0x36, /* 00110110 */
@@ -2171,7 +2171,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21712171 0x36, /* 00110110 */
21722172 0x36, /* 00110110 */
21732173
2174− /* 216 0xd8 '�' */
2174+ /* 216 0xd8 '╪' */
21752175 0x18, /* 00011000 */
21762176 0x18, /* 00011000 */
21772177 0xff, /* 11111111 */
@@ -2181,7 +2181,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21812181 0x18, /* 00011000 */
21822182 0x18, /* 00011000 */
21832183
2184− /* 217 0xd9 '�' */
2184+ /* 217 0xd9 '┘' */
21852185 0x18, /* 00011000 */
21862186 0x18, /* 00011000 */
21872187 0x18, /* 00011000 */
@@ -2191,7 +2191,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
21912191 0x00, /* 00000000 */
21922192 0x00, /* 00000000 */
21932193
2194− /* 218 0xda '�' */
2194+ /* 218 0xda '┌' */
21952195 0x00, /* 00000000 */
21962196 0x00, /* 00000000 */
21972197 0x00, /* 00000000 */
@@ -2201,7 +2201,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22012201 0x18, /* 00011000 */
22022202 0x18, /* 00011000 */
22032203
2204− /* 219 0xdb '�' */
2204+ /* 219 0xdb '█' */
22052205 0xff, /* 11111111 */
22062206 0xff, /* 11111111 */
22072207 0xff, /* 11111111 */
@@ -2211,7 +2211,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22112211 0xff, /* 11111111 */
22122212 0xff, /* 11111111 */
22132213
2214− /* 220 0xdc '�' */
2214+ /* 220 0xdc '▄' */
22152215 0x00, /* 00000000 */
22162216 0x00, /* 00000000 */
22172217 0x00, /* 00000000 */
@@ -2221,7 +2221,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22212221 0xff, /* 11111111 */
22222222 0xff, /* 11111111 */
22232223
2224− /* 221 0xdd '�' */
2224+ /* 221 0xdd '▌' */
22252225 0xf0, /* 11110000 */
22262226 0xf0, /* 11110000 */
22272227 0xf0, /* 11110000 */
@@ -2231,7 +2231,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22312231 0xf0, /* 11110000 */
22322232 0xf0, /* 11110000 */
22332233
2234− /* 222 0xde '�' */
2234+ /* 222 0xde '▐' */
22352235 0x0f, /* 00001111 */
22362236 0x0f, /* 00001111 */
22372237 0x0f, /* 00001111 */
@@ -2241,7 +2241,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22412241 0x0f, /* 00001111 */
22422242 0x0f, /* 00001111 */
22432243
2244− /* 223 0xdf '�' */
2244+ /* 223 0xdf '▀' */
22452245 0xff, /* 11111111 */
22462246 0xff, /* 11111111 */
22472247 0xff, /* 11111111 */
@@ -2251,7 +2251,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22512251 0x00, /* 00000000 */
22522252 0x00, /* 00000000 */
22532253
2254− /* 224 0xe0 '�' */
2254+ /* 224 0xe0 'α' */
22552255 0x00, /* 00000000 */
22562256 0x00, /* 00000000 */
22572257 0x76, /* 01110110 */
@@ -2261,7 +2261,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22612261 0x76, /* 01110110 */
22622262 0x00, /* 00000000 */
22632263
2264− /* 225 0xe1 '�' */
2264+ /* 225 0xe1 'ß' */
22652265 0x78, /* 01111000 */
22662266 0xcc, /* 11001100 */
22672267 0xcc, /* 11001100 */
@@ -2271,7 +2271,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22712271 0xcc, /* 11001100 */
22722272 0x00, /* 00000000 */
22732273
2274− /* 226 0xe2 '�' */
2274+ /* 226 0xe2 'Γ' */
22752275 0xfe, /* 11111110 */
22762276 0xc6, /* 11000110 */
22772277 0xc0, /* 11000000 */
@@ -2281,7 +2281,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22812281 0xc0, /* 11000000 */
22822282 0x00, /* 00000000 */
22832283
2284− /* 227 0xe3 '�' */
2284+ /* 227 0xe3 'π' */
22852285 0x00, /* 00000000 */
22862286 0x00, /* 00000000 */
22872287 0xfe, /* 11111110 */
@@ -2291,7 +2291,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
22912291 0x6c, /* 01101100 */
22922292 0x00, /* 00000000 */
22932293
2294− /* 228 0xe4 '�' */
2294+ /* 228 0xe4 'Σ' */
22952295 0xfe, /* 11111110 */
22962296 0xc6, /* 11000110 */
22972297 0x60, /* 01100000 */
@@ -2301,7 +2301,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23012301 0xfe, /* 11111110 */
23022302 0x00, /* 00000000 */
23032303
2304− /* 229 0xe5 '�' */
2304+ /* 229 0xe5 'σ' */
23052305 0x00, /* 00000000 */
23062306 0x00, /* 00000000 */
23072307 0x7e, /* 01111110 */
@@ -2311,7 +2311,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23112311 0x70, /* 01110000 */
23122312 0x00, /* 00000000 */
23132313
2314− /* 230 0xe6 '�' */
2314+ /* 230 0xe6 'µ' */
23152315 0x00, /* 00000000 */
23162316 0x00, /* 00000000 */
23172317 0x66, /* 01100110 */
@@ -2321,7 +2321,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23212321 0x7c, /* 01111100 */
23222322 0xc0, /* 11000000 */
23232323
2324− /* 231 0xe7 '�' */
2324+ /* 231 0xe7 'τ' */
23252325 0x00, /* 00000000 */
23262326 0x76, /* 01110110 */
23272327 0xdc, /* 11011100 */
@@ -2331,7 +2331,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23312331 0x18, /* 00011000 */
23322332 0x00, /* 00000000 */
23332333
2334− /* 232 0xe8 '�' */
2334+ /* 232 0xe8 'Φ' */
23352335 0x7e, /* 01111110 */
23362336 0x18, /* 00011000 */
23372337 0x3c, /* 00111100 */
@@ -2341,7 +2341,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23412341 0x18, /* 00011000 */
23422342 0x7e, /* 01111110 */
23432343
2344− /* 233 0xe9 '�' */
2344+ /* 233 0xe9 'Θ' */
23452345 0x38, /* 00111000 */
23462346 0x6c, /* 01101100 */
23472347 0xc6, /* 11000110 */
@@ -2351,7 +2351,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23512351 0x38, /* 00111000 */
23522352 0x00, /* 00000000 */
23532353
2354− /* 234 0xea '�' */
2354+ /* 234 0xea 'Ω' */
23552355 0x38, /* 00111000 */
23562356 0x6c, /* 01101100 */
23572357 0xc6, /* 11000110 */
@@ -2361,7 +2361,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23612361 0xee, /* 11101110 */
23622362 0x00, /* 00000000 */
23632363
2364− /* 235 0xeb '�' */
2364+ /* 235 0xeb 'δ' */
23652365 0x0e, /* 00001110 */
23662366 0x18, /* 00011000 */
23672367 0x0c, /* 00001100 */
@@ -2371,7 +2371,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23712371 0x3c, /* 00111100 */
23722372 0x00, /* 00000000 */
23732373
2374− /* 236 0xec '�' */
2374+ /* 236 0xec '∞' */
23752375 0x00, /* 00000000 */
23762376 0x00, /* 00000000 */
23772377 0x7e, /* 01111110 */
@@ -2381,7 +2381,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23812381 0x00, /* 00000000 */
23822382 0x00, /* 00000000 */
23832383
2384− /* 237 0xed '�' */
2384+ /* 237 0xed 'φ' */
23852385 0x06, /* 00000110 */
23862386 0x0c, /* 00001100 */
23872387 0x7e, /* 01111110 */
@@ -2391,7 +2391,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
23912391 0x60, /* 01100000 */
23922392 0xc0, /* 11000000 */
23932393
2394− /* 238 0xee '�' */
2394+ /* 238 0xee 'ε' */
23952395 0x1e, /* 00011110 */
23962396 0x30, /* 00110000 */
23972397 0x60, /* 01100000 */
@@ -2401,7 +2401,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24012401 0x1e, /* 00011110 */
24022402 0x00, /* 00000000 */
24032403
2404− /* 239 0xef '�' */
2404+ /* 239 0xef '∩' */
24052405 0x00, /* 00000000 */
24062406 0x7c, /* 01111100 */
24072407 0xc6, /* 11000110 */
@@ -2411,7 +2411,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24112411 0xc6, /* 11000110 */
24122412 0x00, /* 00000000 */
24132413
2414− /* 240 0xf0 '�' */
2414+ /* 240 0xf0 '≡' */
24152415 0x00, /* 00000000 */
24162416 0xfe, /* 11111110 */
24172417 0x00, /* 00000000 */
@@ -2421,7 +2421,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24212421 0x00, /* 00000000 */
24222422 0x00, /* 00000000 */
24232423
2424− /* 241 0xf1 '�' */
2424+ /* 241 0xf1 '±' */
24252425 0x18, /* 00011000 */
24262426 0x18, /* 00011000 */
24272427 0x7e, /* 01111110 */
@@ -2431,7 +2431,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24312431 0x7e, /* 01111110 */
24322432 0x00, /* 00000000 */
24332433
2434− /* 242 0xf2 '�' */
2434+ /* 242 0xf2 '≥' */
24352435 0x30, /* 00110000 */
24362436 0x18, /* 00011000 */
24372437 0x0c, /* 00001100 */
@@ -2441,7 +2441,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24412441 0x7e, /* 01111110 */
24422442 0x00, /* 00000000 */
24432443
2444− /* 243 0xf3 '�' */
2444+ /* 243 0xf3 '≤' */
24452445 0x0c, /* 00001100 */
24462446 0x18, /* 00011000 */
24472447 0x30, /* 00110000 */
@@ -2451,7 +2451,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24512451 0x7e, /* 01111110 */
24522452 0x00, /* 00000000 */
24532453
2454− /* 244 0xf4 '�' */
2454+ /* 244 0xf4 '⌠' */
24552455 0x0e, /* 00001110 */
24562456 0x1b, /* 00011011 */
24572457 0x1b, /* 00011011 */
@@ -2461,7 +2461,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24612461 0x18, /* 00011000 */
24622462 0x18, /* 00011000 */
24632463
2464− /* 245 0xf5 '�' */
2464+ /* 245 0xf5 '⌡' */
24652465 0x18, /* 00011000 */
24662466 0x18, /* 00011000 */
24672467 0x18, /* 00011000 */
@@ -2471,7 +2471,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24712471 0xd8, /* 11011000 */
24722472 0x70, /* 01110000 */
24732473
2474− /* 246 0xf6 '�' */
2474+ /* 246 0xf6 '÷' */
24752475 0x00, /* 00000000 */
24762476 0x18, /* 00011000 */
24772477 0x00, /* 00000000 */
@@ -2481,7 +2481,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24812481 0x00, /* 00000000 */
24822482 0x00, /* 00000000 */
24832483
2484− /* 247 0xf7 '�' */
2484+ /* 247 0xf7 '≈' */
24852485 0x00, /* 00000000 */
24862486 0x76, /* 01110110 */
24872487 0xdc, /* 11011100 */
@@ -2491,7 +2491,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
24912491 0x00, /* 00000000 */
24922492 0x00, /* 00000000 */
24932493
2494− /* 248 0xf8 '�' */
2494+ /* 248 0xf8 '°' */
24952495 0x38, /* 00111000 */
24962496 0x6c, /* 01101100 */
24972497 0x6c, /* 01101100 */
@@ -2501,7 +2501,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
25012501 0x00, /* 00000000 */
25022502 0x00, /* 00000000 */
25032503
2504− /* 249 0xf9 '�' */
2504+ /* 249 0xf9 '·' */
25052505 0x00, /* 00000000 */
25062506 0x00, /* 00000000 */
25072507 0x00, /* 00000000 */
@@ -2511,7 +2511,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
25112511 0x00, /* 00000000 */
25122512 0x00, /* 00000000 */
25132513
2514− /* 250 0xfa '�' */
2514+ /* 250 0xfa '•' */
25152515 0x00, /* 00000000 */
25162516 0x00, /* 00000000 */
25172517 0x00, /* 00000000 */
@@ -2521,7 +2521,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
25212521 0x00, /* 00000000 */
25222522 0x00, /* 00000000 */
25232523
2524− /* 251 0xfb '�' */
2524+ /* 251 0xfb '√' */
25252525 0x0f, /* 00001111 */
25262526 0x0c, /* 00001100 */
25272527 0x0c, /* 00001100 */
@@ -2531,7 +2531,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
25312531 0x3c, /* 00111100 */
25322532 0x1c, /* 00011100 */
25332533
2534− /* 252 0xfc '�' */
2534+ /* 252 0xfc 'ⁿ' */
25352535 0x6c, /* 01101100 */
25362536 0x36, /* 00110110 */
25372537 0x36, /* 00110110 */
@@ -2541,7 +2541,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
25412541 0x00, /* 00000000 */
25422542 0x00, /* 00000000 */
25432543
2544− /* 253 0xfd '�' */
2544+ /* 253 0xfd '²' */
25452545 0x78, /* 01111000 */
25462546 0x0c, /* 00001100 */
25472547 0x18, /* 00011000 */
@@ -2551,7 +2551,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
25512551 0x00, /* 00000000 */
25522552 0x00, /* 00000000 */
25532553
2554− /* 254 0xfe '�' */
2554+ /* 254 0xfe '■' */
25552555 0x00, /* 00000000 */
25562556 0x00, /* 00000000 */
25572557 0x3c, /* 00111100 */
@@ -2561,7 +2561,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { · 3 unmodified lines
25612561 0x00, /* 00000000 */
25622562 0x00, /* 00000000 */
25632563
2564− /* 255 0xff '�' */
2564+ /* 255 0xff ' ' */
25652565 0x00, /* 00000000 */
25662566 0x00, /* 00000000 */
25672567 0x00, /* 00000000 */
lib/fonts/font_pearl_8x8.c+128−128
@@ -1296,7 +1296,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 1295 unmodified lines
12961296 0xfe, /* 11111110 */
12971297 0x00, /* 00000000 */
12981298
1299− /* 128 0x80 '�' */
1299+ /* 128 0x80 'Ç' */
13001300 0x7c, /* 01111100 */
13011301 0xc6, /* 11000110 */
13021302 0xc0, /* 11000000 */
@@ -1306,7 +1306,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13061306 0x0c, /* 00001100 */
13071307 0x78, /* 01111000 */
13081308
1309− /* 129 0x81 '�' */
1309+ /* 129 0x81 'ü' */
13101310 0xcc, /* 11001100 */
13111311 0x00, /* 00000000 */
13121312 0xcc, /* 11001100 */
@@ -1316,7 +1316,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13161316 0x76, /* 01110110 */
13171317 0x00, /* 00000000 */
13181318
1319− /* 130 0x82 '�' */
1319+ /* 130 0x82 'é' */
13201320 0x0c, /* 00001100 */
13211321 0x18, /* 00011000 */
13221322 0x7c, /* 01111100 */
@@ -1326,7 +1326,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13261326 0x7c, /* 01111100 */
13271327 0x00, /* 00000000 */
13281328
1329− /* 131 0x83 '�' */
1329+ /* 131 0x83 'â' */
13301330 0x7c, /* 01111100 */
13311331 0x82, /* 10000010 */
13321332 0x78, /* 01111000 */
@@ -1336,7 +1336,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13361336 0x76, /* 01110110 */
13371337 0x00, /* 00000000 */
13381338
1339− /* 132 0x84 '�' */
1339+ /* 132 0x84 'ä' */
13401340 0xc6, /* 11000110 */
13411341 0x00, /* 00000000 */
13421342 0x78, /* 01111000 */
@@ -1346,7 +1346,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13461346 0x76, /* 01110110 */
13471347 0x00, /* 00000000 */
13481348
1349− /* 133 0x85 '�' */
1349+ /* 133 0x85 'à' */
13501350 0x30, /* 00110000 */
13511351 0x18, /* 00011000 */
13521352 0x78, /* 01111000 */
@@ -1356,7 +1356,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13561356 0x76, /* 01110110 */
13571357 0x00, /* 00000000 */
13581358
1359− /* 134 0x86 '�' */
1359+ /* 134 0x86 'å' */
13601360 0x30, /* 00110000 */
13611361 0x30, /* 00110000 */
13621362 0x78, /* 01111000 */
@@ -1366,7 +1366,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13661366 0x76, /* 01110110 */
13671367 0x00, /* 00000000 */
13681368
1369− /* 135 0x87 '�' */
1369+ /* 135 0x87 'ç' */
13701370 0x00, /* 00000000 */
13711371 0x00, /* 00000000 */
13721372 0x7e, /* 01111110 */
@@ -1376,7 +1376,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13761376 0x0c, /* 00001100 */
13771377 0x38, /* 00111000 */
13781378
1379− /* 136 0x88 '�' */
1379+ /* 136 0x88 'ê' */
13801380 0x7c, /* 01111100 */
13811381 0x82, /* 10000010 */
13821382 0x7c, /* 01111100 */
@@ -1386,7 +1386,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13861386 0x7c, /* 01111100 */
13871387 0x00, /* 00000000 */
13881388
1389− /* 137 0x89 '�' */
1389+ /* 137 0x89 'ë' */
13901390 0xc6, /* 11000110 */
13911391 0x00, /* 00000000 */
13921392 0x7c, /* 01111100 */
@@ -1396,7 +1396,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
13961396 0x7c, /* 01111100 */
13971397 0x00, /* 00000000 */
13981398
1399− /* 138 0x8a '�' */
1399+ /* 138 0x8a 'è' */
14001400 0x30, /* 00110000 */
14011401 0x18, /* 00011000 */
14021402 0x7c, /* 01111100 */
@@ -1406,7 +1406,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14061406 0x7c, /* 01111100 */
14071407 0x00, /* 00000000 */
14081408
1409− /* 139 0x8b '�' */
1409+ /* 139 0x8b 'ï' */
14101410 0x66, /* 01100110 */
14111411 0x00, /* 00000000 */
14121412 0x38, /* 00111000 */
@@ -1416,7 +1416,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14161416 0x3c, /* 00111100 */
14171417 0x00, /* 00000000 */
14181418
1419− /* 140 0x8c '�' */
1419+ /* 140 0x8c 'î' */
14201420 0x7c, /* 01111100 */
14211421 0x82, /* 10000010 */
14221422 0x38, /* 00111000 */
@@ -1426,7 +1426,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14261426 0x3c, /* 00111100 */
14271427 0x00, /* 00000000 */
14281428
1429− /* 141 0x8d '�' */
1429+ /* 141 0x8d 'ì' */
14301430 0x30, /* 00110000 */
14311431 0x18, /* 00011000 */
14321432 0x00, /* 00000000 */
@@ -1436,7 +1436,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14361436 0x3c, /* 00111100 */
14371437 0x00, /* 00000000 */
14381438
1439− /* 142 0x8e '�' */
1439+ /* 142 0x8e 'Ä' */
14401440 0xc6, /* 11000110 */
14411441 0x38, /* 00111000 */
14421442 0x6c, /* 01101100 */
@@ -1446,7 +1446,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14461446 0xc6, /* 11000110 */
14471447 0x00, /* 00000000 */
14481448
1449− /* 143 0x8f '�' */
1449+ /* 143 0x8f 'Å' */
14501450 0x38, /* 00111000 */
14511451 0x6c, /* 01101100 */
14521452 0x7c, /* 01111100 */
@@ -1456,7 +1456,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14561456 0xc6, /* 11000110 */
14571457 0x00, /* 00000000 */
14581458
1459− /* 144 0x90 '�' */
1459+ /* 144 0x90 'É' */
14601460 0x18, /* 00011000 */
14611461 0x30, /* 00110000 */
14621462 0xfe, /* 11111110 */
@@ -1466,7 +1466,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14661466 0xfe, /* 11111110 */
14671467 0x00, /* 00000000 */
14681468
1469− /* 145 0x91 '�' */
1469+ /* 145 0x91 'æ' */
14701470 0x00, /* 00000000 */
14711471 0x00, /* 00000000 */
14721472 0x7e, /* 01111110 */
@@ -1476,7 +1476,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14761476 0x7e, /* 01111110 */
14771477 0x00, /* 00000000 */
14781478
1479− /* 146 0x92 '�' */
1479+ /* 146 0x92 'Æ' */
14801480 0x3e, /* 00111110 */
14811481 0x6c, /* 01101100 */
14821482 0xcc, /* 11001100 */
@@ -1486,7 +1486,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14861486 0xce, /* 11001110 */
14871487 0x00, /* 00000000 */
14881488
1489− /* 147 0x93 '�' */
1489+ /* 147 0x93 'ô' */
14901490 0x7c, /* 01111100 */
14911491 0x82, /* 10000010 */
14921492 0x7c, /* 01111100 */
@@ -1496,7 +1496,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
14961496 0x7c, /* 01111100 */
14971497 0x00, /* 00000000 */
14981498
1499− /* 148 0x94 '�' */
1499+ /* 148 0x94 'ö' */
15001500 0xc6, /* 11000110 */
15011501 0x00, /* 00000000 */
15021502 0x7c, /* 01111100 */
@@ -1506,7 +1506,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15061506 0x7c, /* 01111100 */
15071507 0x00, /* 00000000 */
15081508
1509− /* 149 0x95 '�' */
1509+ /* 149 0x95 'ò' */
15101510 0x30, /* 00110000 */
15111511 0x18, /* 00011000 */
15121512 0x7c, /* 01111100 */
@@ -1516,7 +1516,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15161516 0x7c, /* 01111100 */
15171517 0x00, /* 00000000 */
15181518
1519− /* 150 0x96 '�' */
1519+ /* 150 0x96 'û' */
15201520 0x78, /* 01111000 */
15211521 0x84, /* 10000100 */
15221522 0x00, /* 00000000 */
@@ -1526,7 +1526,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15261526 0x76, /* 01110110 */
15271527 0x00, /* 00000000 */
15281528
1529− /* 151 0x97 '�' */
1529+ /* 151 0x97 'ù' */
15301530 0x60, /* 01100000 */
15311531 0x30, /* 00110000 */
15321532 0xcc, /* 11001100 */
@@ -1536,7 +1536,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15361536 0x76, /* 01110110 */
15371537 0x00, /* 00000000 */
15381538
1539− /* 152 0x98 '�' */
1539+ /* 152 0x98 'ÿ' */
15401540 0xc6, /* 11000110 */
15411541 0x00, /* 00000000 */
15421542 0xc6, /* 11000110 */
@@ -1546,7 +1546,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15461546 0x06, /* 00000110 */
15471547 0xfc, /* 11111100 */
15481548
1549− /* 153 0x99 '�' */
1549+ /* 153 0x99 'Ö' */
15501550 0xc6, /* 11000110 */
15511551 0x38, /* 00111000 */
15521552 0x6c, /* 01101100 */
@@ -1556,7 +1556,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15561556 0x38, /* 00111000 */
15571557 0x00, /* 00000000 */
15581558
1559− /* 154 0x9a '�' */
1559+ /* 154 0x9a 'Ü' */
15601560 0xc6, /* 11000110 */
15611561 0x00, /* 00000000 */
15621562 0xc6, /* 11000110 */
@@ -1566,7 +1566,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15661566 0x7c, /* 01111100 */
15671567 0x00, /* 00000000 */
15681568
1569− /* 155 0x9b '�' */
1569+ /* 155 0x9b '¢' */
15701570 0x18, /* 00011000 */
15711571 0x18, /* 00011000 */
15721572 0x7e, /* 01111110 */
@@ -1576,7 +1576,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15761576 0x18, /* 00011000 */
15771577 0x18, /* 00011000 */
15781578
1579− /* 156 0x9c '�' */
1579+ /* 156 0x9c '£' */
15801580 0x38, /* 00111000 */
15811581 0x6c, /* 01101100 */
15821582 0x64, /* 01100100 */
@@ -1586,7 +1586,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15861586 0xfc, /* 11111100 */
15871587 0x00, /* 00000000 */
15881588
1589− /* 157 0x9d '�' */
1589+ /* 157 0x9d '¥' */
15901590 0x66, /* 01100110 */
15911591 0x66, /* 01100110 */
15921592 0x3c, /* 00111100 */
@@ -1596,7 +1596,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
15961596 0x18, /* 00011000 */
15971597 0x18, /* 00011000 */
15981598
1599− /* 158 0x9e '�' */
1599+ /* 158 0x9e '₧' */
16001600 0xf8, /* 11111000 */
16011601 0xcc, /* 11001100 */
16021602 0xcc, /* 11001100 */
@@ -1606,7 +1606,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16061606 0xc6, /* 11000110 */
16071607 0xc7, /* 11000111 */
16081608
1609− /* 159 0x9f '�' */
1609+ /* 159 0x9f 'ƒ' */
16101610 0x0e, /* 00001110 */
16111611 0x1b, /* 00011011 */
16121612 0x18, /* 00011000 */
@@ -1616,7 +1616,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16161616 0x70, /* 01110000 */
16171617 0x00, /* 00000000 */
16181618
1619− /* 160 0xa0 '�' */
1619+ /* 160 0xa0 'á' */
16201620 0x18, /* 00011000 */
16211621 0x30, /* 00110000 */
16221622 0x78, /* 01111000 */
@@ -1626,7 +1626,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16261626 0x76, /* 01110110 */
16271627 0x00, /* 00000000 */
16281628
1629− /* 161 0xa1 '�' */
1629+ /* 161 0xa1 'í' */
16301630 0x0c, /* 00001100 */
16311631 0x18, /* 00011000 */
16321632 0x00, /* 00000000 */
@@ -1636,7 +1636,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16361636 0x3c, /* 00111100 */
16371637 0x00, /* 00000000 */
16381638
1639− /* 162 0xa2 '�' */
1639+ /* 162 0xa2 'ó' */
16401640 0x0c, /* 00001100 */
16411641 0x18, /* 00011000 */
16421642 0x7c, /* 01111100 */
@@ -1646,7 +1646,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16461646 0x7c, /* 01111100 */
16471647 0x00, /* 00000000 */
16481648
1649− /* 163 0xa3 '�' */
1649+ /* 163 0xa3 'ú' */
16501650 0x18, /* 00011000 */
16511651 0x30, /* 00110000 */
16521652 0xcc, /* 11001100 */
@@ -1656,7 +1656,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16561656 0x76, /* 01110110 */
16571657 0x00, /* 00000000 */
16581658
1659− /* 164 0xa4 '�' */
1659+ /* 164 0xa4 'ñ' */
16601660 0x76, /* 01110110 */
16611661 0xdc, /* 11011100 */
16621662 0x00, /* 00000000 */
@@ -1666,7 +1666,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16661666 0x66, /* 01100110 */
16671667 0x00, /* 00000000 */
16681668
1669− /* 165 0xa5 '�' */
1669+ /* 165 0xa5 'Ñ' */
16701670 0x76, /* 01110110 */
16711671 0xdc, /* 11011100 */
16721672 0x00, /* 00000000 */
@@ -1676,7 +1676,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16761676 0xce, /* 11001110 */
16771677 0x00, /* 00000000 */
16781678
1679− /* 166 0xa6 '�' */
1679+ /* 166 0xa6 'ª' */
16801680 0x3c, /* 00111100 */
16811681 0x6c, /* 01101100 */
16821682 0x6c, /* 01101100 */
@@ -1686,7 +1686,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16861686 0x00, /* 00000000 */
16871687 0x00, /* 00000000 */
16881688
1689− /* 167 0xa7 '�' */
1689+ /* 167 0xa7 'º' */
16901690 0x38, /* 00111000 */
16911691 0x6c, /* 01101100 */
16921692 0x6c, /* 01101100 */
@@ -1696,7 +1696,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
16961696 0x00, /* 00000000 */
16971697 0x00, /* 00000000 */
16981698
1699− /* 168 0xa8 '�' */
1699+ /* 168 0xa8 '¿' */
17001700 0x18, /* 00011000 */
17011701 0x00, /* 00000000 */
17021702 0x18, /* 00011000 */
@@ -1706,7 +1706,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17061706 0x3e, /* 00111110 */
17071707 0x00, /* 00000000 */
17081708
1709− /* 169 0xa9 '�' */
1709+ /* 169 0xa9 '⌐' */
17101710 0x00, /* 00000000 */
17111711 0x00, /* 00000000 */
17121712 0x00, /* 00000000 */
@@ -1716,7 +1716,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17161716 0x00, /* 00000000 */
17171717 0x00, /* 00000000 */
17181718
1719− /* 170 0xaa '�' */
1719+ /* 170 0xaa '¬' */
17201720 0x00, /* 00000000 */
17211721 0x00, /* 00000000 */
17221722 0x00, /* 00000000 */
@@ -1726,7 +1726,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17261726 0x00, /* 00000000 */
17271727 0x00, /* 00000000 */
17281728
1729− /* 171 0xab '�' */
1729+ /* 171 0xab '½' */
17301730 0x63, /* 01100011 */
17311731 0xe6, /* 11100110 */
17321732 0x6c, /* 01101100 */
@@ -1736,7 +1736,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17361736 0xcc, /* 11001100 */
17371737 0x0f, /* 00001111 */
17381738
1739− /* 172 0xac '�' */
1739+ /* 172 0xac '¼' */
17401740 0x63, /* 01100011 */
17411741 0xe6, /* 11100110 */
17421742 0x6c, /* 01101100 */
@@ -1746,7 +1746,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17461746 0xdf, /* 11011111 */
17471747 0x06, /* 00000110 */
17481748
1749− /* 173 0xad '�' */
1749+ /* 173 0xad '¡' */
17501750 0x18, /* 00011000 */
17511751 0x00, /* 00000000 */
17521752 0x18, /* 00011000 */
@@ -1756,7 +1756,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17561756 0x18, /* 00011000 */
17571757 0x00, /* 00000000 */
17581758
1759− /* 174 0xae '�' */
1759+ /* 174 0xae '«' */
17601760 0x00, /* 00000000 */
17611761 0x33, /* 00110011 */
17621762 0x66, /* 01100110 */
@@ -1766,7 +1766,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17661766 0x00, /* 00000000 */
17671767 0x00, /* 00000000 */
17681768
1769− /* 175 0xaf '�' */
1769+ /* 175 0xaf '»' */
17701770 0x00, /* 00000000 */
17711771 0xcc, /* 11001100 */
17721772 0x66, /* 01100110 */
@@ -1776,7 +1776,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17761776 0x00, /* 00000000 */
17771777 0x00, /* 00000000 */
17781778
1779− /* 176 0xb0 '�' */
1779+ /* 176 0xb0 '░' */
17801780 0x22, /* 00100010 */
17811781 0x88, /* 10001000 */
17821782 0x22, /* 00100010 */
@@ -1786,7 +1786,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17861786 0x22, /* 00100010 */
17871787 0x88, /* 10001000 */
17881788
1789− /* 177 0xb1 '�' */
1789+ /* 177 0xb1 '▒' */
17901790 0x55, /* 01010101 */
17911791 0xaa, /* 10101010 */
17921792 0x55, /* 01010101 */
@@ -1796,7 +1796,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
17961796 0x55, /* 01010101 */
17971797 0xaa, /* 10101010 */
17981798
1799− /* 178 0xb2 '�' */
1799+ /* 178 0xb2 '▓' */
18001800 0x77, /* 01110111 */
18011801 0xdd, /* 11011101 */
18021802 0x77, /* 01110111 */
@@ -1806,7 +1806,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18061806 0x77, /* 01110111 */
18071807 0xdd, /* 11011101 */
18081808
1809− /* 179 0xb3 '�' */
1809+ /* 179 0xb3 '│' */
18101810 0x18, /* 00011000 */
18111811 0x18, /* 00011000 */
18121812 0x18, /* 00011000 */
@@ -1816,7 +1816,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18161816 0x18, /* 00011000 */
18171817 0x18, /* 00011000 */
18181818
1819− /* 180 0xb4 '�' */
1819+ /* 180 0xb4 '┤' */
18201820 0x18, /* 00011000 */
18211821 0x18, /* 00011000 */
18221822 0x18, /* 00011000 */
@@ -1826,7 +1826,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18261826 0x18, /* 00011000 */
18271827 0x18, /* 00011000 */
18281828
1829− /* 181 0xb5 '�' */
1829+ /* 181 0xb5 '╡' */
18301830 0x18, /* 00011000 */
18311831 0x18, /* 00011000 */
18321832 0xf8, /* 11111000 */
@@ -1836,7 +1836,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18361836 0x18, /* 00011000 */
18371837 0x18, /* 00011000 */
18381838
1839− /* 182 0xb6 '�' */
1839+ /* 182 0xb6 '╢' */
18401840 0x36, /* 00110110 */
18411841 0x36, /* 00110110 */
18421842 0x36, /* 00110110 */
@@ -1846,7 +1846,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18461846 0x36, /* 00110110 */
18471847 0x36, /* 00110110 */
18481848
1849− /* 183 0xb7 '�' */
1849+ /* 183 0xb7 '╖' */
18501850 0x00, /* 00000000 */
18511851 0x00, /* 00000000 */
18521852 0x00, /* 00000000 */
@@ -1856,7 +1856,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18561856 0x36, /* 00110110 */
18571857 0x36, /* 00110110 */
18581858
1859− /* 184 0xb8 '�' */
1859+ /* 184 0xb8 '╕' */
18601860 0x00, /* 00000000 */
18611861 0x00, /* 00000000 */
18621862 0xf8, /* 11111000 */
@@ -1866,7 +1866,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18661866 0x18, /* 00011000 */
18671867 0x18, /* 00011000 */
18681868
1869− /* 185 0xb9 '�' */
1869+ /* 185 0xb9 '╣' */
18701870 0x36, /* 00110110 */
18711871 0x36, /* 00110110 */
18721872 0xf6, /* 11110110 */
@@ -1876,7 +1876,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18761876 0x36, /* 00110110 */
18771877 0x36, /* 00110110 */
18781878
1879− /* 186 0xba '�' */
1879+ /* 186 0xba '║' */
18801880 0x36, /* 00110110 */
18811881 0x36, /* 00110110 */
18821882 0x36, /* 00110110 */
@@ -1886,7 +1886,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18861886 0x36, /* 00110110 */
18871887 0x36, /* 00110110 */
18881888
1889− /* 187 0xbb '�' */
1889+ /* 187 0xbb '╗' */
18901890 0x00, /* 00000000 */
18911891 0x00, /* 00000000 */
18921892 0xfe, /* 11111110 */
@@ -1896,7 +1896,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
18961896 0x36, /* 00110110 */
18971897 0x36, /* 00110110 */
18981898
1899− /* 188 0xbc '�' */
1899+ /* 188 0xbc '╝' */
19001900 0x36, /* 00110110 */
19011901 0x36, /* 00110110 */
19021902 0xf6, /* 11110110 */
@@ -1906,7 +1906,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19061906 0x00, /* 00000000 */
19071907 0x00, /* 00000000 */
19081908
1909− /* 189 0xbd '�' */
1909+ /* 189 0xbd '╜' */
19101910 0x36, /* 00110110 */
19111911 0x36, /* 00110110 */
19121912 0x36, /* 00110110 */
@@ -1916,7 +1916,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19161916 0x00, /* 00000000 */
19171917 0x00, /* 00000000 */
19181918
1919− /* 190 0xbe '�' */
1919+ /* 190 0xbe '╛' */
19201920 0x18, /* 00011000 */
19211921 0x18, /* 00011000 */
19221922 0xf8, /* 11111000 */
@@ -1926,7 +1926,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19261926 0x00, /* 00000000 */
19271927 0x00, /* 00000000 */
19281928
1929− /* 191 0xbf '�' */
1929+ /* 191 0xbf '┐' */
19301930 0x00, /* 00000000 */
19311931 0x00, /* 00000000 */
19321932 0x00, /* 00000000 */
@@ -1936,7 +1936,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19361936 0x18, /* 00011000 */
19371937 0x18, /* 00011000 */
19381938
1939− /* 192 0xc0 '�' */
1939+ /* 192 0xc0 '└' */
19401940 0x18, /* 00011000 */
19411941 0x18, /* 00011000 */
19421942 0x18, /* 00011000 */
@@ -1946,7 +1946,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19461946 0x00, /* 00000000 */
19471947 0x00, /* 00000000 */
19481948
1949− /* 193 0xc1 '�' */
1949+ /* 193 0xc1 '┴' */
19501950 0x18, /* 00011000 */
19511951 0x18, /* 00011000 */
19521952 0x18, /* 00011000 */
@@ -1956,7 +1956,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19561956 0x00, /* 00000000 */
19571957 0x00, /* 00000000 */
19581958
1959− /* 194 0xc2 '�' */
1959+ /* 194 0xc2 '┬' */
19601960 0x00, /* 00000000 */
19611961 0x00, /* 00000000 */
19621962 0x00, /* 00000000 */
@@ -1966,7 +1966,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19661966 0x18, /* 00011000 */
19671967 0x18, /* 00011000 */
19681968
1969− /* 195 0xc3 '�' */
1969+ /* 195 0xc3 '├' */
19701970 0x18, /* 00011000 */
19711971 0x18, /* 00011000 */
19721972 0x18, /* 00011000 */
@@ -1976,7 +1976,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19761976 0x18, /* 00011000 */
19771977 0x18, /* 00011000 */
19781978
1979− /* 196 0xc4 '�' */
1979+ /* 196 0xc4 '─' */
19801980 0x00, /* 00000000 */
19811981 0x00, /* 00000000 */
19821982 0x00, /* 00000000 */
@@ -1986,7 +1986,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19861986 0x00, /* 00000000 */
19871987 0x00, /* 00000000 */
19881988
1989− /* 197 0xc5 '�' */
1989+ /* 197 0xc5 '┼' */
19901990 0x18, /* 00011000 */
19911991 0x18, /* 00011000 */
19921992 0x18, /* 00011000 */
@@ -1996,7 +1996,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
19961996 0x18, /* 00011000 */
19971997 0x18, /* 00011000 */
19981998
1999− /* 198 0xc6 '�' */
1999+ /* 198 0xc6 '╞' */
20002000 0x18, /* 00011000 */
20012001 0x18, /* 00011000 */
20022002 0x1f, /* 00011111 */
@@ -2006,7 +2006,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20062006 0x18, /* 00011000 */
20072007 0x18, /* 00011000 */
20082008
2009− /* 199 0xc7 '�' */
2009+ /* 199 0xc7 '╟' */
20102010 0x36, /* 00110110 */
20112011 0x36, /* 00110110 */
20122012 0x36, /* 00110110 */
@@ -2016,7 +2016,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20162016 0x36, /* 00110110 */
20172017 0x36, /* 00110110 */
20182018
2019− /* 200 0xc8 '�' */
2019+ /* 200 0xc8 '╚' */
20202020 0x36, /* 00110110 */
20212021 0x36, /* 00110110 */
20222022 0x37, /* 00110111 */
@@ -2026,7 +2026,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20262026 0x00, /* 00000000 */
20272027 0x00, /* 00000000 */
20282028
2029− /* 201 0xc9 '�' */
2029+ /* 201 0xc9 '╔' */
20302030 0x00, /* 00000000 */
20312031 0x00, /* 00000000 */
20322032 0x3f, /* 00111111 */
@@ -2036,7 +2036,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20362036 0x36, /* 00110110 */
20372037 0x36, /* 00110110 */
20382038
2039− /* 202 0xca '�' */
2039+ /* 202 0xca '╩' */
20402040 0x36, /* 00110110 */
20412041 0x36, /* 00110110 */
20422042 0xf7, /* 11110111 */
@@ -2046,7 +2046,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20462046 0x00, /* 00000000 */
20472047 0x00, /* 00000000 */
20482048
2049− /* 203 0xcb '�' */
2049+ /* 203 0xcb '╦' */
20502050 0x00, /* 00000000 */
20512051 0x00, /* 00000000 */
20522052 0xff, /* 11111111 */
@@ -2056,7 +2056,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20562056 0x36, /* 00110110 */
20572057 0x36, /* 00110110 */
20582058
2059− /* 204 0xcc '�' */
2059+ /* 204 0xcc '╠' */
20602060 0x36, /* 00110110 */
20612061 0x36, /* 00110110 */
20622062 0x37, /* 00110111 */
@@ -2066,7 +2066,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20662066 0x36, /* 00110110 */
20672067 0x36, /* 00110110 */
20682068
2069− /* 205 0xcd '�' */
2069+ /* 205 0xcd '═' */
20702070 0x00, /* 00000000 */
20712071 0x00, /* 00000000 */
20722072 0xff, /* 11111111 */
@@ -2076,7 +2076,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20762076 0x00, /* 00000000 */
20772077 0x00, /* 00000000 */
20782078
2079− /* 206 0xce '�' */
2079+ /* 206 0xce '╬' */
20802080 0x36, /* 00110110 */
20812081 0x36, /* 00110110 */
20822082 0xf7, /* 11110111 */
@@ -2086,7 +2086,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20862086 0x36, /* 00110110 */
20872087 0x36, /* 00110110 */
20882088
2089− /* 207 0xcf '�' */
2089+ /* 207 0xcf '╧' */
20902090 0x18, /* 00011000 */
20912091 0x18, /* 00011000 */
20922092 0xff, /* 11111111 */
@@ -2096,7 +2096,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
20962096 0x00, /* 00000000 */
20972097 0x00, /* 00000000 */
20982098
2099− /* 208 0xd0 '�' */
2099+ /* 208 0xd0 '╨' */
21002100 0x36, /* 00110110 */
21012101 0x36, /* 00110110 */
21022102 0x36, /* 00110110 */
@@ -2106,7 +2106,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21062106 0x00, /* 00000000 */
21072107 0x00, /* 00000000 */
21082108
2109− /* 209 0xd1 '�' */
2109+ /* 209 0xd1 '╤' */
21102110 0x00, /* 00000000 */
21112111 0x00, /* 00000000 */
21122112 0xff, /* 11111111 */
@@ -2116,7 +2116,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21162116 0x18, /* 00011000 */
21172117 0x18, /* 00011000 */
21182118
2119− /* 210 0xd2 '�' */
2119+ /* 210 0xd2 '╥' */
21202120 0x00, /* 00000000 */
21212121 0x00, /* 00000000 */
21222122 0x00, /* 00000000 */
@@ -2126,7 +2126,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21262126 0x36, /* 00110110 */
21272127 0x36, /* 00110110 */
21282128
2129− /* 211 0xd3 '�' */
2129+ /* 211 0xd3 '╙' */
21302130 0x36, /* 00110110 */
21312131 0x36, /* 00110110 */
21322132 0x36, /* 00110110 */
@@ -2136,7 +2136,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21362136 0x00, /* 00000000 */
21372137 0x00, /* 00000000 */
21382138
2139− /* 212 0xd4 '�' */
2139+ /* 212 0xd4 '╘' */
21402140 0x18, /* 00011000 */
21412141 0x18, /* 00011000 */
21422142 0x1f, /* 00011111 */
@@ -2146,7 +2146,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21462146 0x00, /* 00000000 */
21472147 0x00, /* 00000000 */
21482148
2149− /* 213 0xd5 '�' */
2149+ /* 213 0xd5 '╒' */
21502150 0x00, /* 00000000 */
21512151 0x00, /* 00000000 */
21522152 0x1f, /* 00011111 */
@@ -2156,7 +2156,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21562156 0x18, /* 00011000 */
21572157 0x18, /* 00011000 */
21582158
2159− /* 214 0xd6 '�' */
2159+ /* 214 0xd6 '╓' */
21602160 0x00, /* 00000000 */
21612161 0x00, /* 00000000 */
21622162 0x00, /* 00000000 */
@@ -2166,7 +2166,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21662166 0x36, /* 00110110 */
21672167 0x36, /* 00110110 */
21682168
2169− /* 215 0xd7 '�' */
2169+ /* 215 0xd7 '╫' */
21702170 0x36, /* 00110110 */
21712171 0x36, /* 00110110 */
21722172 0x36, /* 00110110 */
@@ -2176,7 +2176,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21762176 0x36, /* 00110110 */
21772177 0x36, /* 00110110 */
21782178
2179− /* 216 0xd8 '�' */
2179+ /* 216 0xd8 '╪' */
21802180 0x18, /* 00011000 */
21812181 0x18, /* 00011000 */
21822182 0xff, /* 11111111 */
@@ -2186,7 +2186,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21862186 0x18, /* 00011000 */
21872187 0x18, /* 00011000 */
21882188
2189− /* 217 0xd9 '�' */
2189+ /* 217 0xd9 '┘' */
21902190 0x18, /* 00011000 */
21912191 0x18, /* 00011000 */
21922192 0x18, /* 00011000 */
@@ -2196,7 +2196,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
21962196 0x00, /* 00000000 */
21972197 0x00, /* 00000000 */
21982198
2199− /* 218 0xda '�' */
2199+ /* 218 0xda '┌' */
22002200 0x00, /* 00000000 */
22012201 0x00, /* 00000000 */
22022202 0x00, /* 00000000 */
@@ -2206,7 +2206,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22062206 0x18, /* 00011000 */
22072207 0x18, /* 00011000 */
22082208
2209− /* 219 0xdb '�' */
2209+ /* 219 0xdb '█' */
22102210 0xff, /* 11111111 */
22112211 0xff, /* 11111111 */
22122212 0xff, /* 11111111 */
@@ -2216,7 +2216,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22162216 0xff, /* 11111111 */
22172217 0xff, /* 11111111 */
22182218
2219− /* 220 0xdc '�' */
2219+ /* 220 0xdc '▄' */
22202220 0x00, /* 00000000 */
22212221 0x00, /* 00000000 */
22222222 0x00, /* 00000000 */
@@ -2226,7 +2226,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22262226 0xff, /* 11111111 */
22272227 0xff, /* 11111111 */
22282228
2229− /* 221 0xdd '�' */
2229+ /* 221 0xdd '▌' */
22302230 0xf0, /* 11110000 */
22312231 0xf0, /* 11110000 */
22322232 0xf0, /* 11110000 */
@@ -2236,7 +2236,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22362236 0xf0, /* 11110000 */
22372237 0xf0, /* 11110000 */
22382238
2239− /* 222 0xde '�' */
2239+ /* 222 0xde '▐' */
22402240 0x0f, /* 00001111 */
22412241 0x0f, /* 00001111 */
22422242 0x0f, /* 00001111 */
@@ -2246,7 +2246,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22462246 0x0f, /* 00001111 */
22472247 0x0f, /* 00001111 */
22482248
2249− /* 223 0xdf '�' */
2249+ /* 223 0xdf '▀' */
22502250 0xff, /* 11111111 */
22512251 0xff, /* 11111111 */
22522252 0xff, /* 11111111 */
@@ -2256,7 +2256,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22562256 0x00, /* 00000000 */
22572257 0x00, /* 00000000 */
22582258
2259− /* 224 0xe0 '�' */
2259+ /* 224 0xe0 'α' */
22602260 0x00, /* 00000000 */
22612261 0x00, /* 00000000 */
22622262 0x76, /* 01110110 */
@@ -2266,7 +2266,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22662266 0x76, /* 01110110 */
22672267 0x00, /* 00000000 */
22682268
2269− /* 225 0xe1 '�' */
2269+ /* 225 0xe1 'ß' */
22702270 0x78, /* 01111000 */
22712271 0xcc, /* 11001100 */
22722272 0xcc, /* 11001100 */
@@ -2276,7 +2276,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22762276 0xcc, /* 11001100 */
22772277 0x00, /* 00000000 */
22782278
2279− /* 226 0xe2 '�' */
2279+ /* 226 0xe2 'Γ' */
22802280 0xfe, /* 11111110 */
22812281 0xc6, /* 11000110 */
22822282 0xc0, /* 11000000 */
@@ -2286,7 +2286,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22862286 0xc0, /* 11000000 */
22872287 0x00, /* 00000000 */
22882288
2289− /* 227 0xe3 '�' */
2289+ /* 227 0xe3 'π' */
22902290 0x00, /* 00000000 */
22912291 0x00, /* 00000000 */
22922292 0xfe, /* 11111110 */
@@ -2296,7 +2296,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
22962296 0x6c, /* 01101100 */
22972297 0x00, /* 00000000 */
22982298
2299− /* 228 0xe4 '�' */
2299+ /* 228 0xe4 'Σ' */
23002300 0xfe, /* 11111110 */
23012301 0xc6, /* 11000110 */
23022302 0x60, /* 01100000 */
@@ -2306,7 +2306,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23062306 0xfe, /* 11111110 */
23072307 0x00, /* 00000000 */
23082308
2309− /* 229 0xe5 '�' */
2309+ /* 229 0xe5 'σ' */
23102310 0x00, /* 00000000 */
23112311 0x00, /* 00000000 */
23122312 0x7e, /* 01111110 */
@@ -2316,7 +2316,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23162316 0x70, /* 01110000 */
23172317 0x00, /* 00000000 */
23182318
2319− /* 230 0xe6 '�' */
2319+ /* 230 0xe6 'µ' */
23202320 0x00, /* 00000000 */
23212321 0x00, /* 00000000 */
23222322 0x66, /* 01100110 */
@@ -2326,7 +2326,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23262326 0x7c, /* 01111100 */
23272327 0xc0, /* 11000000 */
23282328
2329− /* 231 0xe7 '�' */
2329+ /* 231 0xe7 'τ' */
23302330 0x00, /* 00000000 */
23312331 0x76, /* 01110110 */
23322332 0xdc, /* 11011100 */
@@ -2336,7 +2336,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23362336 0x18, /* 00011000 */
23372337 0x00, /* 00000000 */
23382338
2339− /* 232 0xe8 '�' */
2339+ /* 232 0xe8 'Φ' */
23402340 0x7e, /* 01111110 */
23412341 0x18, /* 00011000 */
23422342 0x3c, /* 00111100 */
@@ -2346,7 +2346,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23462346 0x18, /* 00011000 */
23472347 0x7e, /* 01111110 */
23482348
2349− /* 233 0xe9 '�' */
2349+ /* 233 0xe9 'Θ' */
23502350 0x38, /* 00111000 */
23512351 0x6c, /* 01101100 */
23522352 0xc6, /* 11000110 */
@@ -2356,7 +2356,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23562356 0x38, /* 00111000 */
23572357 0x00, /* 00000000 */
23582358
2359− /* 234 0xea '�' */
2359+ /* 234 0xea 'Ω' */
23602360 0x38, /* 00111000 */
23612361 0x6c, /* 01101100 */
23622362 0xc6, /* 11000110 */
@@ -2366,7 +2366,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23662366 0xee, /* 11101110 */
23672367 0x00, /* 00000000 */
23682368
2369− /* 235 0xeb '�' */
2369+ /* 235 0xeb 'δ' */
23702370 0x0e, /* 00001110 */
23712371 0x18, /* 00011000 */
23722372 0x0c, /* 00001100 */
@@ -2376,7 +2376,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23762376 0x3c, /* 00111100 */
23772377 0x00, /* 00000000 */
23782378
2379− /* 236 0xec '�' */
2379+ /* 236 0xec '∞' */
23802380 0x00, /* 00000000 */
23812381 0x00, /* 00000000 */
23822382 0x7e, /* 01111110 */
@@ -2386,7 +2386,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23862386 0x00, /* 00000000 */
23872387 0x00, /* 00000000 */
23882388
2389− /* 237 0xed '�' */
2389+ /* 237 0xed 'φ' */
23902390 0x06, /* 00000110 */
23912391 0x0c, /* 00001100 */
23922392 0x7e, /* 01111110 */
@@ -2396,7 +2396,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
23962396 0x60, /* 01100000 */
23972397 0xc0, /* 11000000 */
23982398
2399− /* 238 0xee '�' */
2399+ /* 238 0xee 'ε' */
24002400 0x1e, /* 00011110 */
24012401 0x30, /* 00110000 */
24022402 0x60, /* 01100000 */
@@ -2406,7 +2406,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24062406 0x1e, /* 00011110 */
24072407 0x00, /* 00000000 */
24082408
2409− /* 239 0xef '�' */
2409+ /* 239 0xef '∩' */
24102410 0x00, /* 00000000 */
24112411 0x7c, /* 01111100 */
24122412 0xc6, /* 11000110 */
@@ -2416,7 +2416,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24162416 0xc6, /* 11000110 */
24172417 0x00, /* 00000000 */
24182418
2419− /* 240 0xf0 '�' */
2419+ /* 240 0xf0 '≡' */
24202420 0x00, /* 00000000 */
24212421 0xfe, /* 11111110 */
24222422 0x00, /* 00000000 */
@@ -2426,7 +2426,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24262426 0x00, /* 00000000 */
24272427 0x00, /* 00000000 */
24282428
2429− /* 241 0xf1 '�' */
2429+ /* 241 0xf1 '±' */
24302430 0x18, /* 00011000 */
24312431 0x18, /* 00011000 */
24322432 0x7e, /* 01111110 */
@@ -2436,7 +2436,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24362436 0x7e, /* 01111110 */
24372437 0x00, /* 00000000 */
24382438
2439− /* 242 0xf2 '�' */
2439+ /* 242 0xf2 '≥' */
24402440 0x30, /* 00110000 */
24412441 0x18, /* 00011000 */
24422442 0x0c, /* 00001100 */
@@ -2446,7 +2446,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24462446 0x7e, /* 01111110 */
24472447 0x00, /* 00000000 */
24482448
2449− /* 243 0xf3 '�' */
2449+ /* 243 0xf3 '≤' */
24502450 0x0c, /* 00001100 */
24512451 0x18, /* 00011000 */
24522452 0x30, /* 00110000 */
@@ -2456,7 +2456,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24562456 0x7e, /* 01111110 */
24572457 0x00, /* 00000000 */
24582458
2459− /* 244 0xf4 '�' */
2459+ /* 244 0xf4 '⌠' */
24602460 0x0e, /* 00001110 */
24612461 0x1b, /* 00011011 */
24622462 0x1b, /* 00011011 */
@@ -2466,7 +2466,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24662466 0x18, /* 00011000 */
24672467 0x18, /* 00011000 */
24682468
2469− /* 245 0xf5 '�' */
2469+ /* 245 0xf5 '⌡' */
24702470 0x18, /* 00011000 */
24712471 0x18, /* 00011000 */
24722472 0x18, /* 00011000 */
@@ -2476,7 +2476,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24762476 0xd8, /* 11011000 */
24772477 0x70, /* 01110000 */
24782478
2479− /* 246 0xf6 '�' */
2479+ /* 246 0xf6 '÷' */
24802480 0x00, /* 00000000 */
24812481 0x18, /* 00011000 */
24822482 0x00, /* 00000000 */
@@ -2486,7 +2486,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24862486 0x00, /* 00000000 */
24872487 0x00, /* 00000000 */
24882488
2489− /* 247 0xf7 '�' */
2489+ /* 247 0xf7 '≈' */
24902490 0x00, /* 00000000 */
24912491 0x76, /* 01110110 */
24922492 0xdc, /* 11011100 */
@@ -2496,7 +2496,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
24962496 0x00, /* 00000000 */
24972497 0x00, /* 00000000 */
24982498
2499− /* 248 0xf8 '�' */
2499+ /* 248 0xf8 '°' */
25002500 0x38, /* 00111000 */
25012501 0x6c, /* 01101100 */
25022502 0x6c, /* 01101100 */
@@ -2506,7 +2506,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
25062506 0x00, /* 00000000 */
25072507 0x00, /* 00000000 */
25082508
2509− /* 249 0xf9 '�' */
2509+ /* 249 0xf9 '·' */
25102510 0x00, /* 00000000 */
25112511 0x00, /* 00000000 */
25122512 0x00, /* 00000000 */
@@ -2516,7 +2516,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
25162516 0x00, /* 00000000 */
25172517 0x00, /* 00000000 */
25182518
2519− /* 250 0xfa '�' */
2519+ /* 250 0xfa '•' */
25202520 0x00, /* 00000000 */
25212521 0x00, /* 00000000 */
25222522 0x00, /* 00000000 */
@@ -2526,7 +2526,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
25262526 0x00, /* 00000000 */
25272527 0x00, /* 00000000 */
25282528
2529− /* 251 0xfb '�' */
2529+ /* 251 0xfb '√' */
25302530 0x0f, /* 00001111 */
25312531 0x0c, /* 00001100 */
25322532 0x0c, /* 00001100 */
@@ -2536,7 +2536,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
25362536 0x3c, /* 00111100 */
25372537 0x1c, /* 00011100 */
25382538
2539− /* 252 0xfc '�' */
2539+ /* 252 0xfc 'ⁿ' */
25402540 0x6c, /* 01101100 */
25412541 0x36, /* 00110110 */
25422542 0x36, /* 00110110 */
@@ -2546,7 +2546,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
25462546 0x00, /* 00000000 */
25472547 0x00, /* 00000000 */
25482548
2549− /* 253 0xfd '�' */
2549+ /* 253 0xfd '²' */
25502550 0x78, /* 01111000 */
25512551 0x0c, /* 00001100 */
25522552 0x18, /* 00011000 */
@@ -2556,7 +2556,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
25562556 0x00, /* 00000000 */
25572557 0x00, /* 00000000 */
25582558
2559− /* 254 0xfe '�' */
2559+ /* 254 0xfe '■' */
25602560 0x00, /* 00000000 */
25612561 0x00, /* 00000000 */
25622562 0x3c, /* 00111100 */
@@ -2566,7 +2566,7 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { · 3 unmodified lines
25662566 0x00, /* 00000000 */
25672567 0x00, /* 00000000 */
25682568
2569− /* 255 0xff '�' */
2569+ /* 255 0xff ' ' */
25702570 0x00, /* 00000000 */
25712571 0x00, /* 00000000 */
25722572 0x00, /* 00000000 */
mm/gup.c+2−2
@@ -497,7 +497,7 @@ static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma, · 496 unmodified lines
497497 unsigned long address, unsigned int *flags, int *nonblocking)
498498 {
499499 unsigned int fault_flags = 0;
500− int ret;
500+ vm_fault_t ret;
501501
502502 /* mlock all present pages, but do not fault in new pages */
503503 if ((*flags & (FOLL_POPULATE | FOLL_MLOCK)) == FOLL_MLOCK)
@@ -818,7 +818,7 @@ int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm, · 314 unmodified lines
818818 bool *unlocked)
819819 {
820820 struct vm_area_struct *vma;
821− int ret, major = 0;
821+ vm_fault_t ret, major = 0;
822822
823823 if (unlocked)
824824 fault_flags |= FAULT_FLAG_ALLOW_RETRY;
mm/huge_memory.c+16−15
@@ -541,14 +541,14 @@ unsigned long thp_get_unmapped_area(struct file *filp, unsigned long addr, · 540 unmodified lines
541541 }
542542 EXPORT_SYMBOL_GPL(thp_get_unmapped_area);
543543
544−static int __do_huge_pmd_anonymous_page(struct vm_fault *vmf, struct page *page,
545− gfp_t gfp)
544+static vm_fault_t __do_huge_pmd_anonymous_page(struct vm_fault *vmf,
545+ struct page *page, gfp_t gfp)
546546 {
547547 struct vm_area_struct *vma = vmf->vma;
548548 struct mem_cgroup *memcg;
549549 pgtable_t pgtable;
550550 unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
551− int ret = 0;
551+ vm_fault_t ret = 0;
552552
553553 VM_BUG_ON_PAGE(!PageCompound(page), page);
554554
@@ -584,15 +584,15 @@ static int __do_huge_pmd_anonymous_page(struct vm_fault *vmf, struct page *page, · 29 unmodified lines
584584
585585 /* Deliver the page fault to userland */
586586 if (userfaultfd_missing(vma)) {
587− int ret;
587+ vm_fault_t ret2;
588588
589589 spin_unlock(vmf->ptl);
590590 mem_cgroup_cancel_charge(page, memcg, true);
591591 put_page(page);
592592 pte_free(vma->vm_mm, pgtable);
593− ret = handle_userfault(vmf, VM_UFFD_MISSING);
594− VM_BUG_ON(ret & VM_FAULT_FALLBACK);
595− return ret;
593+ ret2 = handle_userfault(vmf, VM_UFFD_MISSING);
594+ VM_BUG_ON(ret2 & VM_FAULT_FALLBACK);
595+ return ret2;
596596 }
597597
598598 entry = mk_huge_pmd(page, vma->vm_page_prot);
@@ -663,7 +663,7 @@ static bool set_huge_zero_page(pgtable_t pgtable, struct mm_struct *mm, · 64 unmodified lines
663663 return true;
664664 }
665665
666−int do_huge_pmd_anonymous_page(struct vm_fault *vmf)
666+vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf)
667667 {
668668 struct vm_area_struct *vma = vmf->vma;
669669 gfp_t gfp;
@@ -682,7 +682,7 @@ int do_huge_pmd_anonymous_page(struct vm_fault *vmf) · 12 unmodified lines
682682 pgtable_t pgtable;
683683 struct page *zero_page;
684684 bool set;
685− int ret;
685+ vm_fault_t ret;
686686 pgtable = pte_alloc_one(vma->vm_mm, haddr);
687687 if (unlikely(!pgtable))
688688 return VM_FAULT_OOM;
@@ -1118,15 +1118,16 @@ unlock: · 429 unmodified lines
11181118 spin_unlock(vmf->ptl);
11191119 }
11201120
1121−static int do_huge_pmd_wp_page_fallback(struct vm_fault *vmf, pmd_t orig_pmd,
1122− struct page *page)
1121+static vm_fault_t do_huge_pmd_wp_page_fallback(struct vm_fault *vmf,
1122+ pmd_t orig_pmd, struct page *page)
11231123 {
11241124 struct vm_area_struct *vma = vmf->vma;
11251125 unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
11261126 struct mem_cgroup *memcg;
11271127 pgtable_t pgtable;
11281128 pmd_t _pmd;
1129− int ret = 0, i;
1129+ int i;
1130+ vm_fault_t ret = 0;
11301131 struct page **pages;
11311132 unsigned long mmun_start; /* For mmu_notifiers */
11321133 unsigned long mmun_end; /* For mmu_notifiers */
@@ -1236,7 +1237,7 @@ out_free_pages: · 103 unmodified lines
12361237 goto out;
12371238 }
12381239
1239−int do_huge_pmd_wp_page(struct vm_fault *vmf, pmd_t orig_pmd)
1240+vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf, pmd_t orig_pmd)
12401241 {
12411242 struct vm_area_struct *vma = vmf->vma;
12421243 struct page *page = NULL, *new_page;
@@ -1245,7 +1246,7 @@ int do_huge_pmd_wp_page(struct vm_fault *vmf, pmd_t orig_pmd) · 2 unmodified lines
12451246 unsigned long mmun_start; /* For mmu_notifiers */
12461247 unsigned long mmun_end; /* For mmu_notifiers */
12471248 gfp_t huge_gfp; /* for allocation and charge */
1248− int ret = 0;
1249+ vm_fault_t ret = 0;
12491250
12501251 vmf->ptl = pmd_lockptr(vma->vm_mm, vmf->pmd);
12511252 VM_BUG_ON_VMA(!vma->anon_vma, vma);
@@ -1457,7 +1458,7 @@ out: · 205 unmodified lines
14571458 }
14581459
14591460 /* NUMA hinting page fault entry point for trans huge pmds */
1460−int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
1461+vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
14611462 {
14621463 struct vm_area_struct *vma = vmf->vma;
14631464 struct anon_vma *anon_vma = NULL;
mm/hugetlb.c+18−22
@@ -1479,22 +1479,20 @@ static int free_pool_huge_page(struct hstate *h, nodemask_t *nodes_allowed, · 1478 unmodified lines
14791479 /*
14801480 * Dissolve a given free hugepage into free buddy pages. This function does
14811481 * nothing for in-use (including surplus) hugepages. Returns -EBUSY if the
1482− * number of free hugepages would be reduced below the number of reserved
1483− * hugepages.
1482+ * dissolution fails because a give page is not a free hugepage, or because
1483+ * free hugepages are fully reserved.
14841484 */
14851485 int dissolve_free_huge_page(struct page *page)
14861486 {
1487− int rc = 0;
1487+ int rc = -EBUSY;
14881488
14891489 spin_lock(&hugetlb_lock);
14901490 if (PageHuge(page) && !page_count(page)) {
14911491 struct page *head = compound_head(page);
14921492 struct hstate *h = page_hstate(head);
14931493 int nid = page_to_nid(head);
1494− if (h->free_huge_pages - h->resv_huge_pages == 0) {
1495− rc = -EBUSY;
1494+ if (h->free_huge_pages - h->resv_huge_pages == 0)
14961495 goto out;
1497− }
14981496 /*
14991497 * Move PageHWPoison flag from head page to the raw error page,
15001498 * which makes any subpages rather than the error page reusable.
@@ -1508,6 +1506,7 @@ int dissolve_free_huge_page(struct page *page) · 7 unmodified lines
15081506 h->free_huge_pages_node[nid]--;
15091507 h->max_huge_pages--;
15101508 update_and_free_page(h, head);
1509+ rc = 0;
15111510 }
15121511 out:
15131512 spin_unlock(&hugetlb_lock);
@@ -3502,14 +3501,15 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma, · 1988 unmodified lines
35023501 * cannot race with other handlers or page migration.
35033502 * Keep the pte_same checks anyway to make transition from the mutex easier.
35043503 */
3505−static int hugetlb_cow(struct mm_struct *mm, struct vm_area_struct *vma,
3504+static vm_fault_t hugetlb_cow(struct mm_struct *mm, struct vm_area_struct *vma,
35063505 unsigned long address, pte_t *ptep,
35073506 struct page *pagecache_page, spinlock_t *ptl)
35083507 {
35093508 pte_t pte;
35103509 struct hstate *h = hstate_vma(vma);
35113510 struct page *old_page, *new_page;
3512− int ret = 0, outside_reserve = 0;
3511+ int outside_reserve = 0;
3512+ vm_fault_t ret = 0;
35133513 unsigned long mmun_start; /* For mmu_notifiers */
35143514 unsigned long mmun_end; /* For mmu_notifiers */
35153515 unsigned long haddr = address & huge_page_mask(h);
@@ -3573,8 +3573,7 @@ retry_avoidcopy: · 57 unmodified lines
35733573 return 0;
35743574 }
35753575
3576− ret = (PTR_ERR(new_page) == -ENOMEM) ?
3577− VM_FAULT_OOM : VM_FAULT_SIGBUS;
3576+ ret = vmf_error(PTR_ERR(new_page));
35783577 goto out_release_old;
35793578 }
35803579
@@ -3677,12 +3676,13 @@ int huge_add_to_page_cache(struct page *page, struct address_space *mapping, · 96 unmodified lines
36773676 return 0;
36783677 }
36793678
3680−static int hugetlb_no_page(struct mm_struct *mm, struct vm_area_struct *vma,
3681− struct address_space *mapping, pgoff_t idx,
3682− unsigned long address, pte_t *ptep, unsigned int flags)
3679+static vm_fault_t hugetlb_no_page(struct mm_struct *mm,
3680+ struct vm_area_struct *vma,
3681+ struct address_space *mapping, pgoff_t idx,
3682+ unsigned long address, pte_t *ptep, unsigned int flags)
36833683 {
36843684 struct hstate *h = hstate_vma(vma);
3685− int ret = VM_FAULT_SIGBUS;
3685+ vm_fault_t ret = VM_FAULT_SIGBUS;
36863686 int anon_rmap = 0;
36873687 unsigned long size;
36883688 struct page *page;
@@ -3745,11 +3745,7 @@ retry: · 56 unmodified lines
37453745
37463746 page = alloc_huge_page(vma, haddr, 0);
37473747 if (IS_ERR(page)) {
3748− ret = PTR_ERR(page);
3749− if (ret == -ENOMEM)
3750− ret = VM_FAULT_OOM;
3751− else
3752− ret = VM_FAULT_SIGBUS;
3748+ ret = vmf_error(PTR_ERR(page));
37533749 goto out;
37543750 }
37553751 clear_huge_page(page, address, pages_per_huge_page(h));
@@ -3873,12 +3869,12 @@ u32 hugetlb_fault_mutex_hash(struct hstate *h, struct mm_struct *mm, · 117 unmodified lines
38733869 }
38743870 #endif
38753871
3876−int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
3872+vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
38773873 unsigned long address, unsigned int flags)
38783874 {
38793875 pte_t *ptep, entry;
38803876 spinlock_t *ptl;
3881− int ret;
3877+ vm_fault_t ret;
38823878 u32 hash;
38833879 pgoff_t idx;
38843880 struct page *page = NULL;
@@ -4208,7 +4204,7 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, · 323 unmodified lines
42084204 if (absent || is_swap_pte(huge_ptep_get(pte)) ||
42094205 ((flags & FOLL_WRITE) &&
42104206 !huge_pte_write(huge_ptep_get(pte)))) {
4211− int ret;
4207+ vm_fault_t ret;
42124208 unsigned int fault_flags = 0;
42134209
42144210 if (pte)
mm/internal.h+1−1
@@ -38,7 +38,7 @@ · 37 unmodified lines
3838
3939 void page_writeback_init(void);
4040
41−int do_swap_page(struct vm_fault *vmf);
41+vm_fault_t do_swap_page(struct vm_fault *vmf);
4242
4343 void free_pgtables(struct mmu_gather *tlb, struct vm_area_struct *start_vma,
4444 unsigned long floor, unsigned long ceiling);
mm/khugepaged.c+2−1
@@ -880,7 +880,8 @@ static bool __collapse_huge_page_swapin(struct mm_struct *mm, · 879 unmodified lines
880880 unsigned long address, pmd_t *pmd,
881881 int referenced)
882882 {
883− int swapped_in = 0, ret = 0;
883+ int swapped_in = 0;
884+ vm_fault_t ret = 0;
884885 struct vm_fault vmf = {
885886 .vma = vma,
886887 .address = address,
mm/memory-failure.c+35−9
@@ -57,6 +57,7 @@ · 56 unmodified lines
5757 #include <linux/mm_inline.h>
5858 #include <linux/kfifo.h>
5959 #include <linux/ratelimit.h>
60+#include <linux/page-isolation.h>
6061 #include "internal.h"
6162 #include "ras/ras_event.h"
6263
@@ -1598,8 +1599,18 @@ static int soft_offline_huge_page(struct page *page, int flags) · 1535 unmodified lines
15981599 if (ret > 0)
15991600 ret = -EIO;
16001601 } else {
1601− if (PageHuge(page))
1602− dissolve_free_huge_page(page);
1602+ /*
1603+ * We set PG_hwpoison only when the migration source hugepage
1604+ * was successfully dissolved, because otherwise hwpoisoned
1605+ * hugepage remains on free hugepage list, then userspace will
1606+ * find it as SIGBUS by allocation failure. That's not expected
1607+ * in soft-offlining.
1608+ */
1609+ ret = dissolve_free_huge_page(page);
1610+ if (!ret) {
1611+ if (set_hwpoison_free_buddy_page(page))
1612+ num_poisoned_pages_inc();
1613+ }
16031614 }
16041615 return ret;
16051616 }
@@ -1687,6 +1698,7 @@ static int __soft_offline_page(struct page *page, int flags) · 81 unmodified lines
16871698 static int soft_offline_in_use_page(struct page *page, int flags)
16881699 {
16891700 int ret;
1701+ int mt;
16901702 struct page *hpage = compound_head(page);
16911703
16921704 if (!PageHuge(page) && PageTransHuge(hpage)) {
@@ -1705,23 +1717,37 @@ static int soft_offline_in_use_page(struct page *page, int flags) · 12 unmodified lines
17051717 put_hwpoison_page(hpage);
17061718 }
17071719
1720+ /*
1721+ * Setting MIGRATE_ISOLATE here ensures that the page will be linked
1722+ * to free list immediately (not via pcplist) when released after
1723+ * successful page migration. Otherwise we can't guarantee that the
1724+ * page is really free after put_page() returns, so
1725+ * set_hwpoison_free_buddy_page() highly likely fails.
1726+ */
1727+ mt = get_pageblock_migratetype(page);
1728+ set_pageblock_migratetype(page, MIGRATE_ISOLATE);
17081729 if (PageHuge(page))
17091730 ret = soft_offline_huge_page(page, flags);
17101731 else
17111732 ret = __soft_offline_page(page, flags);
1712−
1733+ set_pageblock_migratetype(page, mt);
17131734 return ret;
17141735 }
17151736
1716−static void soft_offline_free_page(struct page *page)
1737+static int soft_offline_free_page(struct page *page)
17171738 {
1739+ int rc = 0;
17181740 struct page *head = compound_head(page);
17191741
1720− if (!TestSetPageHWPoison(head)) {
1721− num_poisoned_pages_inc();
1722− if (PageHuge(head))
1723− dissolve_free_huge_page(page);
1742+ if (PageHuge(head))
1743+ rc = dissolve_free_huge_page(page);
1744+ if (!rc) {
1745+ if (set_hwpoison_free_buddy_page(page))
1746+ num_poisoned_pages_inc();
1747+ else
1748+ rc = -EBUSY;
17241749 }
1750+ return rc;
17251751 }
17261752
17271753 /**
@@ -1765,7 +1791,7 @@ int soft_offline_page(struct page *page, int flags) · 37 unmodified lines
17651791 if (ret > 0)
17661792 ret = soft_offline_in_use_page(page, flags);
17671793 else if (ret == 0)
1768− soft_offline_free_page(page);
1794+ ret = soft_offline_free_page(page);
17691795
17701796 return ret;
17711797 }
mm/memory.c+46−44
@@ -2377,9 +2377,9 @@ static gfp_t __get_fault_gfp_mask(struct vm_area_struct *vma) · 2376 unmodified lines
23772377 *
23782378 * We do this without the lock held, so that it can sleep if it needs to.
23792379 */
2380−static int do_page_mkwrite(struct vm_fault *vmf)
2380+static vm_fault_t do_page_mkwrite(struct vm_fault *vmf)
23812381 {
2382− int ret;
2382+ vm_fault_t ret;
23832383 struct page *page = vmf->page;
23842384 unsigned int old_flags = vmf->flags;
23852385
@@ -2483,7 +2483,7 @@ static inline void wp_page_reuse(struct vm_fault *vmf) · 97 unmodified lines
24832483 * held to the old page, as well as updating the rmap.
24842484 * - In any case, unlock the PTL and drop the reference we took to the old page.
24852485 */
2486−static int wp_page_copy(struct vm_fault *vmf)
2486+static vm_fault_t wp_page_copy(struct vm_fault *vmf)
24872487 {
24882488 struct vm_area_struct *vma = vmf->vma;
24892489 struct mm_struct *mm = vma->vm_mm;
@@ -2631,7 +2631,7 @@ oom: · 141 unmodified lines
26312631 * The function expects the page to be locked or other protection against
26322632 * concurrent faults / writeback (such as DAX radix tree locks).
26332633 */
2634−int finish_mkwrite_fault(struct vm_fault *vmf)
2634+vm_fault_t finish_mkwrite_fault(struct vm_fault *vmf)
26352635 {
26362636 WARN_ON_ONCE(!(vmf->vma->vm_flags & VM_SHARED));
26372637 vmf->pte = pte_offset_map_lock(vmf->vma->vm_mm, vmf->pmd, vmf->address,
@@ -2652,12 +2652,12 @@ int finish_mkwrite_fault(struct vm_fault *vmf) · 14 unmodified lines
26522652 * Handle write page faults for VM_MIXEDMAP or VM_PFNMAP for a VM_SHARED
26532653 * mapping
26542654 */
2655−static int wp_pfn_shared(struct vm_fault *vmf)
2655+static vm_fault_t wp_pfn_shared(struct vm_fault *vmf)
26562656 {
26572657 struct vm_area_struct *vma = vmf->vma;
26582658
26592659 if (vma->vm_ops && vma->vm_ops->pfn_mkwrite) {
2660− int ret;
2660+ vm_fault_t ret;
26612661
26622662 pte_unmap_unlock(vmf->pte, vmf->ptl);
26632663 vmf->flags |= FAULT_FLAG_MKWRITE;
@@ -2670,7 +2670,7 @@ static int wp_pfn_shared(struct vm_fault *vmf) · 6 unmodified lines
26702670 return VM_FAULT_WRITE;
26712671 }
26722672
2673−static int wp_page_shared(struct vm_fault *vmf)
2673+static vm_fault_t wp_page_shared(struct vm_fault *vmf)
26742674 __releases(vmf->ptl)
26752675 {
26762676 struct vm_area_struct *vma = vmf->vma;
@@ -2678,7 +2678,7 @@ static int wp_page_shared(struct vm_fault *vmf) · 1 unmodified line
26782678 get_page(vmf->page);
26792679
26802680 if (vma->vm_ops && vma->vm_ops->page_mkwrite) {
2681− int tmp;
2681+ vm_fault_t tmp;
26822682
26832683 pte_unmap_unlock(vmf->pte, vmf->ptl);
26842684 tmp = do_page_mkwrite(vmf);
@@ -2721,7 +2721,7 @@ static int wp_page_shared(struct vm_fault *vmf) · 36 unmodified lines
27212721 * but allow concurrent faults), with pte both mapped and locked.
27222722 * We return with mmap_sem still held, but pte unmapped and unlocked.
27232723 */
2724−static int do_wp_page(struct vm_fault *vmf)
2724+static vm_fault_t do_wp_page(struct vm_fault *vmf)
27252725 __releases(vmf->ptl)
27262726 {
27272727 struct vm_area_struct *vma = vmf->vma;
@@ -2897,7 +2897,7 @@ EXPORT_SYMBOL(unmap_mapping_range); · 169 unmodified lines
28972897 * We return with the mmap_sem locked or unlocked in the same cases
28982898 * as does filemap_fault().
28992899 */
2900−int do_swap_page(struct vm_fault *vmf)
2900+vm_fault_t do_swap_page(struct vm_fault *vmf)
29012901 {
29022902 struct vm_area_struct *vma = vmf->vma;
29032903 struct page *page = NULL, *swapcache;
@@ -2906,7 +2906,7 @@ int do_swap_page(struct vm_fault *vmf) · 2 unmodified lines
29062906 pte_t pte;
29072907 int locked;
29082908 int exclusive = 0;
2909− int ret = 0;
2909+ vm_fault_t ret = 0;
29102910
29112911 if (!pte_unmap_same(vma->vm_mm, vmf->pmd, vmf->pte, vmf->orig_pte))
29122912 goto out;
@@ -3117,12 +3117,12 @@ out_release: · 204 unmodified lines
31173117 * but allow concurrent faults), and pte mapped but not yet locked.
31183118 * We return with mmap_sem still held, but pte unmapped and unlocked.
31193119 */
3120−static int do_anonymous_page(struct vm_fault *vmf)
3120+static vm_fault_t do_anonymous_page(struct vm_fault *vmf)
31213121 {
31223122 struct vm_area_struct *vma = vmf->vma;
31233123 struct mem_cgroup *memcg;
31243124 struct page *page;
3125− int ret = 0;
3125+ vm_fault_t ret = 0;
31263126 pte_t entry;
31273127
31283128 /* File mapping without ->vm_ops ? */
@@ -3232,10 +3232,10 @@ oom: · 103 unmodified lines
32323232 * released depending on flags and vma->vm_ops->fault() return value.
32333233 * See filemap_fault() and __lock_page_retry().
32343234 */
3235−static int __do_fault(struct vm_fault *vmf)
3235+static vm_fault_t __do_fault(struct vm_fault *vmf)
32363236 {
32373237 struct vm_area_struct *vma = vmf->vma;
3238− int ret;
3238+ vm_fault_t ret;
32393239
32403240 ret = vma->vm_ops->fault(vmf);
32413241 if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY |
@@ -3269,7 +3269,7 @@ static int pmd_devmap_trans_unstable(pmd_t *pmd) · 27 unmodified lines
32693269 return pmd_devmap(*pmd) || pmd_trans_unstable(pmd);
32703270 }
32713271
3272−static int pte_alloc_one_map(struct vm_fault *vmf)
3272+static vm_fault_t pte_alloc_one_map(struct vm_fault *vmf)
32733273 {
32743274 struct vm_area_struct *vma = vmf->vma;
32753275
@@ -3345,13 +3345,14 @@ static void deposit_prealloc_pte(struct vm_fault *vmf) · 69 unmodified lines
33453345 vmf->prealloc_pte = NULL;
33463346 }
33473347
3348−static int do_set_pmd(struct vm_fault *vmf, struct page *page)
3348+static vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page)
33493349 {
33503350 struct vm_area_struct *vma = vmf->vma;
33513351 bool write = vmf->flags & FAULT_FLAG_WRITE;
33523352 unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
33533353 pmd_t entry;
3354− int i, ret;
3354+ int i;
3355+ vm_fault_t ret;
33553356
33563357 if (!transhuge_vma_suitable(vma, haddr))
33573358 return VM_FAULT_FALLBACK;
@@ -3401,7 +3402,7 @@ out: · 43 unmodified lines
34013402 return ret;
34023403 }
34033404 #else
3404−static int do_set_pmd(struct vm_fault *vmf, struct page *page)
3405+static vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page)
34053406 {
34063407 BUILD_BUG();
34073408 return 0;
@@ -3422,13 +3423,13 @@ static int do_set_pmd(struct vm_fault *vmf, struct page *page) · 14 unmodified lines
34223423 * Target users are page handler itself and implementations of
34233424 * vm_ops->map_pages.
34243425 */
3425−int alloc_set_pte(struct vm_fault *vmf, struct mem_cgroup *memcg,
3426+vm_fault_t alloc_set_pte(struct vm_fault *vmf, struct mem_cgroup *memcg,
34263427 struct page *page)
34273428 {
34283429 struct vm_area_struct *vma = vmf->vma;
34293430 bool write = vmf->flags & FAULT_FLAG_WRITE;
34303431 pte_t entry;
3431− int ret;
3432+ vm_fault_t ret;
34323433
34333434 if (pmd_none(*vmf->pmd) && PageTransCompound(page) &&
34343435 IS_ENABLED(CONFIG_TRANSPARENT_HUGE_PAGECACHE)) {
@@ -3487,10 +3488,10 @@ int alloc_set_pte(struct vm_fault *vmf, struct mem_cgroup *memcg, · 52 unmodified lines
34873488 * The function expects the page to be locked and on success it consumes a
34883489 * reference of a page being mapped (for the PTE which maps it).
34893490 */
3490−int finish_fault(struct vm_fault *vmf)
3491+vm_fault_t finish_fault(struct vm_fault *vmf)
34913492 {
34923493 struct page *page;
3493− int ret = 0;
3494+ vm_fault_t ret = 0;
34943495
34953496 /* Did we COW the page? */
34963497 if ((vmf->flags & FAULT_FLAG_WRITE) &&
@@ -3576,12 +3577,13 @@ late_initcall(fault_around_debugfs); · 79 unmodified lines
35763577 * (and therefore to page order). This way it's easier to guarantee
35773578 * that we don't cross page table boundaries.
35783579 */
3579−static int do_fault_around(struct vm_fault *vmf)
3580+static vm_fault_t do_fault_around(struct vm_fault *vmf)
35803581 {
35813582 unsigned long address = vmf->address, nr_pages, mask;
35823583 pgoff_t start_pgoff = vmf->pgoff;
35833584 pgoff_t end_pgoff;
3584− int off, ret = 0;
3585+ int off;
3586+ vm_fault_t ret = 0;
35853587
35863588 nr_pages = READ_ONCE(fault_around_bytes) >> PAGE_SHIFT;
35873589 mask = ~(nr_pages * PAGE_SIZE - 1) & PAGE_MASK;
@@ -3631,10 +3633,10 @@ out: · 43 unmodified lines
36313633 return ret;
36323634 }
36333635
3634−static int do_read_fault(struct vm_fault *vmf)
3636+static vm_fault_t do_read_fault(struct vm_fault *vmf)
36353637 {
36363638 struct vm_area_struct *vma = vmf->vma;
3637− int ret = 0;
3639+ vm_fault_t ret = 0;
36383640
36393641 /*
36403642 * Let's call ->map_pages() first and use ->fault() as fallback
@@ -3658,10 +3660,10 @@ static int do_read_fault(struct vm_fault *vmf) · 17 unmodified lines
36583660 return ret;
36593661 }
36603662
3661−static int do_cow_fault(struct vm_fault *vmf)
3663+static vm_fault_t do_cow_fault(struct vm_fault *vmf)
36623664 {
36633665 struct vm_area_struct *vma = vmf->vma;
3664− int ret;
3666+ vm_fault_t ret;
36653667
36663668 if (unlikely(anon_vma_prepare(vma)))
36673669 return VM_FAULT_OOM;
@@ -3697,10 +3699,10 @@ uncharge_out: · 29 unmodified lines
36973699 return ret;
36983700 }
36993701
3700−static int do_shared_fault(struct vm_fault *vmf)
3702+static vm_fault_t do_shared_fault(struct vm_fault *vmf)
37013703 {
37023704 struct vm_area_struct *vma = vmf->vma;
3703− int ret, tmp;
3705+ vm_fault_t ret, tmp;
37043706
37053707 ret = __do_fault(vmf);
37063708 if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY)))
@@ -3738,10 +3740,10 @@ static int do_shared_fault(struct vm_fault *vmf) · 31 unmodified lines
37383740 * The mmap_sem may have been released depending on flags and our
37393741 * return value. See filemap_fault() and __lock_page_or_retry().
37403742 */
3741−static int do_fault(struct vm_fault *vmf)
3743+static vm_fault_t do_fault(struct vm_fault *vmf)
37423744 {
37433745 struct vm_area_struct *vma = vmf->vma;
3744− int ret;
3746+ vm_fault_t ret;
37453747
37463748 /* The VMA was not fully populated on mmap() or missing VM_DONTEXPAND */
37473749 if (!vma->vm_ops->fault)
@@ -3776,7 +3778,7 @@ static int numa_migrate_prep(struct page *page, struct vm_area_struct *vma, · 28 unmodified lines
37763778 return mpol_misplaced(page, vma, addr);
37773779 }
37783780
3779−static int do_numa_page(struct vm_fault *vmf)
3781+static vm_fault_t do_numa_page(struct vm_fault *vmf)
37803782 {
37813783 struct vm_area_struct *vma = vmf->vma;
37823784 struct page *page = NULL;
@@ -3866,7 +3868,7 @@ out: · 83 unmodified lines
38663868 return 0;
38673869 }
38683870
3869−static inline int create_huge_pmd(struct vm_fault *vmf)
3871+static inline vm_fault_t create_huge_pmd(struct vm_fault *vmf)
38703872 {
38713873 if (vma_is_anonymous(vmf->vma))
38723874 return do_huge_pmd_anonymous_page(vmf);
@@ -3876,7 +3878,7 @@ static inline int create_huge_pmd(struct vm_fault *vmf) · 3 unmodified lines
38763878 }
38773879
38783880 /* `inline' is required to avoid gcc 4.1.2 build error */
3879−static inline int wp_huge_pmd(struct vm_fault *vmf, pmd_t orig_pmd)
3881+static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf, pmd_t orig_pmd)
38803882 {
38813883 if (vma_is_anonymous(vmf->vma))
38823884 return do_huge_pmd_wp_page(vmf, orig_pmd);
@@ -3895,7 +3897,7 @@ static inline bool vma_is_accessible(struct vm_area_struct *vma) · 12 unmodified lines
38953897 return vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE);
38963898 }
38973899
3898−static int create_huge_pud(struct vm_fault *vmf)
3900+static vm_fault_t create_huge_pud(struct vm_fault *vmf)
38993901 {
39003902 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
39013903 /* No support for anonymous transparent PUD pages yet */
@@ -3907,7 +3909,7 @@ static int create_huge_pud(struct vm_fault *vmf) · 5 unmodified lines
39073909 return VM_FAULT_FALLBACK;
39083910 }
39093911
3910−static int wp_huge_pud(struct vm_fault *vmf, pud_t orig_pud)
3912+static vm_fault_t wp_huge_pud(struct vm_fault *vmf, pud_t orig_pud)
39113913 {
39123914 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
39133915 /* No support for anonymous transparent PUD pages yet */
@@ -3934,7 +3936,7 @@ static int wp_huge_pud(struct vm_fault *vmf, pud_t orig_pud) · 20 unmodified lines
39343936 * The mmap_sem may have been released depending on flags and our return value.
39353937 * See filemap_fault() and __lock_page_or_retry().
39363938 */
3937−static int handle_pte_fault(struct vm_fault *vmf)
3939+static vm_fault_t handle_pte_fault(struct vm_fault *vmf)
39383940 {
39393941 pte_t entry;
39403942
@@ -4022,8 +4024,8 @@ unlock: · 81 unmodified lines
40224024 * The mmap_sem may have been released depending on flags and our
40234025 * return value. See filemap_fault() and __lock_page_or_retry().
40244026 */
4025−static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
4026− unsigned int flags)
4027+static vm_fault_t __handle_mm_fault(struct vm_area_struct *vma,
4028+ unsigned long address, unsigned int flags)
40274029 {
40284030 struct vm_fault vmf = {
40294031 .vma = vma,
@@ -4036,7 +4038,7 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, · 6 unmodified lines
40364038 struct mm_struct *mm = vma->vm_mm;
40374039 pgd_t *pgd;
40384040 p4d_t *p4d;
4039− int ret;
4041+ vm_fault_t ret;
40404042
40414043 pgd = pgd_offset(mm, address);
40424044 p4d = p4d_alloc(mm, pgd, address);
@@ -4111,10 +4113,10 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, · 68 unmodified lines
41114113 * The mmap_sem may have been released depending on flags and our
41124114 * return value. See filemap_fault() and __lock_page_or_retry().
41134115 */
4114−int handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
4116+vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
41154117 unsigned int flags)
41164118 {
4117− int ret;
4119+ vm_fault_t ret;
41184120
41194121 __set_current_state(TASK_RUNNING);
41204122
mm/migrate.c+1−3
@@ -1212,7 +1212,7 @@ out: · 1211 unmodified lines
12121212 * intentionally. Although it's rather weird,
12131213 * it's how HWPoison flag works at the moment.
12141214 */
1215− if (!test_set_page_hwpoison(page))
1215+ if (set_hwpoison_free_buddy_page(page))
12161216 num_poisoned_pages_inc();
12171217 }
12181218 } else {
@@ -1331,8 +1331,6 @@ put_anon: · 112 unmodified lines
13311331 out:
13321332 if (rc != -EAGAIN)
13331333 putback_active_hugepage(hpage);
1334− if (reason == MR_MEMORY_FAILURE && !test_set_page_hwpoison(hpage))
1335− num_poisoned_pages_inc();
13361334
13371335 /*
13381336 * If migration was not successful and there's a freeing callback, use
mm/page_alloc.c+30−0
@@ -8096,3 +8096,33 @@ bool is_free_buddy_page(struct page *page) · 8095 unmodified lines
80968096
80978097 return order < MAX_ORDER;
80988098 }
8099+
8100+#ifdef CONFIG_MEMORY_FAILURE
8101+/*
8102+ * Set PG_hwpoison flag if a given page is confirmed to be a free page. This
8103+ * test is performed under the zone lock to prevent a race against page
8104+ * allocation.
8105+ */
8106+bool set_hwpoison_free_buddy_page(struct page *page)
8107+{
8108+ struct zone *zone = page_zone(page);
8109+ unsigned long pfn = page_to_pfn(page);
8110+ unsigned long flags;
8111+ unsigned int order;
8112+ bool hwpoisoned = false;
8113+
8114+ spin_lock_irqsave(&zone->lock, flags);
8115+ for (order = 0; order < MAX_ORDER; order++) {
8116+ struct page *page_head = page - (pfn & ((1 << order) - 1));
8117+
8118+ if (PageBuddy(page_head) && page_order(page_head) >= order) {
8119+ if (!TestSetPageHWPoison(page))
8120+ hwpoisoned = true;
8121+ break;
8122+ }
8123+ }
8124+ spin_unlock_irqrestore(&zone->lock, flags);
8125+
8126+ return hwpoisoned;
8127+}
8128+#endif
mm/shmem.c+3−2
@@ -124,7 +124,7 @@ static int shmem_replace_page(struct page **pagep, gfp_t gfp, · 123 unmodified lines
124124 static int shmem_getpage_gfp(struct inode *inode, pgoff_t index,
125125 struct page **pagep, enum sgp_type sgp,
126126 gfp_t gfp, struct vm_area_struct *vma,
127− struct vm_fault *vmf, int *fault_type);
127+ struct vm_fault *vmf, vm_fault_t *fault_type);
128128
129129 int shmem_getpage(struct inode *inode, pgoff_t index,
130130 struct page **pagep, enum sgp_type sgp)
@@ -1620,7 +1620,8 @@ static int shmem_replace_page(struct page **pagep, gfp_t gfp, · 1489 unmodified lines
16201620 */
16211621 static int shmem_getpage_gfp(struct inode *inode, pgoff_t index,
16221622 struct page **pagep, enum sgp_type sgp, gfp_t gfp,
1623− struct vm_area_struct *vma, struct vm_fault *vmf, int *fault_type)
1623+ struct vm_area_struct *vma, struct vm_fault *vmf,
1624+ vm_fault_t *fault_type)
16241625 {
16251626 struct address_space *mapping = inode->i_mapping;
16261627 struct shmem_inode_info *info = SHMEM_I(inode);
mm/util.c+8−1
@@ -196,7 +196,7 @@ void *vmemdup_user(const void __user *src, size_t len) · 195 unmodified lines
196196 }
197197 EXPORT_SYMBOL(vmemdup_user);
198198
199−/*
199+/**
200200 * strndup_user - duplicate an existing string from user space
201201 * @s: The string to duplicate
202202 * @n: Maximum number of bytes to copy, including the trailing NUL.
@@ -434,6 +434,13 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node) · 231 unmodified lines
434434 }
435435 EXPORT_SYMBOL(kvmalloc_node);
436436
437+/**
438+ * kvfree - free memory allocated with kvmalloc
439+ * @addr: pointer returned by kvmalloc
440+ *
441+ * If the memory is allocated from vmalloc area it is freed with vfree().
442+ * Otherwise kfree() is used.
443+ */
437444 void kvfree(const void *addr)
438445 {
439446 if (is_vmalloc_addr(addr))
net/netfilter/ipvs/Kconfig+4−4
@@ -296,10 +296,10 @@ config IP_VS_MH_TAB_INDEX · 295 unmodified lines
296296 stored in a hash table. This table is assigned by a preference
297297 list of the positions to each destination until all slots in
298298 the table are filled. The index determines the prime for size of
299− the table as�251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
300− 65521 or 131071.�When using weights to allow destinations to
301− receive more connections,�the table is assigned an amount
302− proportional to the weights specified.�The table needs to be large
299+ the table as 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
300+ 65521 or 131071. When using weights to allow destinations to
301+ receive more connections, the table is assigned an amount
302+ proportional to the weights specified. The table needs to be large
303303 enough to effectively fit all the destinations multiplied by their
304304 respective weights.
305305
net/netfilter/ipvs/ip_vs_mh.c+2−2
@@ -5,10 +5,10 @@ · 4 unmodified lines
55 *
66 */
77
8−/* The mh algorithm is to assign�a preference list of all the lookup
8+/* The mh algorithm is to assign a preference list of all the lookup
99 * table positions to each destination and populate the table with
1010 * the most-preferred position of destinations. Then it is to select
11− * destination with the hash key of source IP address�through looking
11+ * destination with the hash key of source IP address through looking
1212 * up a the lookup table.
1313 *
1414 * The algorithm is detailed in:
scripts/spelling.txt+2−0
@@ -423,6 +423,7 @@ didnt||didn't · 422 unmodified lines
423423 diferent||different
424424 differrence||difference
425425 diffrent||different
426+differenciate||differentiate
426427 diffrentiate||differentiate
427428 difinition||definition
428429 dimesions||dimensions
@@ -667,6 +668,7 @@ inofficial||unofficial · 238 unmodified lines
667668 inrerface||interface
668669 insititute||institute
669670 instal||install
671+instanciate||instantiate
670672 instanciated||instantiated
671673 inteface||interface
672674 integreated||integrated
sound/soc/intel/common/sst-dsp-priv.h+2−2
@@ -153,7 +153,7 @@ struct sst_block_allocator { · 152 unmodified lines
153153 };
154154
155155 /*
156− * Runtime Module Instance - A module object can be instanciated multiple
156+ * Runtime Module Instance - A module object can be instantiated multiple
157157 * times within the DSP FW.
158158 */
159159 struct sst_module_runtime {
@@ -193,7 +193,7 @@ enum sst_module_state { · 33 unmodified lines
193193 *
194194 * Each Firmware file can consist of 1..N modules. A module can span multiple
195195 * ADSP memory blocks. The simplest FW will be a file with 1 module. A module
196− * can be instanciated multiple times in the DSP.
196+ * can be instantiated multiple times in the DSP.
197197 */
198198 struct sst_module {
199199 struct sst_dsp *dsp;
tools/power/cpupower/po/de.po+22−22
@@ -323,12 +323,12 @@ msgstr " Hardwarebedingte Grenzen der Taktfrequenz: " · 322 unmodified lines
323323 #: utils/cpufreq-info.c:256
324324 #, c-format
325325 msgid " available frequency steps: "
326−msgstr " m�gliche Taktfrequenzen: "
326+msgstr " mögliche Taktfrequenzen: "
327327
328328 #: utils/cpufreq-info.c:269
329329 #, c-format
330330 msgid " available cpufreq governors: "
331−msgstr " m�gliche Regler: "
331+msgstr " mögliche Regler: "
332332
333333 #: utils/cpufreq-info.c:280
334334 #, c-format
@@ -381,7 +381,7 @@ msgstr "Optionen:\n" · 46 unmodified lines
381381 msgid " -e, --debug Prints out debug information [default]\n"
382382 msgstr ""
383383 " -e, --debug Erzeugt detaillierte Informationen, hilfreich\n"
384−" zum Aufsp�ren von Fehlern\n"
384+" zum Aufspüren von Fehlern\n"
385385
386386 #: utils/cpufreq-info.c:475
387387 #, c-format
@@ -424,7 +424,7 @@ msgstr " -p, --policy Findet die momentane Taktik heraus *\n" · 36 unmodified lines
424424 #: utils/cpufreq-info.c:482
425425 #, c-format
426426 msgid " -g, --governors Determines available cpufreq governors *\n"
427−msgstr " -g, --governors Erzeugt eine Liste mit verf�gbaren Reglern *\n"
427+msgstr " -g, --governors Erzeugt eine Liste mit verfügbaren Reglern *\n"
428428
429429 #: utils/cpufreq-info.c:483
430430 #, c-format
@@ -450,7 +450,7 @@ msgstr "" · 19 unmodified lines
450450 #, c-format
451451 msgid " -s, --stats Shows cpufreq statistics if available\n"
452452 msgstr ""
453−" -s, --stats Zeigt, sofern m�glich, Statistiken �ber cpufreq an.\n"
453+" -s, --stats Zeigt, sofern möglich, Statistiken über cpufreq an.\n"
454454
455455 #: utils/cpufreq-info.c:487
456456 #, c-format
@@ -473,9 +473,9 @@ msgid "" · 16 unmodified lines
473473 "cpufreq\n"
474474 " interface in 2.4. and early 2.6. kernels\n"
475475 msgstr ""
476−" -o, --proc Erzeugt Informationen in einem �hnlichem Format zu "
476+" -o, --proc Erzeugt Informationen in einem ähnlichem Format zu "
477477 "dem\n"
478−" der /proc/cpufreq-Datei in 2.4. und fr�hen 2.6.\n"
478+" der /proc/cpufreq-Datei in 2.4. und frühen 2.6.\n"
479479 " Kernel-Versionen\n"
480480
481481 #: utils/cpufreq-info.c:491
@@ -491,7 +491,7 @@ msgstr "" · 9 unmodified lines
491491 #: utils/cpufreq-info.c:492 utils/cpuidle-info.c:152
492492 #, c-format
493493 msgid " -h, --help Prints out this screen\n"
494−msgstr " -h, --help Gibt diese Kurz�bersicht aus\n"
494+msgstr " -h, --help Gibt diese Kurzübersicht aus\n"
495495
496496 #: utils/cpufreq-info.c:495
497497 #, c-format
@@ -501,7 +501,7 @@ msgid "" · 3 unmodified lines
501501 msgstr ""
502502 "Sofern kein anderer Parameter als '-c, --cpu' angegeben wird, liefert "
503503 "dieses\n"
504−"Programm Informationen, die z.B. zum Berichten von Fehlern n�tzlich sind.\n"
504+"Programm Informationen, die z.B. zum Berichten von Fehlern nützlich sind.\n"
505505
506506 #: utils/cpufreq-info.c:497
507507 #, c-format
@@ -557,7 +557,7 @@ msgid "" · 49 unmodified lines
557557 "select\n"
558558 msgstr ""
559559 " -d FREQ, --min FREQ neue minimale Taktfrequenz, die der Regler\n"
560−" ausw�hlen darf\n"
560+" auswählen darf\n"
561561
562562 #: utils/cpufreq-set.c:28
563563 #, c-format
@@ -566,7 +566,7 @@ msgid "" · 2 unmodified lines
566566 "select\n"
567567 msgstr ""
568568 " -u FREQ, --max FREQ neue maximale Taktfrequenz, die der Regler\n"
569−" ausw�hlen darf\n"
569+" auswählen darf\n"
570570
571571 #: utils/cpufreq-set.c:29
572572 #, c-format
@@ -579,20 +579,20 @@ msgid "" · 6 unmodified lines
579579 " -f FREQ, --freq FREQ specific frequency to be set. Requires userspace\n"
580580 " governor to be available and loaded\n"
581581 msgstr ""
582−" -f FREQ, --freq FREQ setze exakte Taktfrequenz. Ben�tigt den Regler\n"
582+" -f FREQ, --freq FREQ setze exakte Taktfrequenz. Benötigt den Regler\n"
583583 " 'userspace'.\n"
584584
585585 #: utils/cpufreq-set.c:32
586586 #, c-format
587587 msgid " -r, --related Switches all hardware-related CPUs\n"
588588 msgstr ""
589−" -r, --related Setze Werte f�r alle CPUs, deren Taktfrequenz\n"
589+" -r, --related Setze Werte für alle CPUs, deren Taktfrequenz\n"
590590 " hardwarebedingt identisch ist.\n"
591591
592592 #: utils/cpufreq-set.c:33 utils/cpupower-set.c:28 utils/cpupower-info.c:27
593593 #, c-format
594594 msgid " -h, --help Prints out this screen\n"
595−msgstr " -h, --help Gibt diese Kurz�bersicht aus\n"
595+msgstr " -h, --help Gibt diese Kurzübersicht aus\n"
596596
597597 #: utils/cpufreq-set.c:35
598598 #, fuzzy, c-format
@@ -618,8 +618,8 @@ msgstr "" · 19 unmodified lines
618618 " angenommen\n"
619619 "2. Der Parameter -f bzw. --freq kann mit keinem anderen als dem Parameter\n"
620620 " -c bzw. --cpu kombiniert werden\n"
621−"3. FREQuenzen k�nnen in Hz, kHz (Standard), MHz, GHz oder THz eingegeben\n"
622−" werden, indem der Wert und unmittelbar anschlie�end (ohne Leerzeichen!)\n"
621+"3. FREQuenzen können in Hz, kHz (Standard), MHz, GHz oder THz eingegeben\n"
622+" werden, indem der Wert und unmittelbar anschließend (ohne Leerzeichen!)\n"
623623 " die Einheit angegeben werden. (Bsp: 1GHz )\n"
624624 " (FREQuenz in kHz =^ MHz * 1000 =^ GHz * 1000000).\n"
625625
@@ -638,7 +638,7 @@ msgid "" · 12 unmodified lines
638638 msgstr ""
639639 "Beim Einstellen ist ein Fehler aufgetreten. Typische Fehlerquellen sind:\n"
640640 "- nicht ausreichende Rechte (Administrator)\n"
641−"- der Regler ist nicht verf�gbar bzw. nicht geladen\n"
641+"- der Regler ist nicht verfügbar bzw. nicht geladen\n"
642642 "- die angegebene Taktik ist inkorrekt\n"
643643 "- eine spezifische Frequenz wurde angegeben, aber der Regler 'userspace'\n"
644644 " kann entweder hardwarebedingt nicht genutzt werden oder ist nicht geladen\n"
@@ -821,7 +821,7 @@ msgstr "" · 176 unmodified lines
821821 #: utils/cpuidle-info.c:48
822822 #, fuzzy, c-format
823823 msgid "Available idle states:"
824−msgstr " m�gliche Taktfrequenzen: "
824+msgstr " mögliche Taktfrequenzen: "
825825
826826 #: utils/cpuidle-info.c:71
827827 #, c-format
@@ -924,7 +924,7 @@ msgstr "Aufruf: cpufreq-info [Optionen]\n" · 96 unmodified lines
924924 msgid " -s, --silent Only show general C-state information\n"
925925 msgstr ""
926926 " -e, --debug Erzeugt detaillierte Informationen, hilfreich\n"
927−" zum Aufsp�ren von Fehlern\n"
927+" zum Aufspüren von Fehlern\n"
928928
929929 #: utils/cpuidle-info.c:150
930930 #, fuzzy, c-format
@@ -933,9 +933,9 @@ msgid "" · 2 unmodified lines
933933 "acpi/processor/*/power\n"
934934 " interface in older kernels\n"
935935 msgstr ""
936−" -o, --proc Erzeugt Informationen in einem �hnlichem Format zu "
936+" -o, --proc Erzeugt Informationen in einem ähnlichem Format zu "
937937 "dem\n"
938−" der /proc/cpufreq-Datei in 2.4. und fr�hen 2.6.\n"
938+" der /proc/cpufreq-Datei in 2.4. und frühen 2.6.\n"
939939 " Kernel-Versionen\n"
940940
941941 #: utils/cpuidle-info.c:209
@@ -949,7 +949,7 @@ msgstr "" · 7 unmodified lines
949949 #~ " -c CPU, --cpu CPU CPU number which information shall be determined "
950950 #~ "about\n"
951951 #~ msgstr ""
952−#~ " -c CPU, --cpu CPU Nummer der CPU, �ber die Informationen "
952+#~ " -c CPU, --cpu CPU Nummer der CPU, über die Informationen "
953953 #~ "herausgefunden werden sollen\n"
954954
955955 #~ msgid ""
tools/power/cpupower/po/fr.po+60−60
@@ -212,7 +212,7 @@ msgstr "" · 211 unmodified lines
212212 #: utils/cpupower.c:91
213213 #, c-format
214214 msgid "Report errors and bugs to %s, please.\n"
215−msgstr "Veuillez rapportez les erreurs et les bogues � %s, s'il vous plait.\n"
215+msgstr "Veuillez rapportez les erreurs et les bogues à %s, s'il vous plait.\n"
216216
217217 #: utils/cpupower.c:114
218218 #, c-format
@@ -227,14 +227,14 @@ msgstr "" · 8 unmodified lines
227227 #: utils/cpufreq-info.c:31
228228 #, c-format
229229 msgid "Couldn't count the number of CPUs (%s: %s), assuming 1\n"
230−msgstr "D�termination du nombre de CPUs (%s : %s) impossible. Assume 1\n"
230+msgstr "Détermination du nombre de CPUs (%s : %s) impossible. Assume 1\n"
231231
232232 #: utils/cpufreq-info.c:63
233233 #, c-format
234234 msgid ""
235235 " minimum CPU frequency - maximum CPU frequency - governor\n"
236236 msgstr ""
237−" Fr�quence CPU minimale - Fr�quence CPU maximale - r�gulateur\n"
237+" Fréquence CPU minimale - Fréquence CPU maximale - régulateur\n"
238238
239239 #: utils/cpufreq-info.c:151
240240 #, c-format
@@ -302,12 +302,12 @@ msgstr " pilote : %s\n" · 61 unmodified lines
302302 #: utils/cpufreq-info.c:219
303303 #, fuzzy, c-format
304304 msgid " CPUs which run at the same hardware frequency: "
305−msgstr " CPUs qui doivent changer de fr�quences en m�me temps : "
305+msgstr " CPUs qui doivent changer de fréquences en même temps : "
306306
307307 #: utils/cpufreq-info.c:230
308308 #, fuzzy, c-format
309309 msgid " CPUs which need to have their frequency coordinated by software: "
310−msgstr " CPUs qui doivent changer de fr�quences en m�me temps : "
310+msgstr " CPUs qui doivent changer de fréquences en même temps : "
311311
312312 #: utils/cpufreq-info.c:241
313313 #, c-format
@@ -317,22 +317,22 @@ msgstr "" · 3 unmodified lines
317317 #: utils/cpufreq-info.c:247
318318 #, c-format
319319 msgid " hardware limits: "
320−msgstr " limitation mat�rielle : "
320+msgstr " limitation matérielle : "
321321
322322 #: utils/cpufreq-info.c:256
323323 #, c-format
324324 msgid " available frequency steps: "
325−msgstr " plage de fr�quence : "
325+msgstr " plage de fréquence : "
326326
327327 #: utils/cpufreq-info.c:269
328328 #, c-format
329329 msgid " available cpufreq governors: "
330−msgstr " r�gulateurs disponibles : "
330+msgstr " régulateurs disponibles : "
331331
332332 #: utils/cpufreq-info.c:280
333333 #, c-format
334334 msgid " current policy: frequency should be within "
335−msgstr " tactique actuelle : la fr�quence doit �tre comprise entre "
335+msgstr " tactique actuelle : la fréquence doit être comprise entre "
336336
337337 #: utils/cpufreq-info.c:282
338338 #, c-format
@@ -345,18 +345,18 @@ msgid "" · 6 unmodified lines
345345 "The governor \"%s\" may decide which speed to use\n"
346346 " within this range.\n"
347347 msgstr ""
348−"Le r�gulateur \"%s\" est libre de choisir la vitesse\n"
349−" dans cette plage de fr�quences.\n"
348+"Le régulateur \"%s\" est libre de choisir la vitesse\n"
349+" dans cette plage de fréquences.\n"
350350
351351 #: utils/cpufreq-info.c:293
352352 #, c-format
353353 msgid " current CPU frequency is "
354−msgstr " la fr�quence actuelle de ce CPU est "
354+msgstr " la fréquence actuelle de ce CPU est "
355355
356356 #: utils/cpufreq-info.c:296
357357 #, c-format
358358 msgid " (asserted by call to hardware)"
359−msgstr " (v�rifi� par un appel direct du mat�riel)"
359+msgstr " (vérifié par un appel direct du matériel)"
360360
361361 #: utils/cpufreq-info.c:304
362362 #, c-format
@@ -377,7 +377,7 @@ msgstr "Options :\n" · 14 unmodified lines
377377 #: utils/cpufreq-info.c:474
378378 #, fuzzy, c-format
379379 msgid " -e, --debug Prints out debug information [default]\n"
380−msgstr " -e, --debug Afficher les informations de d�boguage\n"
380+msgstr " -e, --debug Afficher les informations de déboguage\n"
381381
382382 #: utils/cpufreq-info.c:475
383383 #, c-format
@@ -385,8 +385,8 @@ msgid "" · 1 unmodified line
385385 " -f, --freq Get frequency the CPU currently runs at, according\n"
386386 " to the cpufreq core *\n"
387387 msgstr ""
388−" -f, --freq Obtenir la fr�quence actuelle du CPU selon le point\n"
389−" de vue du coeur du syst�me de cpufreq *\n"
388+" -f, --freq Obtenir la fréquence actuelle du CPU selon le point\n"
389+" de vue du coeur du système de cpufreq *\n"
390390
391391 #: utils/cpufreq-info.c:477
392392 #, c-format
@@ -394,8 +394,8 @@ msgid "" · 1 unmodified line
394394 " -w, --hwfreq Get frequency the CPU currently runs at, by reading\n"
395395 " it from hardware (only available to root) *\n"
396396 msgstr ""
397−" -w, --hwfreq Obtenir la fr�quence actuelle du CPU directement par\n"
398−" le mat�riel (doit �tre root) *\n"
397+" -w, --hwfreq Obtenir la fréquence actuelle du CPU directement par\n"
398+" le matériel (doit être root) *\n"
399399
400400 #: utils/cpufreq-info.c:479
401401 #, c-format
@@ -403,13 +403,13 @@ msgid "" · 1 unmodified line
403403 " -l, --hwlimits Determine the minimum and maximum CPU frequency "
404404 "allowed *\n"
405405 msgstr ""
406−" -l, --hwlimits Affiche les fr�quences minimales et maximales du CPU "
406+" -l, --hwlimits Affiche les fréquences minimales et maximales du CPU "
407407 "*\n"
408408
409409 #: utils/cpufreq-info.c:480
410410 #, c-format
411411 msgid " -d, --driver Determines the used cpufreq kernel driver *\n"
412−msgstr " -d, --driver Affiche le pilote cpufreq utilis� *\n"
412+msgstr " -d, --driver Affiche le pilote cpufreq utilisé *\n"
413413
414414 #: utils/cpufreq-info.c:481
415415 #, c-format
@@ -420,7 +420,7 @@ msgstr " -p, --policy Affiche la tactique actuelle de cpufreq *\n" · 4 unmodified lines
420420 #, c-format
421421 msgid " -g, --governors Determines available cpufreq governors *\n"
422422 msgstr ""
423−" -g, --governors Affiche les r�gulateurs disponibles de cpufreq *\n"
423+" -g, --governors Affiche les régulateurs disponibles de cpufreq *\n"
424424
425425 #: utils/cpufreq-info.c:483
426426 #, fuzzy, c-format
@@ -429,7 +429,7 @@ msgid "" · 2 unmodified lines
429429 "frequency *\n"
430430 msgstr ""
431431 " -a, --affected-cpus Affiche quels sont les CPUs qui doivent changer de\n"
432−" fr�quences en m�me temps *\n"
432+" fréquences en même temps *\n"
433433
434434 #: utils/cpufreq-info.c:484
435435 #, fuzzy, c-format
@@ -438,7 +438,7 @@ msgid "" · 2 unmodified lines
438438 " coordinated by software *\n"
439439 msgstr ""
440440 " -a, --affected-cpus Affiche quels sont les CPUs qui doivent changer de\n"
441−" fr�quences en m�me temps *\n"
441+" fréquences en même temps *\n"
442442
443443 #: utils/cpufreq-info.c:486
444444 #, c-format
@@ -453,7 +453,7 @@ msgid "" · 8 unmodified lines
453453 " -y, --latency Determines the maximum latency on CPU frequency "
454454 "changes *\n"
455455 msgstr ""
456−" -l, --hwlimits Affiche les fr�quences minimales et maximales du CPU "
456+" -l, --hwlimits Affiche les fréquences minimales et maximales du CPU "
457457 "*\n"
458458
459459 #: utils/cpufreq-info.c:488
@@ -469,7 +469,7 @@ msgid "" · 9 unmodified lines
469469 " interface in 2.4. and early 2.6. kernels\n"
470470 msgstr ""
471471 " -o, --proc Affiche les informations en utilisant l'interface\n"
472−" fournie par /proc/cpufreq, pr�sente dans les "
472+" fournie par /proc/cpufreq, présente dans les "
473473 "versions\n"
474474 " 2.4 et les anciennes versions 2.6 du noyau\n"
475475
@@ -485,7 +485,7 @@ msgstr "" · 9 unmodified lines
485485 #: utils/cpufreq-info.c:492 utils/cpuidle-info.c:152
486486 #, c-format
487487 msgid " -h, --help Prints out this screen\n"
488−msgstr " -h, --help affiche l'aide-m�moire\n"
488+msgstr " -h, --help affiche l'aide-mémoire\n"
489489
490490 #: utils/cpufreq-info.c:495
491491 #, c-format
@@ -493,8 +493,8 @@ msgid "" · 1 unmodified line
493493 "If no argument or only the -c, --cpu parameter is given, debug output about\n"
494494 "cpufreq is printed which is useful e.g. for reporting bugs.\n"
495495 msgstr ""
496−"Par d�faut, les informations de d�boguage seront affich�es si aucun\n"
497−"argument, ou bien si seulement l'argument -c (--cpu) est donn�, afin de\n"
496+"Par défaut, les informations de déboguage seront affichées si aucun\n"
497+"argument, ou bien si seulement l'argument -c (--cpu) est donné, afin de\n"
498498 "faciliter les rapports de bogues par exemple\n"
499499
500500 #: utils/cpufreq-info.c:497
@@ -517,8 +517,8 @@ msgid "" · 16 unmodified lines
517517 "You can't specify more than one --cpu parameter and/or\n"
518518 "more than one output-specific argument\n"
519519 msgstr ""
520−"On ne peut indiquer plus d'un param�tre --cpu, tout comme l'on ne peut\n"
521−"sp�cifier plus d'un argument de formatage\n"
520+"On ne peut indiquer plus d'un paramètre --cpu, tout comme l'on ne peut\n"
521+"spécifier plus d'un argument de formatage\n"
522522
523523 #: utils/cpufreq-info.c:600 utils/cpufreq-set.c:82 utils/cpupower-set.c:42
524524 #: utils/cpupower-info.c:42 utils/cpuidle-info.c:213
@@ -529,7 +529,7 @@ msgstr "option invalide\n" · 4 unmodified lines
529529 #: utils/cpufreq-info.c:617
530530 #, c-format
531531 msgid "couldn't analyze CPU %d as it doesn't seem to be present\n"
532−msgstr "analyse du CPU %d impossible puisqu'il ne semble pas �tre pr�sent\n"
532+msgstr "analyse du CPU %d impossible puisqu'il ne semble pas être présent\n"
533533
534534 #: utils/cpufreq-info.c:620 utils/cpupower-info.c:142
535535 #, c-format
@@ -547,8 +547,8 @@ msgid "" · 11 unmodified lines
547547 " -d FREQ, --min FREQ new minimum CPU frequency the governor may "
548548 "select\n"
549549 msgstr ""
550−" -d FREQ, --min FREQ nouvelle fr�quence minimale du CPU � utiliser\n"
551−" par le r�gulateur\n"
550+" -d FREQ, --min FREQ nouvelle fréquence minimale du CPU à utiliser\n"
551+" par le régulateur\n"
552552
553553 #: utils/cpufreq-set.c:28
554554 #, c-format
@@ -556,13 +556,13 @@ msgid "" · 1 unmodified line
556556 " -u FREQ, --max FREQ new maximum CPU frequency the governor may "
557557 "select\n"
558558 msgstr ""
559−" -u FREQ, --max FREQ nouvelle fr�quence maximale du CPU � utiliser\n"
560−" par le r�gulateur\n"
559+" -u FREQ, --max FREQ nouvelle fréquence maximale du CPU à utiliser\n"
560+" par le régulateur\n"
561561
562562 #: utils/cpufreq-set.c:29
563563 #, c-format
564564 msgid " -g GOV, --governor GOV new cpufreq governor\n"
565−msgstr " -g GOV, --governor GOV active le r�gulateur GOV\n"
565+msgstr " -g GOV, --governor GOV active le régulateur GOV\n"
566566
567567 #: utils/cpufreq-set.c:30
568568 #, c-format
@@ -570,9 +570,9 @@ msgid "" · 1 unmodified line
570570 " -f FREQ, --freq FREQ specific frequency to be set. Requires userspace\n"
571571 " governor to be available and loaded\n"
572572 msgstr ""
573−" -f FREQ, --freq FREQ fixe la fr�quence du processeur � FREQ. Il faut\n"
574−" que le r�gulateur � userspace � soit disponible \n"
575−" et activ�.\n"
573+" -f FREQ, --freq FREQ fixe la fréquence du processeur à FREQ. Il faut\n"
574+" que le régulateur « userspace » soit disponible \n"
575+" et activé.\n"
576576
577577 #: utils/cpufreq-set.c:32
578578 #, c-format
@@ -582,7 +582,7 @@ msgstr "" · 3 unmodified lines
582582 #: utils/cpufreq-set.c:33 utils/cpupower-set.c:28 utils/cpupower-info.c:27
583583 #, fuzzy, c-format
584584 msgid " -h, --help Prints out this screen\n"
585−msgstr " -h, --help affiche l'aide-m�moire\n"
585+msgstr " -h, --help affiche l'aide-mémoire\n"
586586
587587 #: utils/cpufreq-set.c:35
588588 #, fuzzy, c-format
@@ -602,11 +602,11 @@ msgid "" · 13 unmodified lines
602602 " (FREQuency in kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).\n"
603603 msgstr ""
604604 "Remarque :\n"
605−"1. Le CPU num�ro 0 sera utilis� par d�faut si -c (ou --cpu) est omis ;\n"
606−"2. l'argument -f FREQ (ou --freq FREQ) ne peut �tre utilis� qu'avec --cpu ;\n"
607−"3. on pourra pr�ciser l'unit� des fr�quences en postfixant sans aucune "
605+"1. Le CPU numéro 0 sera utilisé par défaut si -c (ou --cpu) est omis ;\n"
606+"2. l'argument -f FREQ (ou --freq FREQ) ne peut être utilisé qu'avec --cpu ;\n"
607+"3. on pourra préciser l'unité des fréquences en postfixant sans aucune "
608608 "espace\n"
609−" les valeurs par hz, kHz (par d�faut), MHz, GHz ou THz\n"
609+" les valeurs par hz, kHz (par défaut), MHz, GHz ou THz\n"
610610 " (kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).\n"
611611
612612 #: utils/cpufreq-set.c:57
@@ -622,21 +622,21 @@ msgid "" · 9 unmodified lines
622622 "frequency\n"
623623 " or because the userspace governor isn't loaded?\n"
624624 msgstr ""
625−"En ajustant les nouveaux param�tres, une erreur est apparue. Les sources\n"
625+"En ajustant les nouveaux paramètres, une erreur est apparue. Les sources\n"
626626 "d'erreur typique sont :\n"
627−"- droit d'administration insuffisant (�tes-vous root ?) ;\n"
628−"- le r�gulateur choisi n'est pas disponible, ou bien n'est pas disponible "
627+"- droit d'administration insuffisant (êtes-vous root ?) ;\n"
628+"- le régulateur choisi n'est pas disponible, ou bien n'est pas disponible "
629629 "en\n"
630630 " tant que module noyau ;\n"
631631 "- la tactique n'est pas disponible ;\n"
632−"- vous voulez utiliser l'option -f/--freq, mais le r�gulateur � userspace �\n"
633−" n'est pas disponible, par exemple parce que le mat�riel ne le supporte\n"
634−" pas, ou bien n'est tout simplement pas charg�.\n"
632+"- vous voulez utiliser l'option -f/--freq, mais le régulateur « userspace »\n"
633+" n'est pas disponible, par exemple parce que le matériel ne le supporte\n"
634+" pas, ou bien n'est tout simplement pas chargé.\n"
635635
636636 #: utils/cpufreq-set.c:170
637637 #, c-format
638638 msgid "wrong, unknown or unhandled CPU?\n"
639−msgstr "CPU inconnu ou non support� ?\n"
639+msgstr "CPU inconnu ou non supporté ?\n"
640640
641641 #: utils/cpufreq-set.c:302
642642 #, c-format
@@ -653,7 +653,7 @@ msgid "" · 10 unmodified lines
653653 "At least one parameter out of -f/--freq, -d/--min, -u/--max, and\n"
654654 "-g/--governor must be passed\n"
655655 msgstr ""
656−"L'un de ces param�tres est obligatoire : -f/--freq, -d/--min, -u/--max et\n"
656+"L'un de ces paramètres est obligatoire : -f/--freq, -d/--min, -u/--max et\n"
657657 "-g/--governor\n"
658658
659659 #: utils/cpufreq-set.c:347
@@ -810,7 +810,7 @@ msgstr "" · 150 unmodified lines
810810 #: utils/cpuidle-info.c:48
811811 #, fuzzy, c-format
812812 msgid "Available idle states:"
813−msgstr " plage de fr�quence : "
813+msgstr " plage de fréquence : "
814814
815815 #: utils/cpuidle-info.c:71
816816 #, c-format
@@ -911,7 +911,7 @@ msgstr "Usage : cpufreq-info [options]\n" · 94 unmodified lines
911911 #: utils/cpuidle-info.c:149
912912 #, fuzzy, c-format
913913 msgid " -s, --silent Only show general C-state information\n"
914−msgstr " -e, --debug Afficher les informations de d�boguage\n"
914+msgstr " -e, --debug Afficher les informations de déboguage\n"
915915
916916 #: utils/cpuidle-info.c:150
917917 #, fuzzy, c-format
@@ -921,7 +921,7 @@ msgid "" · 3 unmodified lines
921921 " interface in older kernels\n"
922922 msgstr ""
923923 " -o, --proc Affiche les informations en utilisant l'interface\n"
924−" fournie par /proc/cpufreq, pr�sente dans les "
924+" fournie par /proc/cpufreq, présente dans les "
925925 "versions\n"
926926 " 2.4 et les anciennes versions 2.6 du noyau\n"
927927
@@ -929,19 +929,19 @@ msgstr "" · 1 unmodified line
929929 #, fuzzy, c-format
930930 msgid "You can't specify more than one output-specific argument\n"
931931 msgstr ""
932−"On ne peut indiquer plus d'un param�tre --cpu, tout comme l'on ne peut\n"
933−"sp�cifier plus d'un argument de formatage\n"
932+"On ne peut indiquer plus d'un paramètre --cpu, tout comme l'on ne peut\n"
933+"spécifier plus d'un argument de formatage\n"
934934
935935 #~ msgid ""
936936 #~ " -c CPU, --cpu CPU CPU number which information shall be determined "
937937 #~ "about\n"
938938 #~ msgstr ""
939−#~ " -c CPU, --cpu CPU Num�ro du CPU pour lequel l'information sera "
940−#~ "affich�e\n"
939+#~ " -c CPU, --cpu CPU Numéro du CPU pour lequel l'information sera "
940+#~ "affichée\n"
941941
942942 #~ msgid ""
943943 #~ " -c CPU, --cpu CPU number of CPU where cpufreq settings shall be "
944944 #~ "modified\n"
945945 #~ msgstr ""
946−#~ " -c CPU, --cpu CPU num�ro du CPU � prendre en compte pour les\n"
946+#~ " -c CPU, --cpu CPU numéro du CPU à prendre en compte pour les\n"
947947 #~ " changements\n"