diff options
Diffstat (limited to 'drivers')
71 files changed, 14977 insertions, 1749 deletions
diff --git a/drivers/Kconfig b/drivers/Kconfig index ed41d9036bfc..aed4a9b97c14 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig | |||
@@ -58,4 +58,6 @@ source "drivers/mmc/Kconfig" | |||
58 | 58 | ||
59 | source "drivers/infiniband/Kconfig" | 59 | source "drivers/infiniband/Kconfig" |
60 | 60 | ||
61 | source "drivers/sn/Kconfig" | ||
62 | |||
61 | endmenu | 63 | endmenu |
diff --git a/drivers/Makefile b/drivers/Makefile index 15681de688f4..3167be54fedd 100644 --- a/drivers/Makefile +++ b/drivers/Makefile | |||
@@ -61,6 +61,6 @@ obj-$(CONFIG_EISA) += eisa/ | |||
61 | obj-$(CONFIG_CPU_FREQ) += cpufreq/ | 61 | obj-$(CONFIG_CPU_FREQ) += cpufreq/ |
62 | obj-$(CONFIG_MMC) += mmc/ | 62 | obj-$(CONFIG_MMC) += mmc/ |
63 | obj-$(CONFIG_INFINIBAND) += infiniband/ | 63 | obj-$(CONFIG_INFINIBAND) += infiniband/ |
64 | obj-$(CONFIG_BLK_DEV_SGIIOC4) += sn/ | 64 | obj-$(CONFIG_SGI_IOC4) += sn/ |
65 | obj-y += firmware/ | 65 | obj-y += firmware/ |
66 | obj-$(CONFIG_CRYPTO) += crypto/ | 66 | obj-$(CONFIG_CRYPTO) += crypto/ |
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index ff64d333e95f..c9d671cf7857 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
@@ -171,7 +171,7 @@ static void acpi_processor_idle (void) | |||
171 | int sleep_ticks = 0; | 171 | int sleep_ticks = 0; |
172 | u32 t1, t2 = 0; | 172 | u32 t1, t2 = 0; |
173 | 173 | ||
174 | pr = processors[_smp_processor_id()]; | 174 | pr = processors[raw_smp_processor_id()]; |
175 | if (!pr) | 175 | if (!pr) |
176 | return; | 176 | return; |
177 | 177 | ||
diff --git a/drivers/base/node.c b/drivers/base/node.c index 5d4517ccc422..904b27caf697 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c | |||
@@ -87,7 +87,7 @@ static ssize_t node_read_numastat(struct sys_device * dev, char * buf) | |||
87 | for (i = 0; i < MAX_NR_ZONES; i++) { | 87 | for (i = 0; i < MAX_NR_ZONES; i++) { |
88 | struct zone *z = &pg->node_zones[i]; | 88 | struct zone *z = &pg->node_zones[i]; |
89 | for (cpu = 0; cpu < NR_CPUS; cpu++) { | 89 | for (cpu = 0; cpu < NR_CPUS; cpu++) { |
90 | struct per_cpu_pageset *ps = &z->pageset[cpu]; | 90 | struct per_cpu_pageset *ps = zone_pcp(z,cpu); |
91 | numa_hit += ps->numa_hit; | 91 | numa_hit += ps->numa_hit; |
92 | numa_miss += ps->numa_miss; | 92 | numa_miss += ps->numa_miss; |
93 | numa_foreign += ps->numa_foreign; | 93 | numa_foreign += ps->numa_foreign; |
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index 5ed6515ae01f..7ccf871d3c9d 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig | |||
@@ -929,6 +929,10 @@ config SCx200_GPIO | |||
929 | 929 | ||
930 | If compiled as a module, it will be called scx200_gpio. | 930 | If compiled as a module, it will be called scx200_gpio. |
931 | 931 | ||
932 | config GPIO_VR41XX | ||
933 | tristate "NEC VR4100 series General-purpose I/O Unit support" | ||
934 | depends on CPU_VR41XX | ||
935 | |||
932 | config RAW_DRIVER | 936 | config RAW_DRIVER |
933 | tristate "RAW driver (/dev/raw/rawN) (OBSOLETE)" | 937 | tristate "RAW driver (/dev/raw/rawN) (OBSOLETE)" |
934 | help | 938 | help |
diff --git a/drivers/char/Makefile b/drivers/char/Makefile index e3f5c32aac55..1aff819f3832 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile | |||
@@ -80,6 +80,7 @@ obj-$(CONFIG_PPDEV) += ppdev.o | |||
80 | obj-$(CONFIG_NWBUTTON) += nwbutton.o | 80 | obj-$(CONFIG_NWBUTTON) += nwbutton.o |
81 | obj-$(CONFIG_NWFLASH) += nwflash.o | 81 | obj-$(CONFIG_NWFLASH) += nwflash.o |
82 | obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o | 82 | obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o |
83 | obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o | ||
83 | obj-$(CONFIG_TANBAC_TB0219) += tb0219.o | 84 | obj-$(CONFIG_TANBAC_TB0219) += tb0219.o |
84 | 85 | ||
85 | obj-$(CONFIG_WATCHDOG) += watchdog/ | 86 | obj-$(CONFIG_WATCHDOG) += watchdog/ |
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c index d7fb452af7f9..0c81652eaba6 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c | |||
@@ -641,7 +641,7 @@ int ipmi_create_user(unsigned int if_num, | |||
641 | return -ENOMEM; | 641 | return -ENOMEM; |
642 | 642 | ||
643 | down_read(&interfaces_sem); | 643 | down_read(&interfaces_sem); |
644 | if ((if_num > MAX_IPMI_INTERFACES) || ipmi_interfaces[if_num] == NULL) | 644 | if ((if_num >= MAX_IPMI_INTERFACES) || ipmi_interfaces[if_num] == NULL) |
645 | { | 645 | { |
646 | rv = -EINVAL; | 646 | rv = -EINVAL; |
647 | goto out_unlock; | 647 | goto out_unlock; |
diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 257b8ee605e5..e3085b22a365 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c | |||
@@ -484,7 +484,7 @@ static ssize_t write_kmem(struct file * file, const char __user * buf, | |||
484 | return virtr + wrote; | 484 | return virtr + wrote; |
485 | } | 485 | } |
486 | 486 | ||
487 | #if defined(CONFIG_ISA) || !defined(__mc68000__) | 487 | #if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI)) |
488 | static ssize_t read_port(struct file * file, char __user * buf, | 488 | static ssize_t read_port(struct file * file, char __user * buf, |
489 | size_t count, loff_t *ppos) | 489 | size_t count, loff_t *ppos) |
490 | { | 490 | { |
@@ -744,7 +744,7 @@ static struct file_operations null_fops = { | |||
744 | .write = write_null, | 744 | .write = write_null, |
745 | }; | 745 | }; |
746 | 746 | ||
747 | #if defined(CONFIG_ISA) || !defined(__mc68000__) | 747 | #if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI)) |
748 | static struct file_operations port_fops = { | 748 | static struct file_operations port_fops = { |
749 | .llseek = memory_lseek, | 749 | .llseek = memory_lseek, |
750 | .read = read_port, | 750 | .read = read_port, |
@@ -804,7 +804,7 @@ static int memory_open(struct inode * inode, struct file * filp) | |||
804 | case 3: | 804 | case 3: |
805 | filp->f_op = &null_fops; | 805 | filp->f_op = &null_fops; |
806 | break; | 806 | break; |
807 | #if defined(CONFIG_ISA) || !defined(__mc68000__) | 807 | #if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI)) |
808 | case 4: | 808 | case 4: |
809 | filp->f_op = &port_fops; | 809 | filp->f_op = &port_fops; |
810 | break; | 810 | break; |
@@ -846,7 +846,7 @@ static const struct { | |||
846 | {1, "mem", S_IRUSR | S_IWUSR | S_IRGRP, &mem_fops}, | 846 | {1, "mem", S_IRUSR | S_IWUSR | S_IRGRP, &mem_fops}, |
847 | {2, "kmem", S_IRUSR | S_IWUSR | S_IRGRP, &kmem_fops}, | 847 | {2, "kmem", S_IRUSR | S_IWUSR | S_IRGRP, &kmem_fops}, |
848 | {3, "null", S_IRUGO | S_IWUGO, &null_fops}, | 848 | {3, "null", S_IRUGO | S_IWUGO, &null_fops}, |
849 | #if defined(CONFIG_ISA) || !defined(__mc68000__) | 849 | #if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI)) |
850 | {4, "port", S_IRUSR | S_IWUSR | S_IRGRP, &port_fops}, | 850 | {4, "port", S_IRUSR | S_IWUSR | S_IRGRP, &port_fops}, |
851 | #endif | 851 | #endif |
852 | {5, "zero", S_IRUGO | S_IWUGO, &zero_fops}, | 852 | {5, "zero", S_IRUGO | S_IWUGO, &zero_fops}, |
diff --git a/drivers/char/vr41xx_giu.c b/drivers/char/vr41xx_giu.c new file mode 100644 index 000000000000..683278bc5241 --- /dev/null +++ b/drivers/char/vr41xx_giu.c | |||
@@ -0,0 +1,743 @@ | |||
1 | /* | ||
2 | * Driver for NEC VR4100 series General-purpose I/O Unit. | ||
3 | * | ||
4 | * Copyright (C) 2002 MontaVista Software Inc. | ||
5 | * Author: Yoichi Yuasa <yyuasa@mvista.com or source@mvista.com> | ||
6 | * Copyright (C) 2003-2005 Yoichi Yuasa <yuasa@hh.iij4u.or.jp> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | #include <linux/device.h> | ||
23 | #include <linux/errno.h> | ||
24 | #include <linux/fs.h> | ||
25 | #include <linux/init.h> | ||
26 | #include <linux/irq.h> | ||
27 | #include <linux/interrupt.h> | ||
28 | #include <linux/kernel.h> | ||
29 | #include <linux/module.h> | ||
30 | #include <linux/spinlock.h> | ||
31 | #include <linux/types.h> | ||
32 | |||
33 | #include <asm/cpu.h> | ||
34 | #include <asm/io.h> | ||
35 | #include <asm/vr41xx/giu.h> | ||
36 | #include <asm/vr41xx/vr41xx.h> | ||
37 | |||
38 | MODULE_AUTHOR("Yoichi Yuasa <yuasa@hh.iij4u.or.jp>"); | ||
39 | MODULE_DESCRIPTION("NEC VR4100 series General-purpose I/O Unit driver"); | ||
40 | MODULE_LICENSE("GPL"); | ||
41 | |||
42 | static int major; /* default is dynamic major device number */ | ||
43 | module_param(major, int, 0); | ||
44 | MODULE_PARM_DESC(major, "Major device number"); | ||
45 | |||
46 | #define GIU_TYPE1_START 0x0b000100UL | ||
47 | #define GIU_TYPE1_SIZE 0x20UL | ||
48 | |||
49 | #define GIU_TYPE2_START 0x0f000140UL | ||
50 | #define GIU_TYPE2_SIZE 0x20UL | ||
51 | |||
52 | #define GIU_TYPE3_START 0x0f000140UL | ||
53 | #define GIU_TYPE3_SIZE 0x28UL | ||
54 | |||
55 | #define GIU_PULLUPDOWN_START 0x0b0002e0UL | ||
56 | #define GIU_PULLUPDOWN_SIZE 0x04UL | ||
57 | |||
58 | #define GIUIOSELL 0x00 | ||
59 | #define GIUIOSELH 0x02 | ||
60 | #define GIUPIODL 0x04 | ||
61 | #define GIUPIODH 0x06 | ||
62 | #define GIUINTSTATL 0x08 | ||
63 | #define GIUINTSTATH 0x0a | ||
64 | #define GIUINTENL 0x0c | ||
65 | #define GIUINTENH 0x0e | ||
66 | #define GIUINTTYPL 0x10 | ||
67 | #define GIUINTTYPH 0x12 | ||
68 | #define GIUINTALSELL 0x14 | ||
69 | #define GIUINTALSELH 0x16 | ||
70 | #define GIUINTHTSELL 0x18 | ||
71 | #define GIUINTHTSELH 0x1a | ||
72 | #define GIUPODATL 0x1c | ||
73 | #define GIUPODATEN 0x1c | ||
74 | #define GIUPODATH 0x1e | ||
75 | #define PIOEN0 0x0100 | ||
76 | #define PIOEN1 0x0200 | ||
77 | #define GIUPODAT 0x1e | ||
78 | #define GIUFEDGEINHL 0x20 | ||
79 | #define GIUFEDGEINHH 0x22 | ||
80 | #define GIUREDGEINHL 0x24 | ||
81 | #define GIUREDGEINHH 0x26 | ||
82 | |||
83 | #define GIUUSEUPDN 0x1e0 | ||
84 | #define GIUTERMUPDN 0x1e2 | ||
85 | |||
86 | #define GPIO_HAS_PULLUPDOWN_IO 0x0001 | ||
87 | #define GPIO_HAS_OUTPUT_ENABLE 0x0002 | ||
88 | #define GPIO_HAS_INTERRUPT_EDGE_SELECT 0x0100 | ||
89 | |||
90 | static spinlock_t giu_lock; | ||
91 | static struct resource *giu_resource1; | ||
92 | static struct resource *giu_resource2; | ||
93 | static unsigned long giu_flags; | ||
94 | static unsigned int giu_nr_pins; | ||
95 | |||
96 | static void __iomem *giu_base; | ||
97 | |||
98 | #define giu_read(offset) readw(giu_base + (offset)) | ||
99 | #define giu_write(offset, value) writew((value), giu_base + (offset)) | ||
100 | |||
101 | #define GPIO_PIN_OF_IRQ(irq) ((irq) - GIU_IRQ_BASE) | ||
102 | #define GIUINT_HIGH_OFFSET 16 | ||
103 | #define GIUINT_HIGH_MAX 32 | ||
104 | |||
105 | static inline uint16_t giu_set(uint16_t offset, uint16_t set) | ||
106 | { | ||
107 | uint16_t data; | ||
108 | |||
109 | data = giu_read(offset); | ||
110 | data |= set; | ||
111 | giu_write(offset, data); | ||
112 | |||
113 | return data; | ||
114 | } | ||
115 | |||
116 | static inline uint16_t giu_clear(uint16_t offset, uint16_t clear) | ||
117 | { | ||
118 | uint16_t data; | ||
119 | |||
120 | data = giu_read(offset); | ||
121 | data &= ~clear; | ||
122 | giu_write(offset, data); | ||
123 | |||
124 | return data; | ||
125 | } | ||
126 | |||
127 | static unsigned int startup_giuint_low_irq(unsigned int irq) | ||
128 | { | ||
129 | unsigned int pin; | ||
130 | |||
131 | pin = GPIO_PIN_OF_IRQ(irq); | ||
132 | giu_write(GIUINTSTATL, 1 << pin); | ||
133 | giu_set(GIUINTENL, 1 << pin); | ||
134 | |||
135 | return 0; | ||
136 | } | ||
137 | |||
138 | static void shutdown_giuint_low_irq(unsigned int irq) | ||
139 | { | ||
140 | giu_clear(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq)); | ||
141 | } | ||
142 | |||
143 | static void enable_giuint_low_irq(unsigned int irq) | ||
144 | { | ||
145 | giu_set(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq)); | ||
146 | } | ||
147 | |||
148 | #define disable_giuint_low_irq shutdown_giuint_low_irq | ||
149 | |||
150 | static void ack_giuint_low_irq(unsigned int irq) | ||
151 | { | ||
152 | unsigned int pin; | ||
153 | |||
154 | pin = GPIO_PIN_OF_IRQ(irq); | ||
155 | giu_clear(GIUINTENL, 1 << pin); | ||
156 | giu_write(GIUINTSTATL, 1 << pin); | ||
157 | } | ||
158 | |||
159 | static void end_giuint_low_irq(unsigned int irq) | ||
160 | { | ||
161 | if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) | ||
162 | giu_set(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq)); | ||
163 | } | ||
164 | |||
165 | static struct hw_interrupt_type giuint_low_irq_type = { | ||
166 | .typename = "GIUINTL", | ||
167 | .startup = startup_giuint_low_irq, | ||
168 | .shutdown = shutdown_giuint_low_irq, | ||
169 | .enable = enable_giuint_low_irq, | ||
170 | .disable = disable_giuint_low_irq, | ||
171 | .ack = ack_giuint_low_irq, | ||
172 | .end = end_giuint_low_irq, | ||
173 | }; | ||
174 | |||
175 | static unsigned int startup_giuint_high_irq(unsigned int irq) | ||
176 | { | ||
177 | unsigned int pin; | ||
178 | |||
179 | pin = GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET; | ||
180 | giu_write(GIUINTSTATH, 1 << pin); | ||
181 | giu_set(GIUINTENH, 1 << pin); | ||
182 | |||
183 | return 0; | ||
184 | } | ||
185 | |||
186 | static void shutdown_giuint_high_irq(unsigned int irq) | ||
187 | { | ||
188 | giu_clear(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET)); | ||
189 | } | ||
190 | |||
191 | static void enable_giuint_high_irq(unsigned int irq) | ||
192 | { | ||
193 | giu_set(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET)); | ||
194 | } | ||
195 | |||
196 | #define disable_giuint_high_irq shutdown_giuint_high_irq | ||
197 | |||
198 | static void ack_giuint_high_irq(unsigned int irq) | ||
199 | { | ||
200 | unsigned int pin; | ||
201 | |||
202 | pin = GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET; | ||
203 | giu_clear(GIUINTENH, 1 << pin); | ||
204 | giu_write(GIUINTSTATH, 1 << pin); | ||
205 | } | ||
206 | |||
207 | static void end_giuint_high_irq(unsigned int irq) | ||
208 | { | ||
209 | if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) | ||
210 | giu_set(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET)); | ||
211 | } | ||
212 | |||
213 | static struct hw_interrupt_type giuint_high_irq_type = { | ||
214 | .typename = "GIUINTH", | ||
215 | .startup = startup_giuint_high_irq, | ||
216 | .shutdown = shutdown_giuint_high_irq, | ||
217 | .enable = enable_giuint_high_irq, | ||
218 | .disable = disable_giuint_high_irq, | ||
219 | .ack = ack_giuint_high_irq, | ||
220 | .end = end_giuint_high_irq, | ||
221 | }; | ||
222 | |||
223 | static int giu_get_irq(unsigned int irq, struct pt_regs *regs) | ||
224 | { | ||
225 | uint16_t pendl, pendh, maskl, maskh; | ||
226 | int i; | ||
227 | |||
228 | pendl = giu_read(GIUINTSTATL); | ||
229 | pendh = giu_read(GIUINTSTATH); | ||
230 | maskl = giu_read(GIUINTENL); | ||
231 | maskh = giu_read(GIUINTENH); | ||
232 | |||
233 | maskl &= pendl; | ||
234 | maskh &= pendh; | ||
235 | |||
236 | if (maskl) { | ||
237 | for (i = 0; i < 16; i++) { | ||
238 | if (maskl & (1 << i)) | ||
239 | return GIU_IRQ(i); | ||
240 | } | ||
241 | } else if (maskh) { | ||
242 | for (i = 0; i < 16; i++) { | ||
243 | if (maskh & (1 << i)) | ||
244 | return GIU_IRQ(i + GIUINT_HIGH_OFFSET); | ||
245 | } | ||
246 | } | ||
247 | |||
248 | printk(KERN_ERR "spurious GIU interrupt: %04x(%04x),%04x(%04x)\n", | ||
249 | maskl, pendl, maskh, pendh); | ||
250 | |||
251 | atomic_inc(&irq_err_count); | ||
252 | |||
253 | return -EINVAL; | ||
254 | } | ||
255 | |||
256 | void vr41xx_set_irq_trigger(unsigned int pin, irq_trigger_t trigger, irq_signal_t signal) | ||
257 | { | ||
258 | uint16_t mask; | ||
259 | |||
260 | if (pin < GIUINT_HIGH_OFFSET) { | ||
261 | mask = 1 << pin; | ||
262 | if (trigger != IRQ_TRIGGER_LEVEL) { | ||
263 | giu_set(GIUINTTYPL, mask); | ||
264 | if (signal == IRQ_SIGNAL_HOLD) | ||
265 | giu_set(GIUINTHTSELL, mask); | ||
266 | else | ||
267 | giu_clear(GIUINTHTSELL, mask); | ||
268 | if (current_cpu_data.cputype == CPU_VR4133) { | ||
269 | switch (trigger) { | ||
270 | case IRQ_TRIGGER_EDGE_FALLING: | ||
271 | giu_set(GIUFEDGEINHL, mask); | ||
272 | giu_clear(GIUREDGEINHL, mask); | ||
273 | break; | ||
274 | case IRQ_TRIGGER_EDGE_RISING: | ||
275 | giu_clear(GIUFEDGEINHL, mask); | ||
276 | giu_set(GIUREDGEINHL, mask); | ||
277 | break; | ||
278 | default: | ||
279 | giu_set(GIUFEDGEINHL, mask); | ||
280 | giu_set(GIUREDGEINHL, mask); | ||
281 | break; | ||
282 | } | ||
283 | } | ||
284 | } else { | ||
285 | giu_clear(GIUINTTYPL, mask); | ||
286 | giu_clear(GIUINTHTSELL, mask); | ||
287 | } | ||
288 | giu_write(GIUINTSTATL, mask); | ||
289 | } else if (pin < GIUINT_HIGH_MAX) { | ||
290 | mask = 1 << (pin - GIUINT_HIGH_OFFSET); | ||
291 | if (trigger != IRQ_TRIGGER_LEVEL) { | ||
292 | giu_set(GIUINTTYPH, mask); | ||
293 | if (signal == IRQ_SIGNAL_HOLD) | ||
294 | giu_set(GIUINTHTSELH, mask); | ||
295 | else | ||
296 | giu_clear(GIUINTHTSELH, mask); | ||
297 | if (current_cpu_data.cputype == CPU_VR4133) { | ||
298 | switch (trigger) { | ||
299 | case IRQ_TRIGGER_EDGE_FALLING: | ||
300 | giu_set(GIUFEDGEINHH, mask); | ||
301 | giu_clear(GIUREDGEINHH, mask); | ||
302 | break; | ||
303 | case IRQ_TRIGGER_EDGE_RISING: | ||
304 | giu_clear(GIUFEDGEINHH, mask); | ||
305 | giu_set(GIUREDGEINHH, mask); | ||
306 | break; | ||
307 | default: | ||
308 | giu_set(GIUFEDGEINHH, mask); | ||
309 | giu_set(GIUREDGEINHH, mask); | ||
310 | break; | ||
311 | } | ||
312 | } | ||
313 | } else { | ||
314 | giu_clear(GIUINTTYPH, mask); | ||
315 | giu_clear(GIUINTHTSELH, mask); | ||
316 | } | ||
317 | giu_write(GIUINTSTATH, mask); | ||
318 | } | ||
319 | } | ||
320 | |||
321 | EXPORT_SYMBOL_GPL(vr41xx_set_irq_trigger); | ||
322 | |||
323 | void vr41xx_set_irq_level(unsigned int pin, irq_level_t level) | ||
324 | { | ||
325 | uint16_t mask; | ||
326 | |||
327 | if (pin < GIUINT_HIGH_OFFSET) { | ||
328 | mask = 1 << pin; | ||
329 | if (level == IRQ_LEVEL_HIGH) | ||
330 | giu_set(GIUINTALSELL, mask); | ||
331 | else | ||
332 | giu_clear(GIUINTALSELL, mask); | ||
333 | giu_write(GIUINTSTATL, mask); | ||
334 | } else if (pin < GIUINT_HIGH_MAX) { | ||
335 | mask = 1 << (pin - GIUINT_HIGH_OFFSET); | ||
336 | if (level == IRQ_LEVEL_HIGH) | ||
337 | giu_set(GIUINTALSELH, mask); | ||
338 | else | ||
339 | giu_clear(GIUINTALSELH, mask); | ||
340 | giu_write(GIUINTSTATH, mask); | ||
341 | } | ||
342 | } | ||
343 | |||
344 | EXPORT_SYMBOL_GPL(vr41xx_set_irq_level); | ||
345 | |||
346 | gpio_data_t vr41xx_gpio_get_pin(unsigned int pin) | ||
347 | { | ||
348 | uint16_t reg, mask; | ||
349 | |||
350 | if (pin >= giu_nr_pins) | ||
351 | return GPIO_DATA_INVAL; | ||
352 | |||
353 | if (pin < 16) { | ||
354 | reg = giu_read(GIUPIODL); | ||
355 | mask = (uint16_t)1 << pin; | ||
356 | } else if (pin < 32) { | ||
357 | reg = giu_read(GIUPIODH); | ||
358 | mask = (uint16_t)1 << (pin - 16); | ||
359 | } else if (pin < 48) { | ||
360 | reg = giu_read(GIUPODATL); | ||
361 | mask = (uint16_t)1 << (pin - 32); | ||
362 | } else { | ||
363 | reg = giu_read(GIUPODATH); | ||
364 | mask = (uint16_t)1 << (pin - 48); | ||
365 | } | ||
366 | |||
367 | if (reg & mask) | ||
368 | return GPIO_DATA_HIGH; | ||
369 | |||
370 | return GPIO_DATA_LOW; | ||
371 | } | ||
372 | |||
373 | EXPORT_SYMBOL_GPL(vr41xx_gpio_get_pin); | ||
374 | |||
375 | int vr41xx_gpio_set_pin(unsigned int pin, gpio_data_t data) | ||
376 | { | ||
377 | uint16_t offset, mask, reg; | ||
378 | unsigned long flags; | ||
379 | |||
380 | if (pin >= giu_nr_pins) | ||
381 | return -EINVAL; | ||
382 | |||
383 | if (pin < 16) { | ||
384 | offset = GIUPIODL; | ||
385 | mask = (uint16_t)1 << pin; | ||
386 | } else if (pin < 32) { | ||
387 | offset = GIUPIODH; | ||
388 | mask = (uint16_t)1 << (pin - 16); | ||
389 | } else if (pin < 48) { | ||
390 | offset = GIUPODATL; | ||
391 | mask = (uint16_t)1 << (pin - 32); | ||
392 | } else { | ||
393 | offset = GIUPODATH; | ||
394 | mask = (uint16_t)1 << (pin - 48); | ||
395 | } | ||
396 | |||
397 | spin_lock_irqsave(&giu_lock, flags); | ||
398 | |||
399 | reg = giu_read(offset); | ||
400 | if (data == GPIO_DATA_HIGH) | ||
401 | reg |= mask; | ||
402 | else | ||
403 | reg &= ~mask; | ||
404 | giu_write(offset, reg); | ||
405 | |||
406 | spin_unlock_irqrestore(&giu_lock, flags); | ||
407 | |||
408 | return 0; | ||
409 | } | ||
410 | |||
411 | EXPORT_SYMBOL_GPL(vr41xx_gpio_set_pin); | ||
412 | |||
413 | int vr41xx_gpio_set_direction(unsigned int pin, gpio_direction_t dir) | ||
414 | { | ||
415 | uint16_t offset, mask, reg; | ||
416 | unsigned long flags; | ||
417 | |||
418 | if (pin >= giu_nr_pins) | ||
419 | return -EINVAL; | ||
420 | |||
421 | if (pin < 16) { | ||
422 | offset = GIUIOSELL; | ||
423 | mask = (uint16_t)1 << pin; | ||
424 | } else if (pin < 32) { | ||
425 | offset = GIUIOSELH; | ||
426 | mask = (uint16_t)1 << (pin - 16); | ||
427 | } else { | ||
428 | if (giu_flags & GPIO_HAS_OUTPUT_ENABLE) { | ||
429 | offset = GIUPODATEN; | ||
430 | mask = (uint16_t)1 << (pin - 32); | ||
431 | } else { | ||
432 | switch (pin) { | ||
433 | case 48: | ||
434 | offset = GIUPODATH; | ||
435 | mask = PIOEN0; | ||
436 | break; | ||
437 | case 49: | ||
438 | offset = GIUPODATH; | ||
439 | mask = PIOEN1; | ||
440 | break; | ||
441 | default: | ||
442 | return -EINVAL; | ||
443 | } | ||
444 | } | ||
445 | } | ||
446 | |||
447 | spin_lock_irqsave(&giu_lock, flags); | ||
448 | |||
449 | reg = giu_read(offset); | ||
450 | if (dir == GPIO_OUTPUT) | ||
451 | reg |= mask; | ||
452 | else | ||
453 | reg &= ~mask; | ||
454 | giu_write(offset, reg); | ||
455 | |||
456 | spin_unlock_irqrestore(&giu_lock, flags); | ||
457 | |||
458 | return 0; | ||
459 | } | ||
460 | |||
461 | EXPORT_SYMBOL_GPL(vr41xx_gpio_set_direction); | ||
462 | |||
463 | int vr41xx_gpio_pullupdown(unsigned int pin, gpio_pull_t pull) | ||
464 | { | ||
465 | uint16_t reg, mask; | ||
466 | unsigned long flags; | ||
467 | |||
468 | if ((giu_flags & GPIO_HAS_PULLUPDOWN_IO) != GPIO_HAS_PULLUPDOWN_IO) | ||
469 | return -EPERM; | ||
470 | |||
471 | if (pin >= 15) | ||
472 | return -EINVAL; | ||
473 | |||
474 | mask = (uint16_t)1 << pin; | ||
475 | |||
476 | spin_lock_irqsave(&giu_lock, flags); | ||
477 | |||
478 | if (pull == GPIO_PULL_UP || pull == GPIO_PULL_DOWN) { | ||
479 | reg = giu_read(GIUTERMUPDN); | ||
480 | if (pull == GPIO_PULL_UP) | ||
481 | reg |= mask; | ||
482 | else | ||
483 | reg &= ~mask; | ||
484 | giu_write(GIUTERMUPDN, reg); | ||
485 | |||
486 | reg = giu_read(GIUUSEUPDN); | ||
487 | reg |= mask; | ||
488 | giu_write(GIUUSEUPDN, reg); | ||
489 | } else { | ||
490 | reg = giu_read(GIUUSEUPDN); | ||
491 | reg &= ~mask; | ||
492 | giu_write(GIUUSEUPDN, reg); | ||
493 | } | ||
494 | |||
495 | spin_unlock_irqrestore(&giu_lock, flags); | ||
496 | |||
497 | return 0; | ||
498 | } | ||
499 | |||
500 | EXPORT_SYMBOL_GPL(vr41xx_gpio_pullupdown); | ||
501 | |||
502 | static ssize_t gpio_read(struct file *file, char __user *buf, size_t len, | ||
503 | loff_t *ppos) | ||
504 | { | ||
505 | unsigned int pin; | ||
506 | char value = '0'; | ||
507 | |||
508 | pin = iminor(file->f_dentry->d_inode); | ||
509 | if (pin >= giu_nr_pins) | ||
510 | return -EBADF; | ||
511 | |||
512 | if (vr41xx_gpio_get_pin(pin) == GPIO_DATA_HIGH) | ||
513 | value = '1'; | ||
514 | |||
515 | if (len <= 0) | ||
516 | return -EFAULT; | ||
517 | |||
518 | if (put_user(value, buf)) | ||
519 | return -EFAULT; | ||
520 | |||
521 | return 1; | ||
522 | } | ||
523 | |||
524 | static ssize_t gpio_write(struct file *file, const char __user *data, | ||
525 | size_t len, loff_t *ppos) | ||
526 | { | ||
527 | unsigned int pin; | ||
528 | size_t i; | ||
529 | char c; | ||
530 | int retval = 0; | ||
531 | |||
532 | pin = iminor(file->f_dentry->d_inode); | ||
533 | if (pin >= giu_nr_pins) | ||
534 | return -EBADF; | ||
535 | |||
536 | for (i = 0; i < len; i++) { | ||
537 | if (get_user(c, data + i)) | ||
538 | return -EFAULT; | ||
539 | |||
540 | switch (c) { | ||
541 | case '0': | ||
542 | retval = vr41xx_gpio_set_pin(pin, GPIO_DATA_LOW); | ||
543 | break; | ||
544 | case '1': | ||
545 | retval = vr41xx_gpio_set_pin(pin, GPIO_DATA_HIGH); | ||
546 | break; | ||
547 | case 'D': | ||
548 | printk(KERN_INFO "GPIO%d: pull down\n", pin); | ||
549 | retval = vr41xx_gpio_pullupdown(pin, GPIO_PULL_DOWN); | ||
550 | break; | ||
551 | case 'd': | ||
552 | printk(KERN_INFO "GPIO%d: pull up/down disable\n", pin); | ||
553 | retval = vr41xx_gpio_pullupdown(pin, GPIO_PULL_DISABLE); | ||
554 | break; | ||
555 | case 'I': | ||
556 | printk(KERN_INFO "GPIO%d: input\n", pin); | ||
557 | retval = vr41xx_gpio_set_direction(pin, GPIO_INPUT); | ||
558 | break; | ||
559 | case 'O': | ||
560 | printk(KERN_INFO "GPIO%d: output\n", pin); | ||
561 | retval = vr41xx_gpio_set_direction(pin, GPIO_OUTPUT); | ||
562 | break; | ||
563 | case 'o': | ||
564 | printk(KERN_INFO "GPIO%d: output disable\n", pin); | ||
565 | retval = vr41xx_gpio_set_direction(pin, GPIO_OUTPUT_DISABLE); | ||
566 | break; | ||
567 | case 'P': | ||
568 | printk(KERN_INFO "GPIO%d: pull up\n", pin); | ||
569 | retval = vr41xx_gpio_pullupdown(pin, GPIO_PULL_UP); | ||
570 | break; | ||
571 | case 'p': | ||
572 | printk(KERN_INFO "GPIO%d: pull up/down disable\n", pin); | ||
573 | retval = vr41xx_gpio_pullupdown(pin, GPIO_PULL_DISABLE); | ||
574 | break; | ||
575 | default: | ||
576 | break; | ||
577 | } | ||
578 | |||
579 | if (retval < 0) | ||
580 | break; | ||
581 | } | ||
582 | |||
583 | return i; | ||
584 | } | ||
585 | |||
586 | static int gpio_open(struct inode *inode, struct file *file) | ||
587 | { | ||
588 | unsigned int pin; | ||
589 | |||
590 | pin = iminor(inode); | ||
591 | if (pin >= giu_nr_pins) | ||
592 | return -EBADF; | ||
593 | |||
594 | return nonseekable_open(inode, file); | ||
595 | } | ||
596 | |||
597 | static int gpio_release(struct inode *inode, struct file *file) | ||
598 | { | ||
599 | unsigned int pin; | ||
600 | |||
601 | pin = iminor(inode); | ||
602 | if (pin >= giu_nr_pins) | ||
603 | return -EBADF; | ||
604 | |||
605 | return 0; | ||
606 | } | ||
607 | |||
608 | static struct file_operations gpio_fops = { | ||
609 | .owner = THIS_MODULE, | ||
610 | .read = gpio_read, | ||
611 | .write = gpio_write, | ||
612 | .open = gpio_open, | ||
613 | .release = gpio_release, | ||
614 | }; | ||
615 | |||
616 | static int giu_probe(struct device *dev) | ||
617 | { | ||
618 | unsigned long start, size, flags = 0; | ||
619 | unsigned int nr_pins = 0; | ||
620 | struct resource *res1, *res2 = NULL; | ||
621 | void *base; | ||
622 | int retval, i; | ||
623 | |||
624 | switch (current_cpu_data.cputype) { | ||
625 | case CPU_VR4111: | ||
626 | case CPU_VR4121: | ||
627 | start = GIU_TYPE1_START; | ||
628 | size = GIU_TYPE1_SIZE; | ||
629 | flags = GPIO_HAS_PULLUPDOWN_IO; | ||
630 | nr_pins = 50; | ||
631 | break; | ||
632 | case CPU_VR4122: | ||
633 | case CPU_VR4131: | ||
634 | start = GIU_TYPE2_START; | ||
635 | size = GIU_TYPE2_SIZE; | ||
636 | nr_pins = 36; | ||
637 | break; | ||
638 | case CPU_VR4133: | ||
639 | start = GIU_TYPE3_START; | ||
640 | size = GIU_TYPE3_SIZE; | ||
641 | flags = GPIO_HAS_INTERRUPT_EDGE_SELECT; | ||
642 | nr_pins = 48; | ||
643 | break; | ||
644 | default: | ||
645 | return -ENODEV; | ||
646 | } | ||
647 | |||
648 | res1 = request_mem_region(start, size, "GIU"); | ||
649 | if (res1 == NULL) | ||
650 | return -EBUSY; | ||
651 | |||
652 | base = ioremap(start, size); | ||
653 | if (base == NULL) { | ||
654 | release_resource(res1); | ||
655 | return -ENOMEM; | ||
656 | } | ||
657 | |||
658 | if (flags & GPIO_HAS_PULLUPDOWN_IO) { | ||
659 | res2 = request_mem_region(GIU_PULLUPDOWN_START, GIU_PULLUPDOWN_SIZE, "GIU"); | ||
660 | if (res2 == NULL) { | ||
661 | iounmap(base); | ||
662 | release_resource(res1); | ||
663 | return -EBUSY; | ||
664 | } | ||
665 | } | ||
666 | |||
667 | retval = register_chrdev(major, "GIU", &gpio_fops); | ||
668 | if (retval < 0) { | ||
669 | iounmap(base); | ||
670 | release_resource(res1); | ||
671 | release_resource(res2); | ||
672 | return retval; | ||
673 | } | ||
674 | |||
675 | if (major == 0) { | ||
676 | major = retval; | ||
677 | printk(KERN_INFO "GIU: major number %d\n", major); | ||
678 | } | ||
679 | |||
680 | spin_lock_init(&giu_lock); | ||
681 | giu_base = base; | ||
682 | giu_resource1 = res1; | ||
683 | giu_resource2 = res2; | ||
684 | giu_flags = flags; | ||
685 | giu_nr_pins = nr_pins; | ||
686 | |||
687 | giu_write(GIUINTENL, 0); | ||
688 | giu_write(GIUINTENH, 0); | ||
689 | |||
690 | for (i = GIU_IRQ_BASE; i <= GIU_IRQ_LAST; i++) { | ||
691 | if (i < GIU_IRQ(GIUINT_HIGH_OFFSET)) | ||
692 | irq_desc[i].handler = &giuint_low_irq_type; | ||
693 | else | ||
694 | irq_desc[i].handler = &giuint_high_irq_type; | ||
695 | } | ||
696 | |||
697 | return cascade_irq(GIUINT_IRQ, giu_get_irq); | ||
698 | } | ||
699 | |||
700 | static int giu_remove(struct device *dev) | ||
701 | { | ||
702 | iounmap(giu_base); | ||
703 | |||
704 | release_resource(giu_resource1); | ||
705 | if (giu_flags & GPIO_HAS_PULLUPDOWN_IO) | ||
706 | release_resource(giu_resource2); | ||
707 | |||
708 | return 0; | ||
709 | } | ||
710 | |||
711 | static struct platform_device *giu_platform_device; | ||
712 | |||
713 | static struct device_driver giu_device_driver = { | ||
714 | .name = "GIU", | ||
715 | .bus = &platform_bus_type, | ||
716 | .probe = giu_probe, | ||
717 | .remove = giu_remove, | ||
718 | }; | ||
719 | |||
720 | static int __devinit vr41xx_giu_init(void) | ||
721 | { | ||
722 | int retval; | ||
723 | |||
724 | giu_platform_device = platform_device_register_simple("GIU", -1, NULL, 0); | ||
725 | if (IS_ERR(giu_platform_device)) | ||
726 | return PTR_ERR(giu_platform_device); | ||
727 | |||
728 | retval = driver_register(&giu_device_driver); | ||
729 | if (retval < 0) | ||
730 | platform_device_unregister(giu_platform_device); | ||
731 | |||
732 | return retval; | ||
733 | } | ||
734 | |||
735 | static void __devexit vr41xx_giu_exit(void) | ||
736 | { | ||
737 | driver_unregister(&giu_device_driver); | ||
738 | |||
739 | platform_device_unregister(giu_platform_device); | ||
740 | } | ||
741 | |||
742 | module_init(vr41xx_giu_init); | ||
743 | module_exit(vr41xx_giu_exit); | ||
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig index 3ac0a535b4aa..0273f124a4f7 100644 --- a/drivers/ide/Kconfig +++ b/drivers/ide/Kconfig | |||
@@ -672,8 +672,8 @@ config BLK_DEV_SVWKS | |||
672 | chipsets. | 672 | chipsets. |
673 | 673 | ||
674 | config BLK_DEV_SGIIOC4 | 674 | config BLK_DEV_SGIIOC4 |
675 | tristate "Silicon Graphics IOC4 chipset support" | 675 | tristate "Silicon Graphics IOC4 chipset ATA/ATAPI support" |
676 | depends on IA64_SGI_SN2 || IA64_GENERIC | 676 | depends on (IA64_SGI_SN2 || IA64_GENERIC) && SGI_IOC4 |
677 | help | 677 | help |
678 | This driver adds PIO & MultiMode DMA-2 support for the SGI IOC4 | 678 | This driver adds PIO & MultiMode DMA-2 support for the SGI IOC4 |
679 | chipset, which has one channel and can support two devices. | 679 | chipset, which has one channel and can support two devices. |
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c index 4651a22bf12e..af526b671c4e 100644 --- a/drivers/ide/pci/sgiioc4.c +++ b/drivers/ide/pci/sgiioc4.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <linux/mm.h> | 34 | #include <linux/mm.h> |
35 | #include <linux/ioport.h> | 35 | #include <linux/ioport.h> |
36 | #include <linux/blkdev.h> | 36 | #include <linux/blkdev.h> |
37 | #include <linux/ioc4_common.h> | 37 | #include <linux/ioc4.h> |
38 | #include <asm/io.h> | 38 | #include <asm/io.h> |
39 | 39 | ||
40 | #include <linux/ide.h> | 40 | #include <linux/ide.h> |
@@ -715,14 +715,34 @@ static ide_pci_device_t sgiioc4_chipsets[] __devinitdata = { | |||
715 | }; | 715 | }; |
716 | 716 | ||
717 | int | 717 | int |
718 | ioc4_ide_attach_one(struct pci_dev *dev, const struct pci_device_id *id) | 718 | ioc4_ide_attach_one(struct ioc4_driver_data *idd) |
719 | { | 719 | { |
720 | return pci_init_sgiioc4(dev, &sgiioc4_chipsets[id->driver_data]); | 720 | return pci_init_sgiioc4(idd->idd_pdev, |
721 | &sgiioc4_chipsets[idd->idd_pci_id->driver_data]); | ||
721 | } | 722 | } |
722 | 723 | ||
724 | static struct ioc4_submodule ioc4_ide_submodule = { | ||
725 | .is_name = "IOC4_ide", | ||
726 | .is_owner = THIS_MODULE, | ||
727 | .is_probe = ioc4_ide_attach_one, | ||
728 | /* .is_remove = ioc4_ide_remove_one, */ | ||
729 | }; | ||
730 | |||
731 | static int __devinit | ||
732 | ioc4_ide_init(void) | ||
733 | { | ||
734 | return ioc4_register_submodule(&ioc4_ide_submodule); | ||
735 | } | ||
736 | |||
737 | static void __devexit | ||
738 | ioc4_ide_exit(void) | ||
739 | { | ||
740 | ioc4_unregister_submodule(&ioc4_ide_submodule); | ||
741 | } | ||
742 | |||
743 | module_init(ioc4_ide_init); | ||
744 | module_exit(ioc4_ide_exit); | ||
723 | 745 | ||
724 | MODULE_AUTHOR("Aniket Malatpure - Silicon Graphics Inc. (SGI)"); | 746 | MODULE_AUTHOR("Aniket Malatpure - Silicon Graphics Inc. (SGI)"); |
725 | MODULE_DESCRIPTION("IDE PCI driver module for SGI IOC4 Base-IO Card"); | 747 | MODULE_DESCRIPTION("IDE PCI driver module for SGI IOC4 Base-IO Card"); |
726 | MODULE_LICENSE("GPL"); | 748 | MODULE_LICENSE("GPL"); |
727 | |||
728 | EXPORT_SYMBOL(ioc4_ide_attach_one); | ||
diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c index 9b8ff396e6f8..e152d0fa0cdd 100644 --- a/drivers/input/gameport/gameport.c +++ b/drivers/input/gameport/gameport.c | |||
@@ -134,7 +134,7 @@ static int gameport_measure_speed(struct gameport *gameport) | |||
134 | } | 134 | } |
135 | 135 | ||
136 | gameport_close(gameport); | 136 | gameport_close(gameport); |
137 | return (cpu_data[_smp_processor_id()].loops_per_jiffy * (unsigned long)HZ / (1000 / 50)) / (tx < 1 ? 1 : tx); | 137 | return (cpu_data[raw_smp_processor_id()].loops_per_jiffy * (unsigned long)HZ / (1000 / 50)) / (tx < 1 ? 1 : tx); |
138 | 138 | ||
139 | #else | 139 | #else |
140 | 140 | ||
diff --git a/drivers/md/Makefile b/drivers/md/Makefile index 90de9c146a5f..d3efedf6a6ad 100644 --- a/drivers/md/Makefile +++ b/drivers/md/Makefile | |||
@@ -7,6 +7,7 @@ dm-mod-objs := dm.o dm-table.o dm-target.o dm-linear.o dm-stripe.o \ | |||
7 | dm-multipath-objs := dm-hw-handler.o dm-path-selector.o dm-mpath.o | 7 | dm-multipath-objs := dm-hw-handler.o dm-path-selector.o dm-mpath.o |
8 | dm-snapshot-objs := dm-snap.o dm-exception-store.o | 8 | dm-snapshot-objs := dm-snap.o dm-exception-store.o |
9 | dm-mirror-objs := dm-log.o dm-raid1.o | 9 | dm-mirror-objs := dm-log.o dm-raid1.o |
10 | md-mod-objs := md.o bitmap.o | ||
10 | raid6-objs := raid6main.o raid6algos.o raid6recov.o raid6tables.o \ | 11 | raid6-objs := raid6main.o raid6algos.o raid6recov.o raid6tables.o \ |
11 | raid6int1.o raid6int2.o raid6int4.o \ | 12 | raid6int1.o raid6int2.o raid6int4.o \ |
12 | raid6int8.o raid6int16.o raid6int32.o \ | 13 | raid6int8.o raid6int16.o raid6int32.o \ |
@@ -28,7 +29,7 @@ obj-$(CONFIG_MD_RAID5) += raid5.o xor.o | |||
28 | obj-$(CONFIG_MD_RAID6) += raid6.o xor.o | 29 | obj-$(CONFIG_MD_RAID6) += raid6.o xor.o |
29 | obj-$(CONFIG_MD_MULTIPATH) += multipath.o | 30 | obj-$(CONFIG_MD_MULTIPATH) += multipath.o |
30 | obj-$(CONFIG_MD_FAULTY) += faulty.o | 31 | obj-$(CONFIG_MD_FAULTY) += faulty.o |
31 | obj-$(CONFIG_BLK_DEV_MD) += md.o | 32 | obj-$(CONFIG_BLK_DEV_MD) += md-mod.o |
32 | obj-$(CONFIG_BLK_DEV_DM) += dm-mod.o | 33 | obj-$(CONFIG_BLK_DEV_DM) += dm-mod.o |
33 | obj-$(CONFIG_DM_CRYPT) += dm-crypt.o | 34 | obj-$(CONFIG_DM_CRYPT) += dm-crypt.o |
34 | obj-$(CONFIG_DM_MULTIPATH) += dm-multipath.o dm-round-robin.o | 35 | obj-$(CONFIG_DM_MULTIPATH) += dm-multipath.o dm-round-robin.o |
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c new file mode 100644 index 000000000000..95980ad6b27b --- /dev/null +++ b/drivers/md/bitmap.c | |||
@@ -0,0 +1,1586 @@ | |||
1 | /* | ||
2 | * bitmap.c two-level bitmap (C) Peter T. Breuer (ptb@ot.uc3m.es) 2003 | ||
3 | * | ||
4 | * bitmap_create - sets up the bitmap structure | ||
5 | * bitmap_destroy - destroys the bitmap structure | ||
6 | * | ||
7 | * additions, Copyright (C) 2003-2004, Paul Clements, SteelEye Technology, Inc.: | ||
8 | * - added disk storage for bitmap | ||
9 | * - changes to allow various bitmap chunk sizes | ||
10 | * - added bitmap daemon (to asynchronously clear bitmap bits from disk) | ||
11 | */ | ||
12 | |||
13 | /* | ||
14 | * Still to do: | ||
15 | * | ||
16 | * flush after percent set rather than just time based. (maybe both). | ||
17 | * wait if count gets too high, wake when it drops to half. | ||
18 | * allow bitmap to be mirrored with superblock (before or after...) | ||
19 | * allow hot-add to re-instate a current device. | ||
20 | * allow hot-add of bitmap after quiessing device | ||
21 | */ | ||
22 | |||
23 | #include <linux/module.h> | ||
24 | #include <linux/version.h> | ||
25 | #include <linux/errno.h> | ||
26 | #include <linux/slab.h> | ||
27 | #include <linux/init.h> | ||
28 | #include <linux/config.h> | ||
29 | #include <linux/timer.h> | ||
30 | #include <linux/sched.h> | ||
31 | #include <linux/list.h> | ||
32 | #include <linux/file.h> | ||
33 | #include <linux/mount.h> | ||
34 | #include <linux/buffer_head.h> | ||
35 | #include <linux/raid/md.h> | ||
36 | #include <linux/raid/bitmap.h> | ||
37 | |||
38 | /* debug macros */ | ||
39 | |||
40 | #define DEBUG 0 | ||
41 | |||
42 | #if DEBUG | ||
43 | /* these are for debugging purposes only! */ | ||
44 | |||
45 | /* define one and only one of these */ | ||
46 | #define INJECT_FAULTS_1 0 /* cause bitmap_alloc_page to fail always */ | ||
47 | #define INJECT_FAULTS_2 0 /* cause bitmap file to be kicked when first bit set*/ | ||
48 | #define INJECT_FAULTS_3 0 /* treat bitmap file as kicked at init time */ | ||
49 | #define INJECT_FAULTS_4 0 /* undef */ | ||
50 | #define INJECT_FAULTS_5 0 /* undef */ | ||
51 | #define INJECT_FAULTS_6 0 | ||
52 | |||
53 | /* if these are defined, the driver will fail! debug only */ | ||
54 | #define INJECT_FATAL_FAULT_1 0 /* fail kmalloc, causing bitmap_create to fail */ | ||
55 | #define INJECT_FATAL_FAULT_2 0 /* undef */ | ||
56 | #define INJECT_FATAL_FAULT_3 0 /* undef */ | ||
57 | #endif | ||
58 | |||
59 | //#define DPRINTK PRINTK /* set this NULL to avoid verbose debug output */ | ||
60 | #define DPRINTK(x...) do { } while(0) | ||
61 | |||
62 | #ifndef PRINTK | ||
63 | # if DEBUG > 0 | ||
64 | # define PRINTK(x...) printk(KERN_DEBUG x) | ||
65 | # else | ||
66 | # define PRINTK(x...) | ||
67 | # endif | ||
68 | #endif | ||
69 | |||
70 | static inline char * bmname(struct bitmap *bitmap) | ||
71 | { | ||
72 | return bitmap->mddev ? mdname(bitmap->mddev) : "mdX"; | ||
73 | } | ||
74 | |||
75 | |||
76 | /* | ||
77 | * test if the bitmap is active | ||
78 | */ | ||
79 | int bitmap_active(struct bitmap *bitmap) | ||
80 | { | ||
81 | unsigned long flags; | ||
82 | int res = 0; | ||
83 | |||
84 | if (!bitmap) | ||
85 | return res; | ||
86 | spin_lock_irqsave(&bitmap->lock, flags); | ||
87 | res = bitmap->flags & BITMAP_ACTIVE; | ||
88 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
89 | return res; | ||
90 | } | ||
91 | |||
92 | #define WRITE_POOL_SIZE 256 | ||
93 | /* mempool for queueing pending writes on the bitmap file */ | ||
94 | static void *write_pool_alloc(unsigned int gfp_flags, void *data) | ||
95 | { | ||
96 | return kmalloc(sizeof(struct page_list), gfp_flags); | ||
97 | } | ||
98 | |||
99 | static void write_pool_free(void *ptr, void *data) | ||
100 | { | ||
101 | kfree(ptr); | ||
102 | } | ||
103 | |||
104 | /* | ||
105 | * just a placeholder - calls kmalloc for bitmap pages | ||
106 | */ | ||
107 | static unsigned char *bitmap_alloc_page(struct bitmap *bitmap) | ||
108 | { | ||
109 | unsigned char *page; | ||
110 | |||
111 | #if INJECT_FAULTS_1 | ||
112 | page = NULL; | ||
113 | #else | ||
114 | page = kmalloc(PAGE_SIZE, GFP_NOIO); | ||
115 | #endif | ||
116 | if (!page) | ||
117 | printk("%s: bitmap_alloc_page FAILED\n", bmname(bitmap)); | ||
118 | else | ||
119 | PRINTK("%s: bitmap_alloc_page: allocated page at %p\n", | ||
120 | bmname(bitmap), page); | ||
121 | return page; | ||
122 | } | ||
123 | |||
124 | /* | ||
125 | * for now just a placeholder -- just calls kfree for bitmap pages | ||
126 | */ | ||
127 | static void bitmap_free_page(struct bitmap *bitmap, unsigned char *page) | ||
128 | { | ||
129 | PRINTK("%s: bitmap_free_page: free page %p\n", bmname(bitmap), page); | ||
130 | kfree(page); | ||
131 | } | ||
132 | |||
133 | /* | ||
134 | * check a page and, if necessary, allocate it (or hijack it if the alloc fails) | ||
135 | * | ||
136 | * 1) check to see if this page is allocated, if it's not then try to alloc | ||
137 | * 2) if the alloc fails, set the page's hijacked flag so we'll use the | ||
138 | * page pointer directly as a counter | ||
139 | * | ||
140 | * if we find our page, we increment the page's refcount so that it stays | ||
141 | * allocated while we're using it | ||
142 | */ | ||
143 | static int bitmap_checkpage(struct bitmap *bitmap, unsigned long page, int create) | ||
144 | { | ||
145 | unsigned char *mappage; | ||
146 | |||
147 | if (page >= bitmap->pages) { | ||
148 | printk(KERN_ALERT | ||
149 | "%s: invalid bitmap page request: %lu (> %lu)\n", | ||
150 | bmname(bitmap), page, bitmap->pages-1); | ||
151 | return -EINVAL; | ||
152 | } | ||
153 | |||
154 | |||
155 | if (bitmap->bp[page].hijacked) /* it's hijacked, don't try to alloc */ | ||
156 | return 0; | ||
157 | |||
158 | if (bitmap->bp[page].map) /* page is already allocated, just return */ | ||
159 | return 0; | ||
160 | |||
161 | if (!create) | ||
162 | return -ENOENT; | ||
163 | |||
164 | spin_unlock_irq(&bitmap->lock); | ||
165 | |||
166 | /* this page has not been allocated yet */ | ||
167 | |||
168 | if ((mappage = bitmap_alloc_page(bitmap)) == NULL) { | ||
169 | PRINTK("%s: bitmap map page allocation failed, hijacking\n", | ||
170 | bmname(bitmap)); | ||
171 | /* failed - set the hijacked flag so that we can use the | ||
172 | * pointer as a counter */ | ||
173 | spin_lock_irq(&bitmap->lock); | ||
174 | if (!bitmap->bp[page].map) | ||
175 | bitmap->bp[page].hijacked = 1; | ||
176 | goto out; | ||
177 | } | ||
178 | |||
179 | /* got a page */ | ||
180 | |||
181 | spin_lock_irq(&bitmap->lock); | ||
182 | |||
183 | /* recheck the page */ | ||
184 | |||
185 | if (bitmap->bp[page].map || bitmap->bp[page].hijacked) { | ||
186 | /* somebody beat us to getting the page */ | ||
187 | bitmap_free_page(bitmap, mappage); | ||
188 | return 0; | ||
189 | } | ||
190 | |||
191 | /* no page was in place and we have one, so install it */ | ||
192 | |||
193 | memset(mappage, 0, PAGE_SIZE); | ||
194 | bitmap->bp[page].map = mappage; | ||
195 | bitmap->missing_pages--; | ||
196 | out: | ||
197 | return 0; | ||
198 | } | ||
199 | |||
200 | |||
201 | /* if page is completely empty, put it back on the free list, or dealloc it */ | ||
202 | /* if page was hijacked, unmark the flag so it might get alloced next time */ | ||
203 | /* Note: lock should be held when calling this */ | ||
204 | static inline void bitmap_checkfree(struct bitmap *bitmap, unsigned long page) | ||
205 | { | ||
206 | char *ptr; | ||
207 | |||
208 | if (bitmap->bp[page].count) /* page is still busy */ | ||
209 | return; | ||
210 | |||
211 | /* page is no longer in use, it can be released */ | ||
212 | |||
213 | if (bitmap->bp[page].hijacked) { /* page was hijacked, undo this now */ | ||
214 | bitmap->bp[page].hijacked = 0; | ||
215 | bitmap->bp[page].map = NULL; | ||
216 | return; | ||
217 | } | ||
218 | |||
219 | /* normal case, free the page */ | ||
220 | |||
221 | #if 0 | ||
222 | /* actually ... let's not. We will probably need the page again exactly when | ||
223 | * memory is tight and we are flusing to disk | ||
224 | */ | ||
225 | return; | ||
226 | #else | ||
227 | ptr = bitmap->bp[page].map; | ||
228 | bitmap->bp[page].map = NULL; | ||
229 | bitmap->missing_pages++; | ||
230 | bitmap_free_page(bitmap, ptr); | ||
231 | return; | ||
232 | #endif | ||
233 | } | ||
234 | |||
235 | |||
236 | /* | ||
237 | * bitmap file handling - read and write the bitmap file and its superblock | ||
238 | */ | ||
239 | |||
240 | /* copy the pathname of a file to a buffer */ | ||
241 | char *file_path(struct file *file, char *buf, int count) | ||
242 | { | ||
243 | struct dentry *d; | ||
244 | struct vfsmount *v; | ||
245 | |||
246 | if (!buf) | ||
247 | return NULL; | ||
248 | |||
249 | d = file->f_dentry; | ||
250 | v = file->f_vfsmnt; | ||
251 | |||
252 | buf = d_path(d, v, buf, count); | ||
253 | |||
254 | return IS_ERR(buf) ? NULL : buf; | ||
255 | } | ||
256 | |||
257 | /* | ||
258 | * basic page I/O operations | ||
259 | */ | ||
260 | |||
261 | /* IO operations when bitmap is stored near all superblocks */ | ||
262 | static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long index) | ||
263 | { | ||
264 | /* choose a good rdev and read the page from there */ | ||
265 | |||
266 | mdk_rdev_t *rdev; | ||
267 | struct list_head *tmp; | ||
268 | struct page *page = alloc_page(GFP_KERNEL); | ||
269 | sector_t target; | ||
270 | |||
271 | if (!page) | ||
272 | return ERR_PTR(-ENOMEM); | ||
273 | do { | ||
274 | ITERATE_RDEV(mddev, rdev, tmp) | ||
275 | if (rdev->in_sync && !rdev->faulty) | ||
276 | goto found; | ||
277 | return ERR_PTR(-EIO); | ||
278 | |||
279 | found: | ||
280 | target = (rdev->sb_offset << 1) + offset + index * (PAGE_SIZE/512); | ||
281 | |||
282 | } while (!sync_page_io(rdev->bdev, target, PAGE_SIZE, page, READ)); | ||
283 | |||
284 | page->index = index; | ||
285 | return page; | ||
286 | } | ||
287 | |||
288 | static int write_sb_page(mddev_t *mddev, long offset, struct page *page, int wait) | ||
289 | { | ||
290 | mdk_rdev_t *rdev; | ||
291 | struct list_head *tmp; | ||
292 | |||
293 | ITERATE_RDEV(mddev, rdev, tmp) | ||
294 | if (rdev->in_sync && !rdev->faulty) | ||
295 | md_super_write(mddev, rdev, | ||
296 | (rdev->sb_offset<<1) + offset | ||
297 | + page->index * (PAGE_SIZE/512), | ||
298 | PAGE_SIZE, | ||
299 | page); | ||
300 | |||
301 | if (wait) | ||
302 | wait_event(mddev->sb_wait, atomic_read(&mddev->pending_writes)==0); | ||
303 | return 0; | ||
304 | } | ||
305 | |||
306 | /* | ||
307 | * write out a page to a file | ||
308 | */ | ||
309 | static int write_page(struct bitmap *bitmap, struct page *page, int wait) | ||
310 | { | ||
311 | int ret = -ENOMEM; | ||
312 | |||
313 | if (bitmap->file == NULL) | ||
314 | return write_sb_page(bitmap->mddev, bitmap->offset, page, wait); | ||
315 | |||
316 | if (wait) | ||
317 | lock_page(page); | ||
318 | else { | ||
319 | if (TestSetPageLocked(page)) | ||
320 | return -EAGAIN; /* already locked */ | ||
321 | if (PageWriteback(page)) { | ||
322 | unlock_page(page); | ||
323 | return -EAGAIN; | ||
324 | } | ||
325 | } | ||
326 | |||
327 | ret = page->mapping->a_ops->prepare_write(NULL, page, 0, PAGE_SIZE); | ||
328 | if (!ret) | ||
329 | ret = page->mapping->a_ops->commit_write(NULL, page, 0, | ||
330 | PAGE_SIZE); | ||
331 | if (ret) { | ||
332 | unlock_page(page); | ||
333 | return ret; | ||
334 | } | ||
335 | |||
336 | set_page_dirty(page); /* force it to be written out */ | ||
337 | |||
338 | if (!wait) { | ||
339 | /* add to list to be waited for by daemon */ | ||
340 | struct page_list *item = mempool_alloc(bitmap->write_pool, GFP_NOIO); | ||
341 | item->page = page; | ||
342 | page_cache_get(page); | ||
343 | spin_lock(&bitmap->write_lock); | ||
344 | list_add(&item->list, &bitmap->complete_pages); | ||
345 | spin_unlock(&bitmap->write_lock); | ||
346 | md_wakeup_thread(bitmap->writeback_daemon); | ||
347 | } | ||
348 | return write_one_page(page, wait); | ||
349 | } | ||
350 | |||
351 | /* read a page from a file, pinning it into cache, and return bytes_read */ | ||
352 | static struct page *read_page(struct file *file, unsigned long index, | ||
353 | unsigned long *bytes_read) | ||
354 | { | ||
355 | struct inode *inode = file->f_mapping->host; | ||
356 | struct page *page = NULL; | ||
357 | loff_t isize = i_size_read(inode); | ||
358 | unsigned long end_index = isize >> PAGE_CACHE_SHIFT; | ||
359 | |||
360 | PRINTK("read bitmap file (%dB @ %Lu)\n", (int)PAGE_CACHE_SIZE, | ||
361 | (unsigned long long)index << PAGE_CACHE_SHIFT); | ||
362 | |||
363 | page = read_cache_page(inode->i_mapping, index, | ||
364 | (filler_t *)inode->i_mapping->a_ops->readpage, file); | ||
365 | if (IS_ERR(page)) | ||
366 | goto out; | ||
367 | wait_on_page_locked(page); | ||
368 | if (!PageUptodate(page) || PageError(page)) { | ||
369 | page_cache_release(page); | ||
370 | page = ERR_PTR(-EIO); | ||
371 | goto out; | ||
372 | } | ||
373 | |||
374 | if (index > end_index) /* we have read beyond EOF */ | ||
375 | *bytes_read = 0; | ||
376 | else if (index == end_index) /* possible short read */ | ||
377 | *bytes_read = isize & ~PAGE_CACHE_MASK; | ||
378 | else | ||
379 | *bytes_read = PAGE_CACHE_SIZE; /* got a full page */ | ||
380 | out: | ||
381 | if (IS_ERR(page)) | ||
382 | printk(KERN_ALERT "md: bitmap read error: (%dB @ %Lu): %ld\n", | ||
383 | (int)PAGE_CACHE_SIZE, | ||
384 | (unsigned long long)index << PAGE_CACHE_SHIFT, | ||
385 | PTR_ERR(page)); | ||
386 | return page; | ||
387 | } | ||
388 | |||
389 | /* | ||
390 | * bitmap file superblock operations | ||
391 | */ | ||
392 | |||
393 | /* update the event counter and sync the superblock to disk */ | ||
394 | int bitmap_update_sb(struct bitmap *bitmap) | ||
395 | { | ||
396 | bitmap_super_t *sb; | ||
397 | unsigned long flags; | ||
398 | |||
399 | if (!bitmap || !bitmap->mddev) /* no bitmap for this array */ | ||
400 | return 0; | ||
401 | spin_lock_irqsave(&bitmap->lock, flags); | ||
402 | if (!bitmap->sb_page) { /* no superblock */ | ||
403 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
404 | return 0; | ||
405 | } | ||
406 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
407 | sb = (bitmap_super_t *)kmap(bitmap->sb_page); | ||
408 | sb->events = cpu_to_le64(bitmap->mddev->events); | ||
409 | if (!bitmap->mddev->degraded) | ||
410 | sb->events_cleared = cpu_to_le64(bitmap->mddev->events); | ||
411 | kunmap(bitmap->sb_page); | ||
412 | return write_page(bitmap, bitmap->sb_page, 1); | ||
413 | } | ||
414 | |||
415 | /* print out the bitmap file superblock */ | ||
416 | void bitmap_print_sb(struct bitmap *bitmap) | ||
417 | { | ||
418 | bitmap_super_t *sb; | ||
419 | |||
420 | if (!bitmap || !bitmap->sb_page) | ||
421 | return; | ||
422 | sb = (bitmap_super_t *)kmap(bitmap->sb_page); | ||
423 | printk(KERN_DEBUG "%s: bitmap file superblock:\n", bmname(bitmap)); | ||
424 | printk(KERN_DEBUG " magic: %08x\n", le32_to_cpu(sb->magic)); | ||
425 | printk(KERN_DEBUG " version: %d\n", le32_to_cpu(sb->version)); | ||
426 | printk(KERN_DEBUG " uuid: %08x.%08x.%08x.%08x\n", | ||
427 | *(__u32 *)(sb->uuid+0), | ||
428 | *(__u32 *)(sb->uuid+4), | ||
429 | *(__u32 *)(sb->uuid+8), | ||
430 | *(__u32 *)(sb->uuid+12)); | ||
431 | printk(KERN_DEBUG " events: %llu\n", | ||
432 | (unsigned long long) le64_to_cpu(sb->events)); | ||
433 | printk(KERN_DEBUG "events cleared: %llu\n", | ||
434 | (unsigned long long) le64_to_cpu(sb->events_cleared)); | ||
435 | printk(KERN_DEBUG " state: %08x\n", le32_to_cpu(sb->state)); | ||
436 | printk(KERN_DEBUG " chunksize: %d B\n", le32_to_cpu(sb->chunksize)); | ||
437 | printk(KERN_DEBUG " daemon sleep: %ds\n", le32_to_cpu(sb->daemon_sleep)); | ||
438 | printk(KERN_DEBUG " sync size: %llu KB\n", | ||
439 | (unsigned long long)le64_to_cpu(sb->sync_size)/2); | ||
440 | kunmap(bitmap->sb_page); | ||
441 | } | ||
442 | |||
443 | /* read the superblock from the bitmap file and initialize some bitmap fields */ | ||
444 | static int bitmap_read_sb(struct bitmap *bitmap) | ||
445 | { | ||
446 | char *reason = NULL; | ||
447 | bitmap_super_t *sb; | ||
448 | unsigned long chunksize, daemon_sleep; | ||
449 | unsigned long bytes_read; | ||
450 | unsigned long long events; | ||
451 | int err = -EINVAL; | ||
452 | |||
453 | /* page 0 is the superblock, read it... */ | ||
454 | if (bitmap->file) | ||
455 | bitmap->sb_page = read_page(bitmap->file, 0, &bytes_read); | ||
456 | else { | ||
457 | bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset, 0); | ||
458 | bytes_read = PAGE_SIZE; | ||
459 | } | ||
460 | if (IS_ERR(bitmap->sb_page)) { | ||
461 | err = PTR_ERR(bitmap->sb_page); | ||
462 | bitmap->sb_page = NULL; | ||
463 | return err; | ||
464 | } | ||
465 | |||
466 | sb = (bitmap_super_t *)kmap(bitmap->sb_page); | ||
467 | |||
468 | if (bytes_read < sizeof(*sb)) { /* short read */ | ||
469 | printk(KERN_INFO "%s: bitmap file superblock truncated\n", | ||
470 | bmname(bitmap)); | ||
471 | err = -ENOSPC; | ||
472 | goto out; | ||
473 | } | ||
474 | |||
475 | chunksize = le32_to_cpu(sb->chunksize); | ||
476 | daemon_sleep = le32_to_cpu(sb->daemon_sleep); | ||
477 | |||
478 | /* verify that the bitmap-specific fields are valid */ | ||
479 | if (sb->magic != cpu_to_le32(BITMAP_MAGIC)) | ||
480 | reason = "bad magic"; | ||
481 | else if (sb->version != cpu_to_le32(BITMAP_MAJOR)) | ||
482 | reason = "unrecognized superblock version"; | ||
483 | else if (chunksize < 512 || chunksize > (1024 * 1024 * 4)) | ||
484 | reason = "bitmap chunksize out of range (512B - 4MB)"; | ||
485 | else if ((1 << ffz(~chunksize)) != chunksize) | ||
486 | reason = "bitmap chunksize not a power of 2"; | ||
487 | else if (daemon_sleep < 1 || daemon_sleep > 15) | ||
488 | reason = "daemon sleep period out of range"; | ||
489 | if (reason) { | ||
490 | printk(KERN_INFO "%s: invalid bitmap file superblock: %s\n", | ||
491 | bmname(bitmap), reason); | ||
492 | goto out; | ||
493 | } | ||
494 | |||
495 | /* keep the array size field of the bitmap superblock up to date */ | ||
496 | sb->sync_size = cpu_to_le64(bitmap->mddev->resync_max_sectors); | ||
497 | |||
498 | if (!bitmap->mddev->persistent) | ||
499 | goto success; | ||
500 | |||
501 | /* | ||
502 | * if we have a persistent array superblock, compare the | ||
503 | * bitmap's UUID and event counter to the mddev's | ||
504 | */ | ||
505 | if (memcmp(sb->uuid, bitmap->mddev->uuid, 16)) { | ||
506 | printk(KERN_INFO "%s: bitmap superblock UUID mismatch\n", | ||
507 | bmname(bitmap)); | ||
508 | goto out; | ||
509 | } | ||
510 | events = le64_to_cpu(sb->events); | ||
511 | if (events < bitmap->mddev->events) { | ||
512 | printk(KERN_INFO "%s: bitmap file is out of date (%llu < %llu) " | ||
513 | "-- forcing full recovery\n", bmname(bitmap), events, | ||
514 | (unsigned long long) bitmap->mddev->events); | ||
515 | sb->state |= BITMAP_STALE; | ||
516 | } | ||
517 | success: | ||
518 | /* assign fields using values from superblock */ | ||
519 | bitmap->chunksize = chunksize; | ||
520 | bitmap->daemon_sleep = daemon_sleep; | ||
521 | bitmap->flags |= sb->state; | ||
522 | bitmap->events_cleared = le64_to_cpu(sb->events_cleared); | ||
523 | err = 0; | ||
524 | out: | ||
525 | kunmap(bitmap->sb_page); | ||
526 | if (err) | ||
527 | bitmap_print_sb(bitmap); | ||
528 | return err; | ||
529 | } | ||
530 | |||
531 | enum bitmap_mask_op { | ||
532 | MASK_SET, | ||
533 | MASK_UNSET | ||
534 | }; | ||
535 | |||
536 | /* record the state of the bitmap in the superblock */ | ||
537 | static void bitmap_mask_state(struct bitmap *bitmap, enum bitmap_state bits, | ||
538 | enum bitmap_mask_op op) | ||
539 | { | ||
540 | bitmap_super_t *sb; | ||
541 | unsigned long flags; | ||
542 | |||
543 | spin_lock_irqsave(&bitmap->lock, flags); | ||
544 | if (!bitmap || !bitmap->sb_page) { /* can't set the state */ | ||
545 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
546 | return; | ||
547 | } | ||
548 | page_cache_get(bitmap->sb_page); | ||
549 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
550 | sb = (bitmap_super_t *)kmap(bitmap->sb_page); | ||
551 | switch (op) { | ||
552 | case MASK_SET: sb->state |= bits; | ||
553 | break; | ||
554 | case MASK_UNSET: sb->state &= ~bits; | ||
555 | break; | ||
556 | default: BUG(); | ||
557 | } | ||
558 | kunmap(bitmap->sb_page); | ||
559 | page_cache_release(bitmap->sb_page); | ||
560 | } | ||
561 | |||
562 | /* | ||
563 | * general bitmap file operations | ||
564 | */ | ||
565 | |||
566 | /* calculate the index of the page that contains this bit */ | ||
567 | static inline unsigned long file_page_index(unsigned long chunk) | ||
568 | { | ||
569 | return CHUNK_BIT_OFFSET(chunk) >> PAGE_BIT_SHIFT; | ||
570 | } | ||
571 | |||
572 | /* calculate the (bit) offset of this bit within a page */ | ||
573 | static inline unsigned long file_page_offset(unsigned long chunk) | ||
574 | { | ||
575 | return CHUNK_BIT_OFFSET(chunk) & (PAGE_BITS - 1); | ||
576 | } | ||
577 | |||
578 | /* | ||
579 | * return a pointer to the page in the filemap that contains the given bit | ||
580 | * | ||
581 | * this lookup is complicated by the fact that the bitmap sb might be exactly | ||
582 | * 1 page (e.g., x86) or less than 1 page -- so the bitmap might start on page | ||
583 | * 0 or page 1 | ||
584 | */ | ||
585 | static inline struct page *filemap_get_page(struct bitmap *bitmap, | ||
586 | unsigned long chunk) | ||
587 | { | ||
588 | return bitmap->filemap[file_page_index(chunk) - file_page_index(0)]; | ||
589 | } | ||
590 | |||
591 | |||
592 | static void bitmap_file_unmap(struct bitmap *bitmap) | ||
593 | { | ||
594 | struct page **map, *sb_page; | ||
595 | unsigned long *attr; | ||
596 | int pages; | ||
597 | unsigned long flags; | ||
598 | |||
599 | spin_lock_irqsave(&bitmap->lock, flags); | ||
600 | map = bitmap->filemap; | ||
601 | bitmap->filemap = NULL; | ||
602 | attr = bitmap->filemap_attr; | ||
603 | bitmap->filemap_attr = NULL; | ||
604 | pages = bitmap->file_pages; | ||
605 | bitmap->file_pages = 0; | ||
606 | sb_page = bitmap->sb_page; | ||
607 | bitmap->sb_page = NULL; | ||
608 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
609 | |||
610 | while (pages--) | ||
611 | if (map[pages]->index != 0) /* 0 is sb_page, release it below */ | ||
612 | page_cache_release(map[pages]); | ||
613 | kfree(map); | ||
614 | kfree(attr); | ||
615 | |||
616 | if (sb_page) | ||
617 | page_cache_release(sb_page); | ||
618 | } | ||
619 | |||
620 | static void bitmap_stop_daemons(struct bitmap *bitmap); | ||
621 | |||
622 | /* dequeue the next item in a page list -- don't call from irq context */ | ||
623 | static struct page_list *dequeue_page(struct bitmap *bitmap) | ||
624 | { | ||
625 | struct page_list *item = NULL; | ||
626 | struct list_head *head = &bitmap->complete_pages; | ||
627 | |||
628 | spin_lock(&bitmap->write_lock); | ||
629 | if (list_empty(head)) | ||
630 | goto out; | ||
631 | item = list_entry(head->prev, struct page_list, list); | ||
632 | list_del(head->prev); | ||
633 | out: | ||
634 | spin_unlock(&bitmap->write_lock); | ||
635 | return item; | ||
636 | } | ||
637 | |||
638 | static void drain_write_queues(struct bitmap *bitmap) | ||
639 | { | ||
640 | struct page_list *item; | ||
641 | |||
642 | while ((item = dequeue_page(bitmap))) { | ||
643 | /* don't bother to wait */ | ||
644 | page_cache_release(item->page); | ||
645 | mempool_free(item, bitmap->write_pool); | ||
646 | } | ||
647 | |||
648 | wake_up(&bitmap->write_wait); | ||
649 | } | ||
650 | |||
651 | static void bitmap_file_put(struct bitmap *bitmap) | ||
652 | { | ||
653 | struct file *file; | ||
654 | struct inode *inode; | ||
655 | unsigned long flags; | ||
656 | |||
657 | spin_lock_irqsave(&bitmap->lock, flags); | ||
658 | file = bitmap->file; | ||
659 | bitmap->file = NULL; | ||
660 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
661 | |||
662 | bitmap_stop_daemons(bitmap); | ||
663 | |||
664 | drain_write_queues(bitmap); | ||
665 | |||
666 | bitmap_file_unmap(bitmap); | ||
667 | |||
668 | if (file) { | ||
669 | inode = file->f_mapping->host; | ||
670 | spin_lock(&inode->i_lock); | ||
671 | atomic_set(&inode->i_writecount, 1); /* allow writes again */ | ||
672 | spin_unlock(&inode->i_lock); | ||
673 | fput(file); | ||
674 | } | ||
675 | } | ||
676 | |||
677 | |||
678 | /* | ||
679 | * bitmap_file_kick - if an error occurs while manipulating the bitmap file | ||
680 | * then it is no longer reliable, so we stop using it and we mark the file | ||
681 | * as failed in the superblock | ||
682 | */ | ||
683 | static void bitmap_file_kick(struct bitmap *bitmap) | ||
684 | { | ||
685 | char *path, *ptr = NULL; | ||
686 | |||
687 | bitmap_mask_state(bitmap, BITMAP_STALE, MASK_SET); | ||
688 | bitmap_update_sb(bitmap); | ||
689 | |||
690 | if (bitmap->file) { | ||
691 | path = kmalloc(PAGE_SIZE, GFP_KERNEL); | ||
692 | if (path) | ||
693 | ptr = file_path(bitmap->file, path, PAGE_SIZE); | ||
694 | |||
695 | printk(KERN_ALERT "%s: kicking failed bitmap file %s from array!\n", | ||
696 | bmname(bitmap), ptr ? ptr : ""); | ||
697 | |||
698 | kfree(path); | ||
699 | } | ||
700 | |||
701 | bitmap_file_put(bitmap); | ||
702 | |||
703 | return; | ||
704 | } | ||
705 | |||
706 | enum bitmap_page_attr { | ||
707 | BITMAP_PAGE_DIRTY = 1, // there are set bits that need to be synced | ||
708 | BITMAP_PAGE_CLEAN = 2, // there are bits that might need to be cleared | ||
709 | BITMAP_PAGE_NEEDWRITE=4, // there are cleared bits that need to be synced | ||
710 | }; | ||
711 | |||
712 | static inline void set_page_attr(struct bitmap *bitmap, struct page *page, | ||
713 | enum bitmap_page_attr attr) | ||
714 | { | ||
715 | bitmap->filemap_attr[page->index] |= attr; | ||
716 | } | ||
717 | |||
718 | static inline void clear_page_attr(struct bitmap *bitmap, struct page *page, | ||
719 | enum bitmap_page_attr attr) | ||
720 | { | ||
721 | bitmap->filemap_attr[page->index] &= ~attr; | ||
722 | } | ||
723 | |||
724 | static inline unsigned long get_page_attr(struct bitmap *bitmap, struct page *page) | ||
725 | { | ||
726 | return bitmap->filemap_attr[page->index]; | ||
727 | } | ||
728 | |||
729 | /* | ||
730 | * bitmap_file_set_bit -- called before performing a write to the md device | ||
731 | * to set (and eventually sync) a particular bit in the bitmap file | ||
732 | * | ||
733 | * we set the bit immediately, then we record the page number so that | ||
734 | * when an unplug occurs, we can flush the dirty pages out to disk | ||
735 | */ | ||
736 | static void bitmap_file_set_bit(struct bitmap *bitmap, sector_t block) | ||
737 | { | ||
738 | unsigned long bit; | ||
739 | struct page *page; | ||
740 | void *kaddr; | ||
741 | unsigned long chunk = block >> CHUNK_BLOCK_SHIFT(bitmap); | ||
742 | |||
743 | if (!bitmap->filemap) { | ||
744 | return; | ||
745 | } | ||
746 | |||
747 | page = filemap_get_page(bitmap, chunk); | ||
748 | bit = file_page_offset(chunk); | ||
749 | |||
750 | |||
751 | /* make sure the page stays cached until it gets written out */ | ||
752 | if (! (get_page_attr(bitmap, page) & BITMAP_PAGE_DIRTY)) | ||
753 | page_cache_get(page); | ||
754 | |||
755 | /* set the bit */ | ||
756 | kaddr = kmap_atomic(page, KM_USER0); | ||
757 | set_bit(bit, kaddr); | ||
758 | kunmap_atomic(kaddr, KM_USER0); | ||
759 | PRINTK("set file bit %lu page %lu\n", bit, page->index); | ||
760 | |||
761 | /* record page number so it gets flushed to disk when unplug occurs */ | ||
762 | set_page_attr(bitmap, page, BITMAP_PAGE_DIRTY); | ||
763 | |||
764 | } | ||
765 | |||
766 | /* this gets called when the md device is ready to unplug its underlying | ||
767 | * (slave) device queues -- before we let any writes go down, we need to | ||
768 | * sync the dirty pages of the bitmap file to disk */ | ||
769 | int bitmap_unplug(struct bitmap *bitmap) | ||
770 | { | ||
771 | unsigned long i, attr, flags; | ||
772 | struct page *page; | ||
773 | int wait = 0; | ||
774 | int err; | ||
775 | |||
776 | if (!bitmap) | ||
777 | return 0; | ||
778 | |||
779 | /* look at each page to see if there are any set bits that need to be | ||
780 | * flushed out to disk */ | ||
781 | for (i = 0; i < bitmap->file_pages; i++) { | ||
782 | spin_lock_irqsave(&bitmap->lock, flags); | ||
783 | if (!bitmap->filemap) { | ||
784 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
785 | return 0; | ||
786 | } | ||
787 | page = bitmap->filemap[i]; | ||
788 | attr = get_page_attr(bitmap, page); | ||
789 | clear_page_attr(bitmap, page, BITMAP_PAGE_DIRTY); | ||
790 | clear_page_attr(bitmap, page, BITMAP_PAGE_NEEDWRITE); | ||
791 | if ((attr & BITMAP_PAGE_DIRTY)) | ||
792 | wait = 1; | ||
793 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
794 | |||
795 | if (attr & (BITMAP_PAGE_DIRTY | BITMAP_PAGE_NEEDWRITE)) { | ||
796 | err = write_page(bitmap, page, 0); | ||
797 | if (err == -EAGAIN) { | ||
798 | if (attr & BITMAP_PAGE_DIRTY) | ||
799 | err = write_page(bitmap, page, 1); | ||
800 | else | ||
801 | err = 0; | ||
802 | } | ||
803 | if (err) | ||
804 | return 1; | ||
805 | } | ||
806 | } | ||
807 | if (wait) { /* if any writes were performed, we need to wait on them */ | ||
808 | if (bitmap->file) { | ||
809 | spin_lock_irq(&bitmap->write_lock); | ||
810 | wait_event_lock_irq(bitmap->write_wait, | ||
811 | list_empty(&bitmap->complete_pages), bitmap->write_lock, | ||
812 | wake_up_process(bitmap->writeback_daemon->tsk)); | ||
813 | spin_unlock_irq(&bitmap->write_lock); | ||
814 | } else | ||
815 | wait_event(bitmap->mddev->sb_wait, | ||
816 | atomic_read(&bitmap->mddev->pending_writes)==0); | ||
817 | } | ||
818 | return 0; | ||
819 | } | ||
820 | |||
821 | static void bitmap_set_memory_bits(struct bitmap *bitmap, sector_t offset, | ||
822 | unsigned long sectors, int in_sync); | ||
823 | /* * bitmap_init_from_disk -- called at bitmap_create time to initialize | ||
824 | * the in-memory bitmap from the on-disk bitmap -- also, sets up the | ||
825 | * memory mapping of the bitmap file | ||
826 | * Special cases: | ||
827 | * if there's no bitmap file, or if the bitmap file had been | ||
828 | * previously kicked from the array, we mark all the bits as | ||
829 | * 1's in order to cause a full resync. | ||
830 | */ | ||
831 | static int bitmap_init_from_disk(struct bitmap *bitmap, int in_sync) | ||
832 | { | ||
833 | unsigned long i, chunks, index, oldindex, bit; | ||
834 | struct page *page = NULL, *oldpage = NULL; | ||
835 | unsigned long num_pages, bit_cnt = 0; | ||
836 | struct file *file; | ||
837 | unsigned long bytes, offset, dummy; | ||
838 | int outofdate; | ||
839 | int ret = -ENOSPC; | ||
840 | |||
841 | chunks = bitmap->chunks; | ||
842 | file = bitmap->file; | ||
843 | |||
844 | BUG_ON(!file && !bitmap->offset); | ||
845 | |||
846 | #if INJECT_FAULTS_3 | ||
847 | outofdate = 1; | ||
848 | #else | ||
849 | outofdate = bitmap->flags & BITMAP_STALE; | ||
850 | #endif | ||
851 | if (outofdate) | ||
852 | printk(KERN_INFO "%s: bitmap file is out of date, doing full " | ||
853 | "recovery\n", bmname(bitmap)); | ||
854 | |||
855 | bytes = (chunks + 7) / 8; | ||
856 | |||
857 | num_pages = (bytes + sizeof(bitmap_super_t) + PAGE_SIZE - 1) / PAGE_SIZE; | ||
858 | |||
859 | if (file && i_size_read(file->f_mapping->host) < bytes + sizeof(bitmap_super_t)) { | ||
860 | printk(KERN_INFO "%s: bitmap file too short %lu < %lu\n", | ||
861 | bmname(bitmap), | ||
862 | (unsigned long) i_size_read(file->f_mapping->host), | ||
863 | bytes + sizeof(bitmap_super_t)); | ||
864 | goto out; | ||
865 | } | ||
866 | |||
867 | ret = -ENOMEM; | ||
868 | |||
869 | bitmap->filemap = kmalloc(sizeof(struct page *) * num_pages, GFP_KERNEL); | ||
870 | if (!bitmap->filemap) | ||
871 | goto out; | ||
872 | |||
873 | bitmap->filemap_attr = kmalloc(sizeof(long) * num_pages, GFP_KERNEL); | ||
874 | if (!bitmap->filemap_attr) | ||
875 | goto out; | ||
876 | |||
877 | memset(bitmap->filemap_attr, 0, sizeof(long) * num_pages); | ||
878 | |||
879 | oldindex = ~0L; | ||
880 | |||
881 | for (i = 0; i < chunks; i++) { | ||
882 | index = file_page_index(i); | ||
883 | bit = file_page_offset(i); | ||
884 | if (index != oldindex) { /* this is a new page, read it in */ | ||
885 | /* unmap the old page, we're done with it */ | ||
886 | if (oldpage != NULL) | ||
887 | kunmap(oldpage); | ||
888 | if (index == 0) { | ||
889 | /* | ||
890 | * if we're here then the superblock page | ||
891 | * contains some bits (PAGE_SIZE != sizeof sb) | ||
892 | * we've already read it in, so just use it | ||
893 | */ | ||
894 | page = bitmap->sb_page; | ||
895 | offset = sizeof(bitmap_super_t); | ||
896 | } else if (file) { | ||
897 | page = read_page(file, index, &dummy); | ||
898 | offset = 0; | ||
899 | } else { | ||
900 | page = read_sb_page(bitmap->mddev, bitmap->offset, index); | ||
901 | offset = 0; | ||
902 | } | ||
903 | if (IS_ERR(page)) { /* read error */ | ||
904 | ret = PTR_ERR(page); | ||
905 | goto out; | ||
906 | } | ||
907 | |||
908 | oldindex = index; | ||
909 | oldpage = page; | ||
910 | kmap(page); | ||
911 | |||
912 | if (outofdate) { | ||
913 | /* | ||
914 | * if bitmap is out of date, dirty the | ||
915 | * whole page and write it out | ||
916 | */ | ||
917 | memset(page_address(page) + offset, 0xff, | ||
918 | PAGE_SIZE - offset); | ||
919 | ret = write_page(bitmap, page, 1); | ||
920 | if (ret) { | ||
921 | kunmap(page); | ||
922 | /* release, page not in filemap yet */ | ||
923 | page_cache_release(page); | ||
924 | goto out; | ||
925 | } | ||
926 | } | ||
927 | |||
928 | bitmap->filemap[bitmap->file_pages++] = page; | ||
929 | } | ||
930 | if (test_bit(bit, page_address(page))) { | ||
931 | /* if the disk bit is set, set the memory bit */ | ||
932 | bitmap_set_memory_bits(bitmap, | ||
933 | i << CHUNK_BLOCK_SHIFT(bitmap), 1, in_sync); | ||
934 | bit_cnt++; | ||
935 | } | ||
936 | } | ||
937 | |||
938 | /* everything went OK */ | ||
939 | ret = 0; | ||
940 | bitmap_mask_state(bitmap, BITMAP_STALE, MASK_UNSET); | ||
941 | |||
942 | if (page) /* unmap the last page */ | ||
943 | kunmap(page); | ||
944 | |||
945 | if (bit_cnt) { /* Kick recovery if any bits were set */ | ||
946 | set_bit(MD_RECOVERY_NEEDED, &bitmap->mddev->recovery); | ||
947 | md_wakeup_thread(bitmap->mddev->thread); | ||
948 | } | ||
949 | |||
950 | out: | ||
951 | printk(KERN_INFO "%s: bitmap initialized from disk: " | ||
952 | "read %lu/%lu pages, set %lu bits, status: %d\n", | ||
953 | bmname(bitmap), bitmap->file_pages, num_pages, bit_cnt, ret); | ||
954 | |||
955 | return ret; | ||
956 | } | ||
957 | |||
958 | void bitmap_write_all(struct bitmap *bitmap) | ||
959 | { | ||
960 | /* We don't actually write all bitmap blocks here, | ||
961 | * just flag them as needing to be written | ||
962 | */ | ||
963 | |||
964 | unsigned long chunks = bitmap->chunks; | ||
965 | unsigned long bytes = (chunks+7)/8 + sizeof(bitmap_super_t); | ||
966 | unsigned long num_pages = (bytes + PAGE_SIZE-1) / PAGE_SIZE; | ||
967 | while (num_pages--) | ||
968 | bitmap->filemap_attr[num_pages] |= BITMAP_PAGE_NEEDWRITE; | ||
969 | } | ||
970 | |||
971 | |||
972 | static void bitmap_count_page(struct bitmap *bitmap, sector_t offset, int inc) | ||
973 | { | ||
974 | sector_t chunk = offset >> CHUNK_BLOCK_SHIFT(bitmap); | ||
975 | unsigned long page = chunk >> PAGE_COUNTER_SHIFT; | ||
976 | bitmap->bp[page].count += inc; | ||
977 | /* | ||
978 | if (page == 0) printk("count page 0, offset %llu: %d gives %d\n", | ||
979 | (unsigned long long)offset, inc, bitmap->bp[page].count); | ||
980 | */ | ||
981 | bitmap_checkfree(bitmap, page); | ||
982 | } | ||
983 | static bitmap_counter_t *bitmap_get_counter(struct bitmap *bitmap, | ||
984 | sector_t offset, int *blocks, | ||
985 | int create); | ||
986 | |||
987 | /* | ||
988 | * bitmap daemon -- periodically wakes up to clean bits and flush pages | ||
989 | * out to disk | ||
990 | */ | ||
991 | |||
992 | int bitmap_daemon_work(struct bitmap *bitmap) | ||
993 | { | ||
994 | unsigned long j; | ||
995 | unsigned long flags; | ||
996 | struct page *page = NULL, *lastpage = NULL; | ||
997 | int err = 0; | ||
998 | int blocks; | ||
999 | int attr; | ||
1000 | |||
1001 | if (bitmap == NULL) | ||
1002 | return 0; | ||
1003 | if (time_before(jiffies, bitmap->daemon_lastrun + bitmap->daemon_sleep*HZ)) | ||
1004 | return 0; | ||
1005 | bitmap->daemon_lastrun = jiffies; | ||
1006 | |||
1007 | for (j = 0; j < bitmap->chunks; j++) { | ||
1008 | bitmap_counter_t *bmc; | ||
1009 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1010 | if (!bitmap->filemap) { | ||
1011 | /* error or shutdown */ | ||
1012 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1013 | break; | ||
1014 | } | ||
1015 | |||
1016 | page = filemap_get_page(bitmap, j); | ||
1017 | |||
1018 | if (page != lastpage) { | ||
1019 | /* skip this page unless it's marked as needing cleaning */ | ||
1020 | if (!((attr=get_page_attr(bitmap, page)) & BITMAP_PAGE_CLEAN)) { | ||
1021 | if (attr & BITMAP_PAGE_NEEDWRITE) { | ||
1022 | page_cache_get(page); | ||
1023 | clear_page_attr(bitmap, page, BITMAP_PAGE_NEEDWRITE); | ||
1024 | } | ||
1025 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1026 | if (attr & BITMAP_PAGE_NEEDWRITE) { | ||
1027 | switch (write_page(bitmap, page, 0)) { | ||
1028 | case -EAGAIN: | ||
1029 | set_page_attr(bitmap, page, BITMAP_PAGE_NEEDWRITE); | ||
1030 | break; | ||
1031 | case 0: | ||
1032 | break; | ||
1033 | default: | ||
1034 | bitmap_file_kick(bitmap); | ||
1035 | } | ||
1036 | page_cache_release(page); | ||
1037 | } | ||
1038 | continue; | ||
1039 | } | ||
1040 | |||
1041 | /* grab the new page, sync and release the old */ | ||
1042 | page_cache_get(page); | ||
1043 | if (lastpage != NULL) { | ||
1044 | if (get_page_attr(bitmap, lastpage) & BITMAP_PAGE_NEEDWRITE) { | ||
1045 | clear_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | ||
1046 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1047 | err = write_page(bitmap, lastpage, 0); | ||
1048 | if (err == -EAGAIN) { | ||
1049 | err = 0; | ||
1050 | set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | ||
1051 | } | ||
1052 | } else { | ||
1053 | set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | ||
1054 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1055 | } | ||
1056 | kunmap(lastpage); | ||
1057 | page_cache_release(lastpage); | ||
1058 | if (err) | ||
1059 | bitmap_file_kick(bitmap); | ||
1060 | } else | ||
1061 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1062 | lastpage = page; | ||
1063 | kmap(page); | ||
1064 | /* | ||
1065 | printk("bitmap clean at page %lu\n", j); | ||
1066 | */ | ||
1067 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1068 | clear_page_attr(bitmap, page, BITMAP_PAGE_CLEAN); | ||
1069 | } | ||
1070 | bmc = bitmap_get_counter(bitmap, j << CHUNK_BLOCK_SHIFT(bitmap), | ||
1071 | &blocks, 0); | ||
1072 | if (bmc) { | ||
1073 | /* | ||
1074 | if (j < 100) printk("bitmap: j=%lu, *bmc = 0x%x\n", j, *bmc); | ||
1075 | */ | ||
1076 | if (*bmc == 2) { | ||
1077 | *bmc=1; /* maybe clear the bit next time */ | ||
1078 | set_page_attr(bitmap, page, BITMAP_PAGE_CLEAN); | ||
1079 | } else if (*bmc == 1) { | ||
1080 | /* we can clear the bit */ | ||
1081 | *bmc = 0; | ||
1082 | bitmap_count_page(bitmap, j << CHUNK_BLOCK_SHIFT(bitmap), | ||
1083 | -1); | ||
1084 | |||
1085 | /* clear the bit */ | ||
1086 | clear_bit(file_page_offset(j), page_address(page)); | ||
1087 | } | ||
1088 | } | ||
1089 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1090 | } | ||
1091 | |||
1092 | /* now sync the final page */ | ||
1093 | if (lastpage != NULL) { | ||
1094 | kunmap(lastpage); | ||
1095 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1096 | if (get_page_attr(bitmap, lastpage) &BITMAP_PAGE_NEEDWRITE) { | ||
1097 | clear_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | ||
1098 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1099 | err = write_page(bitmap, lastpage, 0); | ||
1100 | if (err == -EAGAIN) { | ||
1101 | set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | ||
1102 | err = 0; | ||
1103 | } | ||
1104 | } else { | ||
1105 | set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | ||
1106 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1107 | } | ||
1108 | |||
1109 | page_cache_release(lastpage); | ||
1110 | } | ||
1111 | |||
1112 | return err; | ||
1113 | } | ||
1114 | |||
1115 | static void daemon_exit(struct bitmap *bitmap, mdk_thread_t **daemon) | ||
1116 | { | ||
1117 | mdk_thread_t *dmn; | ||
1118 | unsigned long flags; | ||
1119 | |||
1120 | /* if no one is waiting on us, we'll free the md thread struct | ||
1121 | * and exit, otherwise we let the waiter clean things up */ | ||
1122 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1123 | if ((dmn = *daemon)) { /* no one is waiting, cleanup and exit */ | ||
1124 | *daemon = NULL; | ||
1125 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1126 | kfree(dmn); | ||
1127 | complete_and_exit(NULL, 0); /* do_exit not exported */ | ||
1128 | } | ||
1129 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1130 | } | ||
1131 | |||
1132 | static void bitmap_writeback_daemon(mddev_t *mddev) | ||
1133 | { | ||
1134 | struct bitmap *bitmap = mddev->bitmap; | ||
1135 | struct page *page; | ||
1136 | struct page_list *item; | ||
1137 | int err = 0; | ||
1138 | |||
1139 | if (signal_pending(current)) { | ||
1140 | printk(KERN_INFO | ||
1141 | "%s: bitmap writeback daemon got signal, exiting...\n", | ||
1142 | bmname(bitmap)); | ||
1143 | err = -EINTR; | ||
1144 | goto out; | ||
1145 | } | ||
1146 | |||
1147 | PRINTK("%s: bitmap writeback daemon woke up...\n", bmname(bitmap)); | ||
1148 | /* wait on bitmap page writebacks */ | ||
1149 | while ((item = dequeue_page(bitmap))) { | ||
1150 | page = item->page; | ||
1151 | mempool_free(item, bitmap->write_pool); | ||
1152 | PRINTK("wait on page writeback: %p\n", page); | ||
1153 | wait_on_page_writeback(page); | ||
1154 | PRINTK("finished page writeback: %p\n", page); | ||
1155 | |||
1156 | err = PageError(page); | ||
1157 | page_cache_release(page); | ||
1158 | if (err) { | ||
1159 | printk(KERN_WARNING "%s: bitmap file writeback " | ||
1160 | "failed (page %lu): %d\n", | ||
1161 | bmname(bitmap), page->index, err); | ||
1162 | bitmap_file_kick(bitmap); | ||
1163 | goto out; | ||
1164 | } | ||
1165 | } | ||
1166 | out: | ||
1167 | wake_up(&bitmap->write_wait); | ||
1168 | if (err) { | ||
1169 | printk(KERN_INFO "%s: bitmap writeback daemon exiting (%d)\n", | ||
1170 | bmname(bitmap), err); | ||
1171 | daemon_exit(bitmap, &bitmap->writeback_daemon); | ||
1172 | } | ||
1173 | } | ||
1174 | |||
1175 | static int bitmap_start_daemon(struct bitmap *bitmap, mdk_thread_t **ptr, | ||
1176 | void (*func)(mddev_t *), char *name) | ||
1177 | { | ||
1178 | mdk_thread_t *daemon; | ||
1179 | unsigned long flags; | ||
1180 | char namebuf[32]; | ||
1181 | |||
1182 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1183 | *ptr = NULL; | ||
1184 | |||
1185 | if (!bitmap->file) /* no need for daemon if there's no backing file */ | ||
1186 | goto out_unlock; | ||
1187 | |||
1188 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1189 | |||
1190 | #if INJECT_FATAL_FAULT_2 | ||
1191 | daemon = NULL; | ||
1192 | #else | ||
1193 | sprintf(namebuf, "%%s_%s", name); | ||
1194 | daemon = md_register_thread(func, bitmap->mddev, namebuf); | ||
1195 | #endif | ||
1196 | if (!daemon) { | ||
1197 | printk(KERN_ERR "%s: failed to start bitmap daemon\n", | ||
1198 | bmname(bitmap)); | ||
1199 | return -ECHILD; | ||
1200 | } | ||
1201 | |||
1202 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1203 | *ptr = daemon; | ||
1204 | |||
1205 | md_wakeup_thread(daemon); /* start it running */ | ||
1206 | |||
1207 | PRINTK("%s: %s daemon (pid %d) started...\n", | ||
1208 | bmname(bitmap), name, daemon->tsk->pid); | ||
1209 | out_unlock: | ||
1210 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1211 | return 0; | ||
1212 | } | ||
1213 | |||
1214 | static int bitmap_start_daemons(struct bitmap *bitmap) | ||
1215 | { | ||
1216 | int err = bitmap_start_daemon(bitmap, &bitmap->writeback_daemon, | ||
1217 | bitmap_writeback_daemon, "bitmap_wb"); | ||
1218 | return err; | ||
1219 | } | ||
1220 | |||
1221 | static void bitmap_stop_daemon(struct bitmap *bitmap, mdk_thread_t **ptr) | ||
1222 | { | ||
1223 | mdk_thread_t *daemon; | ||
1224 | unsigned long flags; | ||
1225 | |||
1226 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1227 | daemon = *ptr; | ||
1228 | *ptr = NULL; | ||
1229 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1230 | if (daemon) | ||
1231 | md_unregister_thread(daemon); /* destroy the thread */ | ||
1232 | } | ||
1233 | |||
1234 | static void bitmap_stop_daemons(struct bitmap *bitmap) | ||
1235 | { | ||
1236 | /* the daemons can't stop themselves... they'll just exit instead... */ | ||
1237 | if (bitmap->writeback_daemon && | ||
1238 | current->pid != bitmap->writeback_daemon->tsk->pid) | ||
1239 | bitmap_stop_daemon(bitmap, &bitmap->writeback_daemon); | ||
1240 | } | ||
1241 | |||
1242 | static bitmap_counter_t *bitmap_get_counter(struct bitmap *bitmap, | ||
1243 | sector_t offset, int *blocks, | ||
1244 | int create) | ||
1245 | { | ||
1246 | /* If 'create', we might release the lock and reclaim it. | ||
1247 | * The lock must have been taken with interrupts enabled. | ||
1248 | * If !create, we don't release the lock. | ||
1249 | */ | ||
1250 | sector_t chunk = offset >> CHUNK_BLOCK_SHIFT(bitmap); | ||
1251 | unsigned long page = chunk >> PAGE_COUNTER_SHIFT; | ||
1252 | unsigned long pageoff = (chunk & PAGE_COUNTER_MASK) << COUNTER_BYTE_SHIFT; | ||
1253 | sector_t csize; | ||
1254 | |||
1255 | if (bitmap_checkpage(bitmap, page, create) < 0) { | ||
1256 | csize = ((sector_t)1) << (CHUNK_BLOCK_SHIFT(bitmap)); | ||
1257 | *blocks = csize - (offset & (csize- 1)); | ||
1258 | return NULL; | ||
1259 | } | ||
1260 | /* now locked ... */ | ||
1261 | |||
1262 | if (bitmap->bp[page].hijacked) { /* hijacked pointer */ | ||
1263 | /* should we use the first or second counter field | ||
1264 | * of the hijacked pointer? */ | ||
1265 | int hi = (pageoff > PAGE_COUNTER_MASK); | ||
1266 | csize = ((sector_t)1) << (CHUNK_BLOCK_SHIFT(bitmap) + | ||
1267 | PAGE_COUNTER_SHIFT - 1); | ||
1268 | *blocks = csize - (offset & (csize- 1)); | ||
1269 | return &((bitmap_counter_t *) | ||
1270 | &bitmap->bp[page].map)[hi]; | ||
1271 | } else { /* page is allocated */ | ||
1272 | csize = ((sector_t)1) << (CHUNK_BLOCK_SHIFT(bitmap)); | ||
1273 | *blocks = csize - (offset & (csize- 1)); | ||
1274 | return (bitmap_counter_t *) | ||
1275 | &(bitmap->bp[page].map[pageoff]); | ||
1276 | } | ||
1277 | } | ||
1278 | |||
1279 | int bitmap_startwrite(struct bitmap *bitmap, sector_t offset, unsigned long sectors) | ||
1280 | { | ||
1281 | if (!bitmap) return 0; | ||
1282 | while (sectors) { | ||
1283 | int blocks; | ||
1284 | bitmap_counter_t *bmc; | ||
1285 | |||
1286 | spin_lock_irq(&bitmap->lock); | ||
1287 | bmc = bitmap_get_counter(bitmap, offset, &blocks, 1); | ||
1288 | if (!bmc) { | ||
1289 | spin_unlock_irq(&bitmap->lock); | ||
1290 | return 0; | ||
1291 | } | ||
1292 | |||
1293 | switch(*bmc) { | ||
1294 | case 0: | ||
1295 | bitmap_file_set_bit(bitmap, offset); | ||
1296 | bitmap_count_page(bitmap,offset, 1); | ||
1297 | blk_plug_device(bitmap->mddev->queue); | ||
1298 | /* fall through */ | ||
1299 | case 1: | ||
1300 | *bmc = 2; | ||
1301 | } | ||
1302 | if ((*bmc & COUNTER_MAX) == COUNTER_MAX) BUG(); | ||
1303 | (*bmc)++; | ||
1304 | |||
1305 | spin_unlock_irq(&bitmap->lock); | ||
1306 | |||
1307 | offset += blocks; | ||
1308 | if (sectors > blocks) | ||
1309 | sectors -= blocks; | ||
1310 | else sectors = 0; | ||
1311 | } | ||
1312 | return 0; | ||
1313 | } | ||
1314 | |||
1315 | void bitmap_endwrite(struct bitmap *bitmap, sector_t offset, unsigned long sectors, | ||
1316 | int success) | ||
1317 | { | ||
1318 | if (!bitmap) return; | ||
1319 | while (sectors) { | ||
1320 | int blocks; | ||
1321 | unsigned long flags; | ||
1322 | bitmap_counter_t *bmc; | ||
1323 | |||
1324 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1325 | bmc = bitmap_get_counter(bitmap, offset, &blocks, 0); | ||
1326 | if (!bmc) { | ||
1327 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1328 | return; | ||
1329 | } | ||
1330 | |||
1331 | if (!success && ! (*bmc & NEEDED_MASK)) | ||
1332 | *bmc |= NEEDED_MASK; | ||
1333 | |||
1334 | (*bmc)--; | ||
1335 | if (*bmc <= 2) { | ||
1336 | set_page_attr(bitmap, | ||
1337 | filemap_get_page(bitmap, offset >> CHUNK_BLOCK_SHIFT(bitmap)), | ||
1338 | BITMAP_PAGE_CLEAN); | ||
1339 | } | ||
1340 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1341 | offset += blocks; | ||
1342 | if (sectors > blocks) | ||
1343 | sectors -= blocks; | ||
1344 | else sectors = 0; | ||
1345 | } | ||
1346 | } | ||
1347 | |||
1348 | int bitmap_start_sync(struct bitmap *bitmap, sector_t offset, int *blocks) | ||
1349 | { | ||
1350 | bitmap_counter_t *bmc; | ||
1351 | int rv; | ||
1352 | if (bitmap == NULL) {/* FIXME or bitmap set as 'failed' */ | ||
1353 | *blocks = 1024; | ||
1354 | return 1; /* always resync if no bitmap */ | ||
1355 | } | ||
1356 | spin_lock_irq(&bitmap->lock); | ||
1357 | bmc = bitmap_get_counter(bitmap, offset, blocks, 0); | ||
1358 | rv = 0; | ||
1359 | if (bmc) { | ||
1360 | /* locked */ | ||
1361 | if (RESYNC(*bmc)) | ||
1362 | rv = 1; | ||
1363 | else if (NEEDED(*bmc)) { | ||
1364 | rv = 1; | ||
1365 | *bmc |= RESYNC_MASK; | ||
1366 | *bmc &= ~NEEDED_MASK; | ||
1367 | } | ||
1368 | } | ||
1369 | spin_unlock_irq(&bitmap->lock); | ||
1370 | return rv; | ||
1371 | } | ||
1372 | |||
1373 | void bitmap_end_sync(struct bitmap *bitmap, sector_t offset, int *blocks, int aborted) | ||
1374 | { | ||
1375 | bitmap_counter_t *bmc; | ||
1376 | unsigned long flags; | ||
1377 | /* | ||
1378 | if (offset == 0) printk("bitmap_end_sync 0 (%d)\n", aborted); | ||
1379 | */ if (bitmap == NULL) { | ||
1380 | *blocks = 1024; | ||
1381 | return; | ||
1382 | } | ||
1383 | spin_lock_irqsave(&bitmap->lock, flags); | ||
1384 | bmc = bitmap_get_counter(bitmap, offset, blocks, 0); | ||
1385 | if (bmc == NULL) | ||
1386 | goto unlock; | ||
1387 | /* locked */ | ||
1388 | /* | ||
1389 | if (offset == 0) printk("bitmap_end sync found 0x%x, blocks %d\n", *bmc, *blocks); | ||
1390 | */ | ||
1391 | if (RESYNC(*bmc)) { | ||
1392 | *bmc &= ~RESYNC_MASK; | ||
1393 | |||
1394 | if (!NEEDED(*bmc) && aborted) | ||
1395 | *bmc |= NEEDED_MASK; | ||
1396 | else { | ||
1397 | if (*bmc <= 2) { | ||
1398 | set_page_attr(bitmap, | ||
1399 | filemap_get_page(bitmap, offset >> CHUNK_BLOCK_SHIFT(bitmap)), | ||
1400 | BITMAP_PAGE_CLEAN); | ||
1401 | } | ||
1402 | } | ||
1403 | } | ||
1404 | unlock: | ||
1405 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
1406 | } | ||
1407 | |||
1408 | void bitmap_close_sync(struct bitmap *bitmap) | ||
1409 | { | ||
1410 | /* Sync has finished, and any bitmap chunks that weren't synced | ||
1411 | * properly have been aborted. It remains to us to clear the | ||
1412 | * RESYNC bit wherever it is still on | ||
1413 | */ | ||
1414 | sector_t sector = 0; | ||
1415 | int blocks; | ||
1416 | if (!bitmap) return; | ||
1417 | while (sector < bitmap->mddev->resync_max_sectors) { | ||
1418 | bitmap_end_sync(bitmap, sector, &blocks, 0); | ||
1419 | /* | ||
1420 | if (sector < 500) printk("bitmap_close_sync: sec %llu blks %d\n", | ||
1421 | (unsigned long long)sector, blocks); | ||
1422 | */ sector += blocks; | ||
1423 | } | ||
1424 | } | ||
1425 | |||
1426 | static void bitmap_set_memory_bits(struct bitmap *bitmap, sector_t offset, | ||
1427 | unsigned long sectors, int in_sync) | ||
1428 | { | ||
1429 | /* For each chunk covered by any of these sectors, set the | ||
1430 | * counter to 1 and set resync_needed unless in_sync. They should all | ||
1431 | * be 0 at this point | ||
1432 | */ | ||
1433 | while (sectors) { | ||
1434 | int secs; | ||
1435 | bitmap_counter_t *bmc; | ||
1436 | spin_lock_irq(&bitmap->lock); | ||
1437 | bmc = bitmap_get_counter(bitmap, offset, &secs, 1); | ||
1438 | if (!bmc) { | ||
1439 | spin_unlock_irq(&bitmap->lock); | ||
1440 | return; | ||
1441 | } | ||
1442 | if (! *bmc) { | ||
1443 | struct page *page; | ||
1444 | *bmc = 1 | (in_sync? 0 : NEEDED_MASK); | ||
1445 | bitmap_count_page(bitmap, offset, 1); | ||
1446 | page = filemap_get_page(bitmap, offset >> CHUNK_BLOCK_SHIFT(bitmap)); | ||
1447 | set_page_attr(bitmap, page, BITMAP_PAGE_CLEAN); | ||
1448 | } | ||
1449 | spin_unlock_irq(&bitmap->lock); | ||
1450 | if (sectors > secs) | ||
1451 | sectors -= secs; | ||
1452 | else | ||
1453 | sectors = 0; | ||
1454 | } | ||
1455 | } | ||
1456 | |||
1457 | /* | ||
1458 | * free memory that was allocated | ||
1459 | */ | ||
1460 | void bitmap_destroy(mddev_t *mddev) | ||
1461 | { | ||
1462 | unsigned long k, pages; | ||
1463 | struct bitmap_page *bp; | ||
1464 | struct bitmap *bitmap = mddev->bitmap; | ||
1465 | |||
1466 | if (!bitmap) /* there was no bitmap */ | ||
1467 | return; | ||
1468 | |||
1469 | mddev->bitmap = NULL; /* disconnect from the md device */ | ||
1470 | |||
1471 | /* release the bitmap file and kill the daemon */ | ||
1472 | bitmap_file_put(bitmap); | ||
1473 | |||
1474 | bp = bitmap->bp; | ||
1475 | pages = bitmap->pages; | ||
1476 | |||
1477 | /* free all allocated memory */ | ||
1478 | |||
1479 | mempool_destroy(bitmap->write_pool); | ||
1480 | |||
1481 | if (bp) /* deallocate the page memory */ | ||
1482 | for (k = 0; k < pages; k++) | ||
1483 | if (bp[k].map && !bp[k].hijacked) | ||
1484 | kfree(bp[k].map); | ||
1485 | kfree(bp); | ||
1486 | kfree(bitmap); | ||
1487 | } | ||
1488 | |||
1489 | /* | ||
1490 | * initialize the bitmap structure | ||
1491 | * if this returns an error, bitmap_destroy must be called to do clean up | ||
1492 | */ | ||
1493 | int bitmap_create(mddev_t *mddev) | ||
1494 | { | ||
1495 | struct bitmap *bitmap; | ||
1496 | unsigned long blocks = mddev->resync_max_sectors; | ||
1497 | unsigned long chunks; | ||
1498 | unsigned long pages; | ||
1499 | struct file *file = mddev->bitmap_file; | ||
1500 | int err; | ||
1501 | |||
1502 | BUG_ON(sizeof(bitmap_super_t) != 256); | ||
1503 | |||
1504 | if (!file && !mddev->bitmap_offset) /* bitmap disabled, nothing to do */ | ||
1505 | return 0; | ||
1506 | |||
1507 | BUG_ON(file && mddev->bitmap_offset); | ||
1508 | |||
1509 | bitmap = kmalloc(sizeof(*bitmap), GFP_KERNEL); | ||
1510 | if (!bitmap) | ||
1511 | return -ENOMEM; | ||
1512 | |||
1513 | memset(bitmap, 0, sizeof(*bitmap)); | ||
1514 | |||
1515 | spin_lock_init(&bitmap->lock); | ||
1516 | bitmap->mddev = mddev; | ||
1517 | mddev->bitmap = bitmap; | ||
1518 | |||
1519 | spin_lock_init(&bitmap->write_lock); | ||
1520 | INIT_LIST_HEAD(&bitmap->complete_pages); | ||
1521 | init_waitqueue_head(&bitmap->write_wait); | ||
1522 | bitmap->write_pool = mempool_create(WRITE_POOL_SIZE, write_pool_alloc, | ||
1523 | write_pool_free, NULL); | ||
1524 | if (!bitmap->write_pool) | ||
1525 | return -ENOMEM; | ||
1526 | |||
1527 | bitmap->file = file; | ||
1528 | bitmap->offset = mddev->bitmap_offset; | ||
1529 | if (file) get_file(file); | ||
1530 | /* read superblock from bitmap file (this sets bitmap->chunksize) */ | ||
1531 | err = bitmap_read_sb(bitmap); | ||
1532 | if (err) | ||
1533 | return err; | ||
1534 | |||
1535 | bitmap->chunkshift = find_first_bit(&bitmap->chunksize, | ||
1536 | sizeof(bitmap->chunksize)); | ||
1537 | |||
1538 | /* now that chunksize and chunkshift are set, we can use these macros */ | ||
1539 | chunks = (blocks + CHUNK_BLOCK_RATIO(bitmap) - 1) / | ||
1540 | CHUNK_BLOCK_RATIO(bitmap); | ||
1541 | pages = (chunks + PAGE_COUNTER_RATIO - 1) / PAGE_COUNTER_RATIO; | ||
1542 | |||
1543 | BUG_ON(!pages); | ||
1544 | |||
1545 | bitmap->chunks = chunks; | ||
1546 | bitmap->pages = pages; | ||
1547 | bitmap->missing_pages = pages; | ||
1548 | bitmap->counter_bits = COUNTER_BITS; | ||
1549 | |||
1550 | bitmap->syncchunk = ~0UL; | ||
1551 | |||
1552 | #if INJECT_FATAL_FAULT_1 | ||
1553 | bitmap->bp = NULL; | ||
1554 | #else | ||
1555 | bitmap->bp = kmalloc(pages * sizeof(*bitmap->bp), GFP_KERNEL); | ||
1556 | #endif | ||
1557 | if (!bitmap->bp) | ||
1558 | return -ENOMEM; | ||
1559 | memset(bitmap->bp, 0, pages * sizeof(*bitmap->bp)); | ||
1560 | |||
1561 | bitmap->flags |= BITMAP_ACTIVE; | ||
1562 | |||
1563 | /* now that we have some pages available, initialize the in-memory | ||
1564 | * bitmap from the on-disk bitmap */ | ||
1565 | err = bitmap_init_from_disk(bitmap, mddev->recovery_cp == MaxSector); | ||
1566 | if (err) | ||
1567 | return err; | ||
1568 | |||
1569 | printk(KERN_INFO "created bitmap (%lu pages) for device %s\n", | ||
1570 | pages, bmname(bitmap)); | ||
1571 | |||
1572 | /* kick off the bitmap daemons */ | ||
1573 | err = bitmap_start_daemons(bitmap); | ||
1574 | if (err) | ||
1575 | return err; | ||
1576 | return bitmap_update_sb(bitmap); | ||
1577 | } | ||
1578 | |||
1579 | /* the bitmap API -- for raid personalities */ | ||
1580 | EXPORT_SYMBOL(bitmap_startwrite); | ||
1581 | EXPORT_SYMBOL(bitmap_endwrite); | ||
1582 | EXPORT_SYMBOL(bitmap_start_sync); | ||
1583 | EXPORT_SYMBOL(bitmap_end_sync); | ||
1584 | EXPORT_SYMBOL(bitmap_unplug); | ||
1585 | EXPORT_SYMBOL(bitmap_close_sync); | ||
1586 | EXPORT_SYMBOL(bitmap_daemon_work); | ||
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index 0dd6c2b5391b..d0a4bab220e5 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c | |||
@@ -704,8 +704,7 @@ static void crypt_dtr(struct dm_target *ti) | |||
704 | mempool_destroy(cc->page_pool); | 704 | mempool_destroy(cc->page_pool); |
705 | mempool_destroy(cc->io_pool); | 705 | mempool_destroy(cc->io_pool); |
706 | 706 | ||
707 | if (cc->iv_mode) | 707 | kfree(cc->iv_mode); |
708 | kfree(cc->iv_mode); | ||
709 | if (cc->iv_gen_ops && cc->iv_gen_ops->dtr) | 708 | if (cc->iv_gen_ops && cc->iv_gen_ops->dtr) |
710 | cc->iv_gen_ops->dtr(cc); | 709 | cc->iv_gen_ops->dtr(cc); |
711 | crypto_free_tfm(cc->tfm); | 710 | crypto_free_tfm(cc->tfm); |
diff --git a/drivers/md/linear.c b/drivers/md/linear.c index b1941b887f46..8d740013d74d 100644 --- a/drivers/md/linear.c +++ b/drivers/md/linear.c | |||
@@ -217,8 +217,7 @@ static int linear_run (mddev_t *mddev) | |||
217 | return 0; | 217 | return 0; |
218 | 218 | ||
219 | out: | 219 | out: |
220 | if (conf) | 220 | kfree(conf); |
221 | kfree(conf); | ||
222 | return 1; | 221 | return 1; |
223 | } | 222 | } |
224 | 223 | ||
diff --git a/drivers/md/md.c b/drivers/md/md.c index d899204d3743..0c6b5b6baff6 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -19,6 +19,9 @@ | |||
19 | 19 | ||
20 | Neil Brown <neilb@cse.unsw.edu.au>. | 20 | Neil Brown <neilb@cse.unsw.edu.au>. |
21 | 21 | ||
22 | - persistent bitmap code | ||
23 | Copyright (C) 2003-2004, Paul Clements, SteelEye Technology, Inc. | ||
24 | |||
22 | This program is free software; you can redistribute it and/or modify | 25 | This program is free software; you can redistribute it and/or modify |
23 | it under the terms of the GNU General Public License as published by | 26 | it under the terms of the GNU General Public License as published by |
24 | the Free Software Foundation; either version 2, or (at your option) | 27 | the Free Software Foundation; either version 2, or (at your option) |
@@ -33,6 +36,7 @@ | |||
33 | #include <linux/config.h> | 36 | #include <linux/config.h> |
34 | #include <linux/linkage.h> | 37 | #include <linux/linkage.h> |
35 | #include <linux/raid/md.h> | 38 | #include <linux/raid/md.h> |
39 | #include <linux/raid/bitmap.h> | ||
36 | #include <linux/sysctl.h> | 40 | #include <linux/sysctl.h> |
37 | #include <linux/devfs_fs_kernel.h> | 41 | #include <linux/devfs_fs_kernel.h> |
38 | #include <linux/buffer_head.h> /* for invalidate_bdev */ | 42 | #include <linux/buffer_head.h> /* for invalidate_bdev */ |
@@ -40,6 +44,8 @@ | |||
40 | 44 | ||
41 | #include <linux/init.h> | 45 | #include <linux/init.h> |
42 | 46 | ||
47 | #include <linux/file.h> | ||
48 | |||
43 | #ifdef CONFIG_KMOD | 49 | #ifdef CONFIG_KMOD |
44 | #include <linux/kmod.h> | 50 | #include <linux/kmod.h> |
45 | #endif | 51 | #endif |
@@ -189,8 +195,7 @@ static mddev_t * mddev_find(dev_t unit) | |||
189 | if (mddev->unit == unit) { | 195 | if (mddev->unit == unit) { |
190 | mddev_get(mddev); | 196 | mddev_get(mddev); |
191 | spin_unlock(&all_mddevs_lock); | 197 | spin_unlock(&all_mddevs_lock); |
192 | if (new) | 198 | kfree(new); |
193 | kfree(new); | ||
194 | return mddev; | 199 | return mddev; |
195 | } | 200 | } |
196 | 201 | ||
@@ -218,6 +223,8 @@ static mddev_t * mddev_find(dev_t unit) | |||
218 | INIT_LIST_HEAD(&new->all_mddevs); | 223 | INIT_LIST_HEAD(&new->all_mddevs); |
219 | init_timer(&new->safemode_timer); | 224 | init_timer(&new->safemode_timer); |
220 | atomic_set(&new->active, 1); | 225 | atomic_set(&new->active, 1); |
226 | spin_lock_init(&new->write_lock); | ||
227 | init_waitqueue_head(&new->sb_wait); | ||
221 | 228 | ||
222 | new->queue = blk_alloc_queue(GFP_KERNEL); | 229 | new->queue = blk_alloc_queue(GFP_KERNEL); |
223 | if (!new->queue) { | 230 | if (!new->queue) { |
@@ -320,6 +327,40 @@ static void free_disk_sb(mdk_rdev_t * rdev) | |||
320 | } | 327 | } |
321 | 328 | ||
322 | 329 | ||
330 | static int super_written(struct bio *bio, unsigned int bytes_done, int error) | ||
331 | { | ||
332 | mdk_rdev_t *rdev = bio->bi_private; | ||
333 | if (bio->bi_size) | ||
334 | return 1; | ||
335 | |||
336 | if (error || !test_bit(BIO_UPTODATE, &bio->bi_flags)) | ||
337 | md_error(rdev->mddev, rdev); | ||
338 | |||
339 | if (atomic_dec_and_test(&rdev->mddev->pending_writes)) | ||
340 | wake_up(&rdev->mddev->sb_wait); | ||
341 | return 0; | ||
342 | } | ||
343 | |||
344 | void md_super_write(mddev_t *mddev, mdk_rdev_t *rdev, | ||
345 | sector_t sector, int size, struct page *page) | ||
346 | { | ||
347 | /* write first size bytes of page to sector of rdev | ||
348 | * Increment mddev->pending_writes before returning | ||
349 | * and decrement it on completion, waking up sb_wait | ||
350 | * if zero is reached. | ||
351 | * If an error occurred, call md_error | ||
352 | */ | ||
353 | struct bio *bio = bio_alloc(GFP_NOIO, 1); | ||
354 | |||
355 | bio->bi_bdev = rdev->bdev; | ||
356 | bio->bi_sector = sector; | ||
357 | bio_add_page(bio, page, size, 0); | ||
358 | bio->bi_private = rdev; | ||
359 | bio->bi_end_io = super_written; | ||
360 | atomic_inc(&mddev->pending_writes); | ||
361 | submit_bio((1<<BIO_RW)|(1<<BIO_RW_SYNC), bio); | ||
362 | } | ||
363 | |||
323 | static int bi_complete(struct bio *bio, unsigned int bytes_done, int error) | 364 | static int bi_complete(struct bio *bio, unsigned int bytes_done, int error) |
324 | { | 365 | { |
325 | if (bio->bi_size) | 366 | if (bio->bi_size) |
@@ -329,7 +370,7 @@ static int bi_complete(struct bio *bio, unsigned int bytes_done, int error) | |||
329 | return 0; | 370 | return 0; |
330 | } | 371 | } |
331 | 372 | ||
332 | static int sync_page_io(struct block_device *bdev, sector_t sector, int size, | 373 | int sync_page_io(struct block_device *bdev, sector_t sector, int size, |
333 | struct page *page, int rw) | 374 | struct page *page, int rw) |
334 | { | 375 | { |
335 | struct bio *bio = bio_alloc(GFP_NOIO, 1); | 376 | struct bio *bio = bio_alloc(GFP_NOIO, 1); |
@@ -416,11 +457,8 @@ static int sb_equal(mdp_super_t *sb1, mdp_super_t *sb2) | |||
416 | ret = 1; | 457 | ret = 1; |
417 | 458 | ||
418 | abort: | 459 | abort: |
419 | if (tmp1) | 460 | kfree(tmp1); |
420 | kfree(tmp1); | 461 | kfree(tmp2); |
421 | if (tmp2) | ||
422 | kfree(tmp2); | ||
423 | |||
424 | return ret; | 462 | return ret; |
425 | } | 463 | } |
426 | 464 | ||
@@ -569,6 +607,8 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t *rdev) | |||
569 | mdp_disk_t *desc; | 607 | mdp_disk_t *desc; |
570 | mdp_super_t *sb = (mdp_super_t *)page_address(rdev->sb_page); | 608 | mdp_super_t *sb = (mdp_super_t *)page_address(rdev->sb_page); |
571 | 609 | ||
610 | rdev->raid_disk = -1; | ||
611 | rdev->in_sync = 0; | ||
572 | if (mddev->raid_disks == 0) { | 612 | if (mddev->raid_disks == 0) { |
573 | mddev->major_version = 0; | 613 | mddev->major_version = 0; |
574 | mddev->minor_version = sb->minor_version; | 614 | mddev->minor_version = sb->minor_version; |
@@ -599,16 +639,35 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t *rdev) | |||
599 | memcpy(mddev->uuid+12,&sb->set_uuid3, 4); | 639 | memcpy(mddev->uuid+12,&sb->set_uuid3, 4); |
600 | 640 | ||
601 | mddev->max_disks = MD_SB_DISKS; | 641 | mddev->max_disks = MD_SB_DISKS; |
602 | } else { | 642 | |
603 | __u64 ev1; | 643 | if (sb->state & (1<<MD_SB_BITMAP_PRESENT) && |
604 | ev1 = md_event(sb); | 644 | mddev->bitmap_file == NULL) { |
645 | if (mddev->level != 1) { | ||
646 | /* FIXME use a better test */ | ||
647 | printk(KERN_WARNING "md: bitmaps only support for raid1\n"); | ||
648 | return -EINVAL; | ||
649 | } | ||
650 | mddev->bitmap_offset = (MD_SB_BYTES >> 9); | ||
651 | } | ||
652 | |||
653 | } else if (mddev->pers == NULL) { | ||
654 | /* Insist on good event counter while assembling */ | ||
655 | __u64 ev1 = md_event(sb); | ||
605 | ++ev1; | 656 | ++ev1; |
606 | if (ev1 < mddev->events) | 657 | if (ev1 < mddev->events) |
607 | return -EINVAL; | 658 | return -EINVAL; |
608 | } | 659 | } else if (mddev->bitmap) { |
660 | /* if adding to array with a bitmap, then we can accept an | ||
661 | * older device ... but not too old. | ||
662 | */ | ||
663 | __u64 ev1 = md_event(sb); | ||
664 | if (ev1 < mddev->bitmap->events_cleared) | ||
665 | return 0; | ||
666 | } else /* just a hot-add of a new device, leave raid_disk at -1 */ | ||
667 | return 0; | ||
668 | |||
609 | if (mddev->level != LEVEL_MULTIPATH) { | 669 | if (mddev->level != LEVEL_MULTIPATH) { |
610 | rdev->raid_disk = -1; | 670 | rdev->faulty = 0; |
611 | rdev->in_sync = rdev->faulty = 0; | ||
612 | desc = sb->disks + rdev->desc_nr; | 671 | desc = sb->disks + rdev->desc_nr; |
613 | 672 | ||
614 | if (desc->state & (1<<MD_DISK_FAULTY)) | 673 | if (desc->state & (1<<MD_DISK_FAULTY)) |
@@ -618,7 +677,8 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t *rdev) | |||
618 | rdev->in_sync = 1; | 677 | rdev->in_sync = 1; |
619 | rdev->raid_disk = desc->raid_disk; | 678 | rdev->raid_disk = desc->raid_disk; |
620 | } | 679 | } |
621 | } | 680 | } else /* MULTIPATH are always insync */ |
681 | rdev->in_sync = 1; | ||
622 | return 0; | 682 | return 0; |
623 | } | 683 | } |
624 | 684 | ||
@@ -683,6 +743,9 @@ static void super_90_sync(mddev_t *mddev, mdk_rdev_t *rdev) | |||
683 | sb->layout = mddev->layout; | 743 | sb->layout = mddev->layout; |
684 | sb->chunk_size = mddev->chunk_size; | 744 | sb->chunk_size = mddev->chunk_size; |
685 | 745 | ||
746 | if (mddev->bitmap && mddev->bitmap_file == NULL) | ||
747 | sb->state |= (1<<MD_SB_BITMAP_PRESENT); | ||
748 | |||
686 | sb->disks[0].state = (1<<MD_DISK_REMOVED); | 749 | sb->disks[0].state = (1<<MD_DISK_REMOVED); |
687 | ITERATE_RDEV(mddev,rdev2,tmp) { | 750 | ITERATE_RDEV(mddev,rdev2,tmp) { |
688 | mdp_disk_t *d; | 751 | mdp_disk_t *d; |
@@ -780,7 +843,7 @@ static int super_1_load(mdk_rdev_t *rdev, mdk_rdev_t *refdev, int minor_version) | |||
780 | case 0: | 843 | case 0: |
781 | sb_offset = rdev->bdev->bd_inode->i_size >> 9; | 844 | sb_offset = rdev->bdev->bd_inode->i_size >> 9; |
782 | sb_offset -= 8*2; | 845 | sb_offset -= 8*2; |
783 | sb_offset &= ~(4*2-1); | 846 | sb_offset &= ~(sector_t)(4*2-1); |
784 | /* convert from sectors to K */ | 847 | /* convert from sectors to K */ |
785 | sb_offset /= 2; | 848 | sb_offset /= 2; |
786 | break; | 849 | break; |
@@ -860,6 +923,8 @@ static int super_1_validate(mddev_t *mddev, mdk_rdev_t *rdev) | |||
860 | { | 923 | { |
861 | struct mdp_superblock_1 *sb = (struct mdp_superblock_1*)page_address(rdev->sb_page); | 924 | struct mdp_superblock_1 *sb = (struct mdp_superblock_1*)page_address(rdev->sb_page); |
862 | 925 | ||
926 | rdev->raid_disk = -1; | ||
927 | rdev->in_sync = 0; | ||
863 | if (mddev->raid_disks == 0) { | 928 | if (mddev->raid_disks == 0) { |
864 | mddev->major_version = 1; | 929 | mddev->major_version = 1; |
865 | mddev->patch_version = 0; | 930 | mddev->patch_version = 0; |
@@ -877,13 +942,30 @@ static int super_1_validate(mddev_t *mddev, mdk_rdev_t *rdev) | |||
877 | memcpy(mddev->uuid, sb->set_uuid, 16); | 942 | memcpy(mddev->uuid, sb->set_uuid, 16); |
878 | 943 | ||
879 | mddev->max_disks = (4096-256)/2; | 944 | mddev->max_disks = (4096-256)/2; |
880 | } else { | 945 | |
881 | __u64 ev1; | 946 | if ((le32_to_cpu(sb->feature_map) & 1) && |
882 | ev1 = le64_to_cpu(sb->events); | 947 | mddev->bitmap_file == NULL ) { |
948 | if (mddev->level != 1) { | ||
949 | printk(KERN_WARNING "md: bitmaps only supported for raid1\n"); | ||
950 | return -EINVAL; | ||
951 | } | ||
952 | mddev->bitmap_offset = (__s32)le32_to_cpu(sb->bitmap_offset); | ||
953 | } | ||
954 | } else if (mddev->pers == NULL) { | ||
955 | /* Insist of good event counter while assembling */ | ||
956 | __u64 ev1 = le64_to_cpu(sb->events); | ||
883 | ++ev1; | 957 | ++ev1; |
884 | if (ev1 < mddev->events) | 958 | if (ev1 < mddev->events) |
885 | return -EINVAL; | 959 | return -EINVAL; |
886 | } | 960 | } else if (mddev->bitmap) { |
961 | /* If adding to array with a bitmap, then we can accept an | ||
962 | * older device, but not too old. | ||
963 | */ | ||
964 | __u64 ev1 = le64_to_cpu(sb->events); | ||
965 | if (ev1 < mddev->bitmap->events_cleared) | ||
966 | return 0; | ||
967 | } else /* just a hot-add of a new device, leave raid_disk at -1 */ | ||
968 | return 0; | ||
887 | 969 | ||
888 | if (mddev->level != LEVEL_MULTIPATH) { | 970 | if (mddev->level != LEVEL_MULTIPATH) { |
889 | int role; | 971 | int role; |
@@ -891,14 +973,10 @@ static int super_1_validate(mddev_t *mddev, mdk_rdev_t *rdev) | |||
891 | role = le16_to_cpu(sb->dev_roles[rdev->desc_nr]); | 973 | role = le16_to_cpu(sb->dev_roles[rdev->desc_nr]); |
892 | switch(role) { | 974 | switch(role) { |
893 | case 0xffff: /* spare */ | 975 | case 0xffff: /* spare */ |
894 | rdev->in_sync = 0; | ||
895 | rdev->faulty = 0; | 976 | rdev->faulty = 0; |
896 | rdev->raid_disk = -1; | ||
897 | break; | 977 | break; |
898 | case 0xfffe: /* faulty */ | 978 | case 0xfffe: /* faulty */ |
899 | rdev->in_sync = 0; | ||
900 | rdev->faulty = 1; | 979 | rdev->faulty = 1; |
901 | rdev->raid_disk = -1; | ||
902 | break; | 980 | break; |
903 | default: | 981 | default: |
904 | rdev->in_sync = 1; | 982 | rdev->in_sync = 1; |
@@ -906,7 +984,9 @@ static int super_1_validate(mddev_t *mddev, mdk_rdev_t *rdev) | |||
906 | rdev->raid_disk = role; | 984 | rdev->raid_disk = role; |
907 | break; | 985 | break; |
908 | } | 986 | } |
909 | } | 987 | } else /* MULTIPATH are always insync */ |
988 | rdev->in_sync = 1; | ||
989 | |||
910 | return 0; | 990 | return 0; |
911 | } | 991 | } |
912 | 992 | ||
@@ -933,6 +1013,11 @@ static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev) | |||
933 | else | 1013 | else |
934 | sb->resync_offset = cpu_to_le64(0); | 1014 | sb->resync_offset = cpu_to_le64(0); |
935 | 1015 | ||
1016 | if (mddev->bitmap && mddev->bitmap_file == NULL) { | ||
1017 | sb->bitmap_offset = cpu_to_le32((__u32)mddev->bitmap_offset); | ||
1018 | sb->feature_map = cpu_to_le32(1); | ||
1019 | } | ||
1020 | |||
936 | max_dev = 0; | 1021 | max_dev = 0; |
937 | ITERATE_RDEV(mddev,rdev2,tmp) | 1022 | ITERATE_RDEV(mddev,rdev2,tmp) |
938 | if (rdev2->desc_nr+1 > max_dev) | 1023 | if (rdev2->desc_nr+1 > max_dev) |
@@ -1196,8 +1281,11 @@ void md_print_devices(void) | |||
1196 | printk("md: * <COMPLETE RAID STATE PRINTOUT> *\n"); | 1281 | printk("md: * <COMPLETE RAID STATE PRINTOUT> *\n"); |
1197 | printk("md: **********************************\n"); | 1282 | printk("md: **********************************\n"); |
1198 | ITERATE_MDDEV(mddev,tmp) { | 1283 | ITERATE_MDDEV(mddev,tmp) { |
1199 | printk("%s: ", mdname(mddev)); | ||
1200 | 1284 | ||
1285 | if (mddev->bitmap) | ||
1286 | bitmap_print_sb(mddev->bitmap); | ||
1287 | else | ||
1288 | printk("%s: ", mdname(mddev)); | ||
1201 | ITERATE_RDEV(mddev,rdev,tmp2) | 1289 | ITERATE_RDEV(mddev,rdev,tmp2) |
1202 | printk("<%s>", bdevname(rdev->bdev,b)); | 1290 | printk("<%s>", bdevname(rdev->bdev,b)); |
1203 | printk("\n"); | 1291 | printk("\n"); |
@@ -1210,30 +1298,6 @@ void md_print_devices(void) | |||
1210 | } | 1298 | } |
1211 | 1299 | ||
1212 | 1300 | ||
1213 | static int write_disk_sb(mdk_rdev_t * rdev) | ||
1214 | { | ||
1215 | char b[BDEVNAME_SIZE]; | ||
1216 | if (!rdev->sb_loaded) { | ||
1217 | MD_BUG(); | ||
1218 | return 1; | ||
1219 | } | ||
1220 | if (rdev->faulty) { | ||
1221 | MD_BUG(); | ||
1222 | return 1; | ||
1223 | } | ||
1224 | |||
1225 | dprintk(KERN_INFO "(write) %s's sb offset: %llu\n", | ||
1226 | bdevname(rdev->bdev,b), | ||
1227 | (unsigned long long)rdev->sb_offset); | ||
1228 | |||
1229 | if (sync_page_io(rdev->bdev, rdev->sb_offset<<1, MD_SB_BYTES, rdev->sb_page, WRITE)) | ||
1230 | return 0; | ||
1231 | |||
1232 | printk("md: write_disk_sb failed for device %s\n", | ||
1233 | bdevname(rdev->bdev,b)); | ||
1234 | return 1; | ||
1235 | } | ||
1236 | |||
1237 | static void sync_sbs(mddev_t * mddev) | 1301 | static void sync_sbs(mddev_t * mddev) |
1238 | { | 1302 | { |
1239 | mdk_rdev_t *rdev; | 1303 | mdk_rdev_t *rdev; |
@@ -1248,12 +1312,14 @@ static void sync_sbs(mddev_t * mddev) | |||
1248 | 1312 | ||
1249 | static void md_update_sb(mddev_t * mddev) | 1313 | static void md_update_sb(mddev_t * mddev) |
1250 | { | 1314 | { |
1251 | int err, count = 100; | 1315 | int err; |
1252 | struct list_head *tmp; | 1316 | struct list_head *tmp; |
1253 | mdk_rdev_t *rdev; | 1317 | mdk_rdev_t *rdev; |
1318 | int sync_req; | ||
1254 | 1319 | ||
1255 | mddev->sb_dirty = 0; | ||
1256 | repeat: | 1320 | repeat: |
1321 | spin_lock(&mddev->write_lock); | ||
1322 | sync_req = mddev->in_sync; | ||
1257 | mddev->utime = get_seconds(); | 1323 | mddev->utime = get_seconds(); |
1258 | mddev->events ++; | 1324 | mddev->events ++; |
1259 | 1325 | ||
@@ -1266,20 +1332,26 @@ repeat: | |||
1266 | MD_BUG(); | 1332 | MD_BUG(); |
1267 | mddev->events --; | 1333 | mddev->events --; |
1268 | } | 1334 | } |
1335 | mddev->sb_dirty = 2; | ||
1269 | sync_sbs(mddev); | 1336 | sync_sbs(mddev); |
1270 | 1337 | ||
1271 | /* | 1338 | /* |
1272 | * do not write anything to disk if using | 1339 | * do not write anything to disk if using |
1273 | * nonpersistent superblocks | 1340 | * nonpersistent superblocks |
1274 | */ | 1341 | */ |
1275 | if (!mddev->persistent) | 1342 | if (!mddev->persistent) { |
1343 | mddev->sb_dirty = 0; | ||
1344 | spin_unlock(&mddev->write_lock); | ||
1345 | wake_up(&mddev->sb_wait); | ||
1276 | return; | 1346 | return; |
1347 | } | ||
1348 | spin_unlock(&mddev->write_lock); | ||
1277 | 1349 | ||
1278 | dprintk(KERN_INFO | 1350 | dprintk(KERN_INFO |
1279 | "md: updating %s RAID superblock on device (in sync %d)\n", | 1351 | "md: updating %s RAID superblock on device (in sync %d)\n", |
1280 | mdname(mddev),mddev->in_sync); | 1352 | mdname(mddev),mddev->in_sync); |
1281 | 1353 | ||
1282 | err = 0; | 1354 | err = bitmap_update_sb(mddev->bitmap); |
1283 | ITERATE_RDEV(mddev,rdev,tmp) { | 1355 | ITERATE_RDEV(mddev,rdev,tmp) { |
1284 | char b[BDEVNAME_SIZE]; | 1356 | char b[BDEVNAME_SIZE]; |
1285 | dprintk(KERN_INFO "md: "); | 1357 | dprintk(KERN_INFO "md: "); |
@@ -1288,22 +1360,32 @@ repeat: | |||
1288 | 1360 | ||
1289 | dprintk("%s ", bdevname(rdev->bdev,b)); | 1361 | dprintk("%s ", bdevname(rdev->bdev,b)); |
1290 | if (!rdev->faulty) { | 1362 | if (!rdev->faulty) { |
1291 | err += write_disk_sb(rdev); | 1363 | md_super_write(mddev,rdev, |
1364 | rdev->sb_offset<<1, MD_SB_BYTES, | ||
1365 | rdev->sb_page); | ||
1366 | dprintk(KERN_INFO "(write) %s's sb offset: %llu\n", | ||
1367 | bdevname(rdev->bdev,b), | ||
1368 | (unsigned long long)rdev->sb_offset); | ||
1369 | |||
1292 | } else | 1370 | } else |
1293 | dprintk(")\n"); | 1371 | dprintk(")\n"); |
1294 | if (!err && mddev->level == LEVEL_MULTIPATH) | 1372 | if (mddev->level == LEVEL_MULTIPATH) |
1295 | /* only need to write one superblock... */ | 1373 | /* only need to write one superblock... */ |
1296 | break; | 1374 | break; |
1297 | } | 1375 | } |
1298 | if (err) { | 1376 | wait_event(mddev->sb_wait, atomic_read(&mddev->pending_writes)==0); |
1299 | if (--count) { | 1377 | /* if there was a failure, sb_dirty was set to 1, and we re-write super */ |
1300 | printk(KERN_ERR "md: errors occurred during superblock" | 1378 | |
1301 | " update, repeating\n"); | 1379 | spin_lock(&mddev->write_lock); |
1302 | goto repeat; | 1380 | if (mddev->in_sync != sync_req|| mddev->sb_dirty == 1) { |
1303 | } | 1381 | /* have to write it out again */ |
1304 | printk(KERN_ERR \ | 1382 | spin_unlock(&mddev->write_lock); |
1305 | "md: excessive errors occurred during superblock update, exiting\n"); | 1383 | goto repeat; |
1306 | } | 1384 | } |
1385 | mddev->sb_dirty = 0; | ||
1386 | spin_unlock(&mddev->write_lock); | ||
1387 | wake_up(&mddev->sb_wait); | ||
1388 | |||
1307 | } | 1389 | } |
1308 | 1390 | ||
1309 | /* | 1391 | /* |
@@ -1607,12 +1689,19 @@ static int do_md_run(mddev_t * mddev) | |||
1607 | 1689 | ||
1608 | mddev->resync_max_sectors = mddev->size << 1; /* may be over-ridden by personality */ | 1690 | mddev->resync_max_sectors = mddev->size << 1; /* may be over-ridden by personality */ |
1609 | 1691 | ||
1610 | err = mddev->pers->run(mddev); | 1692 | /* before we start the array running, initialise the bitmap */ |
1693 | err = bitmap_create(mddev); | ||
1694 | if (err) | ||
1695 | printk(KERN_ERR "%s: failed to create bitmap (%d)\n", | ||
1696 | mdname(mddev), err); | ||
1697 | else | ||
1698 | err = mddev->pers->run(mddev); | ||
1611 | if (err) { | 1699 | if (err) { |
1612 | printk(KERN_ERR "md: pers->run() failed ...\n"); | 1700 | printk(KERN_ERR "md: pers->run() failed ...\n"); |
1613 | module_put(mddev->pers->owner); | 1701 | module_put(mddev->pers->owner); |
1614 | mddev->pers = NULL; | 1702 | mddev->pers = NULL; |
1615 | return -EINVAL; | 1703 | bitmap_destroy(mddev); |
1704 | return err; | ||
1616 | } | 1705 | } |
1617 | atomic_set(&mddev->writes_pending,0); | 1706 | atomic_set(&mddev->writes_pending,0); |
1618 | mddev->safemode = 0; | 1707 | mddev->safemode = 0; |
@@ -1725,6 +1814,14 @@ static int do_md_stop(mddev_t * mddev, int ro) | |||
1725 | if (ro) | 1814 | if (ro) |
1726 | set_disk_ro(disk, 1); | 1815 | set_disk_ro(disk, 1); |
1727 | } | 1816 | } |
1817 | |||
1818 | bitmap_destroy(mddev); | ||
1819 | if (mddev->bitmap_file) { | ||
1820 | atomic_set(&mddev->bitmap_file->f_dentry->d_inode->i_writecount, 1); | ||
1821 | fput(mddev->bitmap_file); | ||
1822 | mddev->bitmap_file = NULL; | ||
1823 | } | ||
1824 | |||
1728 | /* | 1825 | /* |
1729 | * Free resources if final stop | 1826 | * Free resources if final stop |
1730 | */ | 1827 | */ |
@@ -1983,6 +2080,42 @@ static int get_array_info(mddev_t * mddev, void __user * arg) | |||
1983 | return 0; | 2080 | return 0; |
1984 | } | 2081 | } |
1985 | 2082 | ||
2083 | static int get_bitmap_file(mddev_t * mddev, void * arg) | ||
2084 | { | ||
2085 | mdu_bitmap_file_t *file = NULL; /* too big for stack allocation */ | ||
2086 | char *ptr, *buf = NULL; | ||
2087 | int err = -ENOMEM; | ||
2088 | |||
2089 | file = kmalloc(sizeof(*file), GFP_KERNEL); | ||
2090 | if (!file) | ||
2091 | goto out; | ||
2092 | |||
2093 | /* bitmap disabled, zero the first byte and copy out */ | ||
2094 | if (!mddev->bitmap || !mddev->bitmap->file) { | ||
2095 | file->pathname[0] = '\0'; | ||
2096 | goto copy_out; | ||
2097 | } | ||
2098 | |||
2099 | buf = kmalloc(sizeof(file->pathname), GFP_KERNEL); | ||
2100 | if (!buf) | ||
2101 | goto out; | ||
2102 | |||
2103 | ptr = file_path(mddev->bitmap->file, buf, sizeof(file->pathname)); | ||
2104 | if (!ptr) | ||
2105 | goto out; | ||
2106 | |||
2107 | strcpy(file->pathname, ptr); | ||
2108 | |||
2109 | copy_out: | ||
2110 | err = 0; | ||
2111 | if (copy_to_user(arg, file, sizeof(*file))) | ||
2112 | err = -EFAULT; | ||
2113 | out: | ||
2114 | kfree(buf); | ||
2115 | kfree(file); | ||
2116 | return err; | ||
2117 | } | ||
2118 | |||
1986 | static int get_disk_info(mddev_t * mddev, void __user * arg) | 2119 | static int get_disk_info(mddev_t * mddev, void __user * arg) |
1987 | { | 2120 | { |
1988 | mdu_disk_info_t info; | 2121 | mdu_disk_info_t info; |
@@ -2078,11 +2211,25 @@ static int add_new_disk(mddev_t * mddev, mdu_disk_info_t *info) | |||
2078 | PTR_ERR(rdev)); | 2211 | PTR_ERR(rdev)); |
2079 | return PTR_ERR(rdev); | 2212 | return PTR_ERR(rdev); |
2080 | } | 2213 | } |
2214 | /* set save_raid_disk if appropriate */ | ||
2215 | if (!mddev->persistent) { | ||
2216 | if (info->state & (1<<MD_DISK_SYNC) && | ||
2217 | info->raid_disk < mddev->raid_disks) | ||
2218 | rdev->raid_disk = info->raid_disk; | ||
2219 | else | ||
2220 | rdev->raid_disk = -1; | ||
2221 | } else | ||
2222 | super_types[mddev->major_version]. | ||
2223 | validate_super(mddev, rdev); | ||
2224 | rdev->saved_raid_disk = rdev->raid_disk; | ||
2225 | |||
2081 | rdev->in_sync = 0; /* just to be sure */ | 2226 | rdev->in_sync = 0; /* just to be sure */ |
2082 | rdev->raid_disk = -1; | 2227 | rdev->raid_disk = -1; |
2083 | err = bind_rdev_to_array(rdev, mddev); | 2228 | err = bind_rdev_to_array(rdev, mddev); |
2084 | if (err) | 2229 | if (err) |
2085 | export_rdev(rdev); | 2230 | export_rdev(rdev); |
2231 | |||
2232 | set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); | ||
2086 | if (mddev->thread) | 2233 | if (mddev->thread) |
2087 | md_wakeup_thread(mddev->thread); | 2234 | md_wakeup_thread(mddev->thread); |
2088 | return err; | 2235 | return err; |
@@ -2256,6 +2403,49 @@ abort_export: | |||
2256 | return err; | 2403 | return err; |
2257 | } | 2404 | } |
2258 | 2405 | ||
2406 | /* similar to deny_write_access, but accounts for our holding a reference | ||
2407 | * to the file ourselves */ | ||
2408 | static int deny_bitmap_write_access(struct file * file) | ||
2409 | { | ||
2410 | struct inode *inode = file->f_mapping->host; | ||
2411 | |||
2412 | spin_lock(&inode->i_lock); | ||
2413 | if (atomic_read(&inode->i_writecount) > 1) { | ||
2414 | spin_unlock(&inode->i_lock); | ||
2415 | return -ETXTBSY; | ||
2416 | } | ||
2417 | atomic_set(&inode->i_writecount, -1); | ||
2418 | spin_unlock(&inode->i_lock); | ||
2419 | |||
2420 | return 0; | ||
2421 | } | ||
2422 | |||
2423 | static int set_bitmap_file(mddev_t *mddev, int fd) | ||
2424 | { | ||
2425 | int err; | ||
2426 | |||
2427 | if (mddev->pers) | ||
2428 | return -EBUSY; | ||
2429 | |||
2430 | mddev->bitmap_file = fget(fd); | ||
2431 | |||
2432 | if (mddev->bitmap_file == NULL) { | ||
2433 | printk(KERN_ERR "%s: error: failed to get bitmap file\n", | ||
2434 | mdname(mddev)); | ||
2435 | return -EBADF; | ||
2436 | } | ||
2437 | |||
2438 | err = deny_bitmap_write_access(mddev->bitmap_file); | ||
2439 | if (err) { | ||
2440 | printk(KERN_ERR "%s: error: bitmap file is already in use\n", | ||
2441 | mdname(mddev)); | ||
2442 | fput(mddev->bitmap_file); | ||
2443 | mddev->bitmap_file = NULL; | ||
2444 | } else | ||
2445 | mddev->bitmap_offset = 0; /* file overrides offset */ | ||
2446 | return err; | ||
2447 | } | ||
2448 | |||
2259 | /* | 2449 | /* |
2260 | * set_array_info is used two different ways | 2450 | * set_array_info is used two different ways |
2261 | * The original usage is when creating a new array. | 2451 | * The original usage is when creating a new array. |
@@ -2567,8 +2757,10 @@ static int md_ioctl(struct inode *inode, struct file *file, | |||
2567 | /* | 2757 | /* |
2568 | * Commands querying/configuring an existing array: | 2758 | * Commands querying/configuring an existing array: |
2569 | */ | 2759 | */ |
2570 | /* if we are initialised yet, only ADD_NEW_DISK or STOP_ARRAY is allowed */ | 2760 | /* if we are not initialised yet, only ADD_NEW_DISK, STOP_ARRAY, |
2571 | if (!mddev->raid_disks && cmd != ADD_NEW_DISK && cmd != STOP_ARRAY && cmd != RUN_ARRAY) { | 2761 | * RUN_ARRAY, and SET_BITMAP_FILE are allowed */ |
2762 | if (!mddev->raid_disks && cmd != ADD_NEW_DISK && cmd != STOP_ARRAY | ||
2763 | && cmd != RUN_ARRAY && cmd != SET_BITMAP_FILE) { | ||
2572 | err = -ENODEV; | 2764 | err = -ENODEV; |
2573 | goto abort_unlock; | 2765 | goto abort_unlock; |
2574 | } | 2766 | } |
@@ -2582,6 +2774,10 @@ static int md_ioctl(struct inode *inode, struct file *file, | |||
2582 | err = get_array_info(mddev, argp); | 2774 | err = get_array_info(mddev, argp); |
2583 | goto done_unlock; | 2775 | goto done_unlock; |
2584 | 2776 | ||
2777 | case GET_BITMAP_FILE: | ||
2778 | err = get_bitmap_file(mddev, (void *)arg); | ||
2779 | goto done_unlock; | ||
2780 | |||
2585 | case GET_DISK_INFO: | 2781 | case GET_DISK_INFO: |
2586 | err = get_disk_info(mddev, argp); | 2782 | err = get_disk_info(mddev, argp); |
2587 | goto done_unlock; | 2783 | goto done_unlock; |
@@ -2662,6 +2858,10 @@ static int md_ioctl(struct inode *inode, struct file *file, | |||
2662 | err = do_md_run (mddev); | 2858 | err = do_md_run (mddev); |
2663 | goto done_unlock; | 2859 | goto done_unlock; |
2664 | 2860 | ||
2861 | case SET_BITMAP_FILE: | ||
2862 | err = set_bitmap_file(mddev, (int)arg); | ||
2863 | goto done_unlock; | ||
2864 | |||
2665 | default: | 2865 | default: |
2666 | if (_IOC_TYPE(cmd) == MD_MAJOR) | 2866 | if (_IOC_TYPE(cmd) == MD_MAJOR) |
2667 | printk(KERN_WARNING "md: %s(pid %d) used" | 2867 | printk(KERN_WARNING "md: %s(pid %d) used" |
@@ -2773,8 +2973,9 @@ static int md_thread(void * arg) | |||
2773 | while (thread->run) { | 2973 | while (thread->run) { |
2774 | void (*run)(mddev_t *); | 2974 | void (*run)(mddev_t *); |
2775 | 2975 | ||
2776 | wait_event_interruptible(thread->wqueue, | 2976 | wait_event_interruptible_timeout(thread->wqueue, |
2777 | test_bit(THREAD_WAKEUP, &thread->flags)); | 2977 | test_bit(THREAD_WAKEUP, &thread->flags), |
2978 | thread->timeout); | ||
2778 | if (current->flags & PF_FREEZE) | 2979 | if (current->flags & PF_FREEZE) |
2779 | refrigerator(PF_FREEZE); | 2980 | refrigerator(PF_FREEZE); |
2780 | 2981 | ||
@@ -2820,6 +3021,7 @@ mdk_thread_t *md_register_thread(void (*run) (mddev_t *), mddev_t *mddev, | |||
2820 | thread->run = run; | 3021 | thread->run = run; |
2821 | thread->mddev = mddev; | 3022 | thread->mddev = mddev; |
2822 | thread->name = name; | 3023 | thread->name = name; |
3024 | thread->timeout = MAX_SCHEDULE_TIMEOUT; | ||
2823 | ret = kernel_thread(md_thread, thread, 0); | 3025 | ret = kernel_thread(md_thread, thread, 0); |
2824 | if (ret < 0) { | 3026 | if (ret < 0) { |
2825 | kfree(thread); | 3027 | kfree(thread); |
@@ -2858,13 +3060,13 @@ void md_error(mddev_t *mddev, mdk_rdev_t *rdev) | |||
2858 | 3060 | ||
2859 | if (!rdev || rdev->faulty) | 3061 | if (!rdev || rdev->faulty) |
2860 | return; | 3062 | return; |
2861 | 3063 | /* | |
2862 | dprintk("md_error dev:%s, rdev:(%d:%d), (caller: %p,%p,%p,%p).\n", | 3064 | dprintk("md_error dev:%s, rdev:(%d:%d), (caller: %p,%p,%p,%p).\n", |
2863 | mdname(mddev), | 3065 | mdname(mddev), |
2864 | MAJOR(rdev->bdev->bd_dev), MINOR(rdev->bdev->bd_dev), | 3066 | MAJOR(rdev->bdev->bd_dev), MINOR(rdev->bdev->bd_dev), |
2865 | __builtin_return_address(0),__builtin_return_address(1), | 3067 | __builtin_return_address(0),__builtin_return_address(1), |
2866 | __builtin_return_address(2),__builtin_return_address(3)); | 3068 | __builtin_return_address(2),__builtin_return_address(3)); |
2867 | 3069 | */ | |
2868 | if (!mddev->pers->error_handler) | 3070 | if (!mddev->pers->error_handler) |
2869 | return; | 3071 | return; |
2870 | mddev->pers->error_handler(mddev,rdev); | 3072 | mddev->pers->error_handler(mddev,rdev); |
@@ -3018,6 +3220,7 @@ static int md_seq_show(struct seq_file *seq, void *v) | |||
3018 | struct list_head *tmp2; | 3220 | struct list_head *tmp2; |
3019 | mdk_rdev_t *rdev; | 3221 | mdk_rdev_t *rdev; |
3020 | int i; | 3222 | int i; |
3223 | struct bitmap *bitmap; | ||
3021 | 3224 | ||
3022 | if (v == (void*)1) { | 3225 | if (v == (void*)1) { |
3023 | seq_printf(seq, "Personalities : "); | 3226 | seq_printf(seq, "Personalities : "); |
@@ -3070,10 +3273,35 @@ static int md_seq_show(struct seq_file *seq, void *v) | |||
3070 | if (mddev->pers) { | 3273 | if (mddev->pers) { |
3071 | mddev->pers->status (seq, mddev); | 3274 | mddev->pers->status (seq, mddev); |
3072 | seq_printf(seq, "\n "); | 3275 | seq_printf(seq, "\n "); |
3073 | if (mddev->curr_resync > 2) | 3276 | if (mddev->curr_resync > 2) { |
3074 | status_resync (seq, mddev); | 3277 | status_resync (seq, mddev); |
3075 | else if (mddev->curr_resync == 1 || mddev->curr_resync == 2) | 3278 | seq_printf(seq, "\n "); |
3076 | seq_printf(seq, " resync=DELAYED"); | 3279 | } else if (mddev->curr_resync == 1 || mddev->curr_resync == 2) |
3280 | seq_printf(seq, " resync=DELAYED\n "); | ||
3281 | } else | ||
3282 | seq_printf(seq, "\n "); | ||
3283 | |||
3284 | if ((bitmap = mddev->bitmap)) { | ||
3285 | unsigned long chunk_kb; | ||
3286 | unsigned long flags; | ||
3287 | spin_lock_irqsave(&bitmap->lock, flags); | ||
3288 | chunk_kb = bitmap->chunksize >> 10; | ||
3289 | seq_printf(seq, "bitmap: %lu/%lu pages [%luKB], " | ||
3290 | "%lu%s chunk", | ||
3291 | bitmap->pages - bitmap->missing_pages, | ||
3292 | bitmap->pages, | ||
3293 | (bitmap->pages - bitmap->missing_pages) | ||
3294 | << (PAGE_SHIFT - 10), | ||
3295 | chunk_kb ? chunk_kb : bitmap->chunksize, | ||
3296 | chunk_kb ? "KB" : "B"); | ||
3297 | if (bitmap->file) { | ||
3298 | seq_printf(seq, ", file: "); | ||
3299 | seq_path(seq, bitmap->file->f_vfsmnt, | ||
3300 | bitmap->file->f_dentry," \t\n"); | ||
3301 | } | ||
3302 | |||
3303 | seq_printf(seq, "\n"); | ||
3304 | spin_unlock_irqrestore(&bitmap->lock, flags); | ||
3077 | } | 3305 | } |
3078 | 3306 | ||
3079 | seq_printf(seq, "\n"); | 3307 | seq_printf(seq, "\n"); |
@@ -3176,19 +3404,28 @@ void md_done_sync(mddev_t *mddev, int blocks, int ok) | |||
3176 | } | 3404 | } |
3177 | 3405 | ||
3178 | 3406 | ||
3179 | void md_write_start(mddev_t *mddev) | 3407 | /* md_write_start(mddev, bi) |
3408 | * If we need to update some array metadata (e.g. 'active' flag | ||
3409 | * in superblock) before writing, schedule a superblock update | ||
3410 | * and wait for it to complete. | ||
3411 | */ | ||
3412 | void md_write_start(mddev_t *mddev, struct bio *bi) | ||
3180 | { | 3413 | { |
3181 | if (!atomic_read(&mddev->writes_pending)) { | 3414 | DEFINE_WAIT(w); |
3182 | mddev_lock_uninterruptible(mddev); | 3415 | if (bio_data_dir(bi) != WRITE) |
3416 | return; | ||
3417 | |||
3418 | atomic_inc(&mddev->writes_pending); | ||
3419 | if (mddev->in_sync) { | ||
3420 | spin_lock(&mddev->write_lock); | ||
3183 | if (mddev->in_sync) { | 3421 | if (mddev->in_sync) { |
3184 | mddev->in_sync = 0; | 3422 | mddev->in_sync = 0; |
3185 | del_timer(&mddev->safemode_timer); | 3423 | mddev->sb_dirty = 1; |
3186 | md_update_sb(mddev); | 3424 | md_wakeup_thread(mddev->thread); |
3187 | } | 3425 | } |
3188 | atomic_inc(&mddev->writes_pending); | 3426 | spin_unlock(&mddev->write_lock); |
3189 | mddev_unlock(mddev); | 3427 | } |
3190 | } else | 3428 | wait_event(mddev->sb_wait, mddev->sb_dirty==0); |
3191 | atomic_inc(&mddev->writes_pending); | ||
3192 | } | 3429 | } |
3193 | 3430 | ||
3194 | void md_write_end(mddev_t *mddev) | 3431 | void md_write_end(mddev_t *mddev) |
@@ -3201,37 +3438,6 @@ void md_write_end(mddev_t *mddev) | |||
3201 | } | 3438 | } |
3202 | } | 3439 | } |
3203 | 3440 | ||
3204 | static inline void md_enter_safemode(mddev_t *mddev) | ||
3205 | { | ||
3206 | if (!mddev->safemode) return; | ||
3207 | if (mddev->safemode == 2 && | ||
3208 | (atomic_read(&mddev->writes_pending) || mddev->in_sync || | ||
3209 | mddev->recovery_cp != MaxSector)) | ||
3210 | return; /* avoid the lock */ | ||
3211 | mddev_lock_uninterruptible(mddev); | ||
3212 | if (mddev->safemode && !atomic_read(&mddev->writes_pending) && | ||
3213 | !mddev->in_sync && mddev->recovery_cp == MaxSector) { | ||
3214 | mddev->in_sync = 1; | ||
3215 | md_update_sb(mddev); | ||
3216 | } | ||
3217 | mddev_unlock(mddev); | ||
3218 | |||
3219 | if (mddev->safemode == 1) | ||
3220 | mddev->safemode = 0; | ||
3221 | } | ||
3222 | |||
3223 | void md_handle_safemode(mddev_t *mddev) | ||
3224 | { | ||
3225 | if (signal_pending(current)) { | ||
3226 | printk(KERN_INFO "md: %s in immediate safe mode\n", | ||
3227 | mdname(mddev)); | ||
3228 | mddev->safemode = 2; | ||
3229 | flush_signals(current); | ||
3230 | } | ||
3231 | md_enter_safemode(mddev); | ||
3232 | } | ||
3233 | |||
3234 | |||
3235 | static DECLARE_WAIT_QUEUE_HEAD(resync_wait); | 3441 | static DECLARE_WAIT_QUEUE_HEAD(resync_wait); |
3236 | 3442 | ||
3237 | #define SYNC_MARKS 10 | 3443 | #define SYNC_MARKS 10 |
@@ -3241,12 +3447,13 @@ static void md_do_sync(mddev_t *mddev) | |||
3241 | mddev_t *mddev2; | 3447 | mddev_t *mddev2; |
3242 | unsigned int currspeed = 0, | 3448 | unsigned int currspeed = 0, |
3243 | window; | 3449 | window; |
3244 | sector_t max_sectors,j; | 3450 | sector_t max_sectors,j, io_sectors; |
3245 | unsigned long mark[SYNC_MARKS]; | 3451 | unsigned long mark[SYNC_MARKS]; |
3246 | sector_t mark_cnt[SYNC_MARKS]; | 3452 | sector_t mark_cnt[SYNC_MARKS]; |
3247 | int last_mark,m; | 3453 | int last_mark,m; |
3248 | struct list_head *tmp; | 3454 | struct list_head *tmp; |
3249 | sector_t last_check; | 3455 | sector_t last_check; |
3456 | int skipped = 0; | ||
3250 | 3457 | ||
3251 | /* just incase thread restarts... */ | 3458 | /* just incase thread restarts... */ |
3252 | if (test_bit(MD_RECOVERY_DONE, &mddev->recovery)) | 3459 | if (test_bit(MD_RECOVERY_DONE, &mddev->recovery)) |
@@ -3312,7 +3519,7 @@ static void md_do_sync(mddev_t *mddev) | |||
3312 | 3519 | ||
3313 | if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) | 3520 | if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) |
3314 | /* resync follows the size requested by the personality, | 3521 | /* resync follows the size requested by the personality, |
3315 | * which default to physical size, but can be virtual size | 3522 | * which defaults to physical size, but can be virtual size |
3316 | */ | 3523 | */ |
3317 | max_sectors = mddev->resync_max_sectors; | 3524 | max_sectors = mddev->resync_max_sectors; |
3318 | else | 3525 | else |
@@ -3327,13 +3534,15 @@ static void md_do_sync(mddev_t *mddev) | |||
3327 | sysctl_speed_limit_max); | 3534 | sysctl_speed_limit_max); |
3328 | 3535 | ||
3329 | is_mddev_idle(mddev); /* this also initializes IO event counters */ | 3536 | is_mddev_idle(mddev); /* this also initializes IO event counters */ |
3330 | if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) | 3537 | /* we don't use the checkpoint if there's a bitmap */ |
3538 | if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && !mddev->bitmap) | ||
3331 | j = mddev->recovery_cp; | 3539 | j = mddev->recovery_cp; |
3332 | else | 3540 | else |
3333 | j = 0; | 3541 | j = 0; |
3542 | io_sectors = 0; | ||
3334 | for (m = 0; m < SYNC_MARKS; m++) { | 3543 | for (m = 0; m < SYNC_MARKS; m++) { |
3335 | mark[m] = jiffies; | 3544 | mark[m] = jiffies; |
3336 | mark_cnt[m] = j; | 3545 | mark_cnt[m] = io_sectors; |
3337 | } | 3546 | } |
3338 | last_mark = 0; | 3547 | last_mark = 0; |
3339 | mddev->resync_mark = mark[last_mark]; | 3548 | mddev->resync_mark = mark[last_mark]; |
@@ -3358,21 +3567,29 @@ static void md_do_sync(mddev_t *mddev) | |||
3358 | } | 3567 | } |
3359 | 3568 | ||
3360 | while (j < max_sectors) { | 3569 | while (j < max_sectors) { |
3361 | int sectors; | 3570 | sector_t sectors; |
3362 | 3571 | ||
3363 | sectors = mddev->pers->sync_request(mddev, j, currspeed < sysctl_speed_limit_min); | 3572 | skipped = 0; |
3364 | if (sectors < 0) { | 3573 | sectors = mddev->pers->sync_request(mddev, j, &skipped, |
3574 | currspeed < sysctl_speed_limit_min); | ||
3575 | if (sectors == 0) { | ||
3365 | set_bit(MD_RECOVERY_ERR, &mddev->recovery); | 3576 | set_bit(MD_RECOVERY_ERR, &mddev->recovery); |
3366 | goto out; | 3577 | goto out; |
3367 | } | 3578 | } |
3368 | atomic_add(sectors, &mddev->recovery_active); | 3579 | |
3580 | if (!skipped) { /* actual IO requested */ | ||
3581 | io_sectors += sectors; | ||
3582 | atomic_add(sectors, &mddev->recovery_active); | ||
3583 | } | ||
3584 | |||
3369 | j += sectors; | 3585 | j += sectors; |
3370 | if (j>1) mddev->curr_resync = j; | 3586 | if (j>1) mddev->curr_resync = j; |
3371 | 3587 | ||
3372 | if (last_check + window > j || j == max_sectors) | 3588 | |
3589 | if (last_check + window > io_sectors || j == max_sectors) | ||
3373 | continue; | 3590 | continue; |
3374 | 3591 | ||
3375 | last_check = j; | 3592 | last_check = io_sectors; |
3376 | 3593 | ||
3377 | if (test_bit(MD_RECOVERY_INTR, &mddev->recovery) || | 3594 | if (test_bit(MD_RECOVERY_INTR, &mddev->recovery) || |
3378 | test_bit(MD_RECOVERY_ERR, &mddev->recovery)) | 3595 | test_bit(MD_RECOVERY_ERR, &mddev->recovery)) |
@@ -3386,7 +3603,7 @@ static void md_do_sync(mddev_t *mddev) | |||
3386 | mddev->resync_mark = mark[next]; | 3603 | mddev->resync_mark = mark[next]; |
3387 | mddev->resync_mark_cnt = mark_cnt[next]; | 3604 | mddev->resync_mark_cnt = mark_cnt[next]; |
3388 | mark[next] = jiffies; | 3605 | mark[next] = jiffies; |
3389 | mark_cnt[next] = j - atomic_read(&mddev->recovery_active); | 3606 | mark_cnt[next] = io_sectors - atomic_read(&mddev->recovery_active); |
3390 | last_mark = next; | 3607 | last_mark = next; |
3391 | } | 3608 | } |
3392 | 3609 | ||
@@ -3413,7 +3630,8 @@ static void md_do_sync(mddev_t *mddev) | |||
3413 | mddev->queue->unplug_fn(mddev->queue); | 3630 | mddev->queue->unplug_fn(mddev->queue); |
3414 | cond_resched(); | 3631 | cond_resched(); |
3415 | 3632 | ||
3416 | currspeed = ((unsigned long)(j-mddev->resync_mark_cnt))/2/((jiffies-mddev->resync_mark)/HZ +1) +1; | 3633 | currspeed = ((unsigned long)(io_sectors-mddev->resync_mark_cnt))/2 |
3634 | /((jiffies-mddev->resync_mark)/HZ +1) +1; | ||
3417 | 3635 | ||
3418 | if (currspeed > sysctl_speed_limit_min) { | 3636 | if (currspeed > sysctl_speed_limit_min) { |
3419 | if ((currspeed > sysctl_speed_limit_max) || | 3637 | if ((currspeed > sysctl_speed_limit_max) || |
@@ -3433,7 +3651,7 @@ static void md_do_sync(mddev_t *mddev) | |||
3433 | wait_event(mddev->recovery_wait, !atomic_read(&mddev->recovery_active)); | 3651 | wait_event(mddev->recovery_wait, !atomic_read(&mddev->recovery_active)); |
3434 | 3652 | ||
3435 | /* tell personality that we are finished */ | 3653 | /* tell personality that we are finished */ |
3436 | mddev->pers->sync_request(mddev, max_sectors, 1); | 3654 | mddev->pers->sync_request(mddev, max_sectors, &skipped, 1); |
3437 | 3655 | ||
3438 | if (!test_bit(MD_RECOVERY_ERR, &mddev->recovery) && | 3656 | if (!test_bit(MD_RECOVERY_ERR, &mddev->recovery) && |
3439 | mddev->curr_resync > 2 && | 3657 | mddev->curr_resync > 2 && |
@@ -3447,7 +3665,6 @@ static void md_do_sync(mddev_t *mddev) | |||
3447 | mddev->recovery_cp = MaxSector; | 3665 | mddev->recovery_cp = MaxSector; |
3448 | } | 3666 | } |
3449 | 3667 | ||
3450 | md_enter_safemode(mddev); | ||
3451 | skip: | 3668 | skip: |
3452 | mddev->curr_resync = 0; | 3669 | mddev->curr_resync = 0; |
3453 | wake_up(&resync_wait); | 3670 | wake_up(&resync_wait); |
@@ -3484,20 +3701,48 @@ void md_check_recovery(mddev_t *mddev) | |||
3484 | struct list_head *rtmp; | 3701 | struct list_head *rtmp; |
3485 | 3702 | ||
3486 | 3703 | ||
3487 | dprintk(KERN_INFO "md: recovery thread got woken up ...\n"); | 3704 | if (mddev->bitmap) |
3705 | bitmap_daemon_work(mddev->bitmap); | ||
3488 | 3706 | ||
3489 | if (mddev->ro) | 3707 | if (mddev->ro) |
3490 | return; | 3708 | return; |
3709 | |||
3710 | if (signal_pending(current)) { | ||
3711 | if (mddev->pers->sync_request) { | ||
3712 | printk(KERN_INFO "md: %s in immediate safe mode\n", | ||
3713 | mdname(mddev)); | ||
3714 | mddev->safemode = 2; | ||
3715 | } | ||
3716 | flush_signals(current); | ||
3717 | } | ||
3718 | |||
3491 | if ( ! ( | 3719 | if ( ! ( |
3492 | mddev->sb_dirty || | 3720 | mddev->sb_dirty || |
3493 | test_bit(MD_RECOVERY_NEEDED, &mddev->recovery) || | 3721 | test_bit(MD_RECOVERY_NEEDED, &mddev->recovery) || |
3494 | test_bit(MD_RECOVERY_DONE, &mddev->recovery) | 3722 | test_bit(MD_RECOVERY_DONE, &mddev->recovery) || |
3723 | (mddev->safemode == 1) || | ||
3724 | (mddev->safemode == 2 && ! atomic_read(&mddev->writes_pending) | ||
3725 | && !mddev->in_sync && mddev->recovery_cp == MaxSector) | ||
3495 | )) | 3726 | )) |
3496 | return; | 3727 | return; |
3728 | |||
3497 | if (mddev_trylock(mddev)==0) { | 3729 | if (mddev_trylock(mddev)==0) { |
3498 | int spares =0; | 3730 | int spares =0; |
3731 | |||
3732 | spin_lock(&mddev->write_lock); | ||
3733 | if (mddev->safemode && !atomic_read(&mddev->writes_pending) && | ||
3734 | !mddev->in_sync && mddev->recovery_cp == MaxSector) { | ||
3735 | mddev->in_sync = 1; | ||
3736 | mddev->sb_dirty = 1; | ||
3737 | } | ||
3738 | if (mddev->safemode == 1) | ||
3739 | mddev->safemode = 0; | ||
3740 | spin_unlock(&mddev->write_lock); | ||
3741 | |||
3499 | if (mddev->sb_dirty) | 3742 | if (mddev->sb_dirty) |
3500 | md_update_sb(mddev); | 3743 | md_update_sb(mddev); |
3744 | |||
3745 | |||
3501 | if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) && | 3746 | if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) && |
3502 | !test_bit(MD_RECOVERY_DONE, &mddev->recovery)) { | 3747 | !test_bit(MD_RECOVERY_DONE, &mddev->recovery)) { |
3503 | /* resync/recovery still happening */ | 3748 | /* resync/recovery still happening */ |
@@ -3515,6 +3760,14 @@ void md_check_recovery(mddev_t *mddev) | |||
3515 | mddev->pers->spare_active(mddev); | 3760 | mddev->pers->spare_active(mddev); |
3516 | } | 3761 | } |
3517 | md_update_sb(mddev); | 3762 | md_update_sb(mddev); |
3763 | |||
3764 | /* if array is no-longer degraded, then any saved_raid_disk | ||
3765 | * information must be scrapped | ||
3766 | */ | ||
3767 | if (!mddev->degraded) | ||
3768 | ITERATE_RDEV(mddev,rdev,rtmp) | ||
3769 | rdev->saved_raid_disk = -1; | ||
3770 | |||
3518 | mddev->recovery = 0; | 3771 | mddev->recovery = 0; |
3519 | /* flag recovery needed just to double check */ | 3772 | /* flag recovery needed just to double check */ |
3520 | set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); | 3773 | set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); |
@@ -3557,6 +3810,13 @@ void md_check_recovery(mddev_t *mddev) | |||
3557 | set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); | 3810 | set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); |
3558 | if (!spares) | 3811 | if (!spares) |
3559 | set_bit(MD_RECOVERY_SYNC, &mddev->recovery); | 3812 | set_bit(MD_RECOVERY_SYNC, &mddev->recovery); |
3813 | if (spares && mddev->bitmap && ! mddev->bitmap->file) { | ||
3814 | /* We are adding a device or devices to an array | ||
3815 | * which has the bitmap stored on all devices. | ||
3816 | * So make sure all bitmap pages get written | ||
3817 | */ | ||
3818 | bitmap_write_all(mddev->bitmap); | ||
3819 | } | ||
3560 | mddev->sync_thread = md_register_thread(md_do_sync, | 3820 | mddev->sync_thread = md_register_thread(md_do_sync, |
3561 | mddev, | 3821 | mddev, |
3562 | "%s_resync"); | 3822 | "%s_resync"); |
@@ -3624,6 +3884,8 @@ static int __init md_init(void) | |||
3624 | " MD_SB_DISKS=%d\n", | 3884 | " MD_SB_DISKS=%d\n", |
3625 | MD_MAJOR_VERSION, MD_MINOR_VERSION, | 3885 | MD_MAJOR_VERSION, MD_MINOR_VERSION, |
3626 | MD_PATCHLEVEL_VERSION, MAX_MD_DEVS, MD_SB_DISKS); | 3886 | MD_PATCHLEVEL_VERSION, MAX_MD_DEVS, MD_SB_DISKS); |
3887 | printk(KERN_INFO "md: bitmap version %d.%d\n", BITMAP_MAJOR, | ||
3888 | BITMAP_MINOR); | ||
3627 | 3889 | ||
3628 | if (register_blkdev(MAJOR_NR, "md")) | 3890 | if (register_blkdev(MAJOR_NR, "md")) |
3629 | return -1; | 3891 | return -1; |
@@ -3739,7 +4001,6 @@ EXPORT_SYMBOL(md_error); | |||
3739 | EXPORT_SYMBOL(md_done_sync); | 4001 | EXPORT_SYMBOL(md_done_sync); |
3740 | EXPORT_SYMBOL(md_write_start); | 4002 | EXPORT_SYMBOL(md_write_start); |
3741 | EXPORT_SYMBOL(md_write_end); | 4003 | EXPORT_SYMBOL(md_write_end); |
3742 | EXPORT_SYMBOL(md_handle_safemode); | ||
3743 | EXPORT_SYMBOL(md_register_thread); | 4004 | EXPORT_SYMBOL(md_register_thread); |
3744 | EXPORT_SYMBOL(md_unregister_thread); | 4005 | EXPORT_SYMBOL(md_unregister_thread); |
3745 | EXPORT_SYMBOL(md_wakeup_thread); | 4006 | EXPORT_SYMBOL(md_wakeup_thread); |
diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c index 2ae2d709cb15..2d2ca7fa0265 100644 --- a/drivers/md/multipath.c +++ b/drivers/md/multipath.c | |||
@@ -533,8 +533,7 @@ static int multipath_run (mddev_t *mddev) | |||
533 | out_free_conf: | 533 | out_free_conf: |
534 | if (conf->pool) | 534 | if (conf->pool) |
535 | mempool_destroy(conf->pool); | 535 | mempool_destroy(conf->pool); |
536 | if (conf->multipaths) | 536 | kfree(conf->multipaths); |
537 | kfree(conf->multipaths); | ||
538 | kfree(conf); | 537 | kfree(conf); |
539 | mddev->private = NULL; | 538 | mddev->private = NULL; |
540 | out: | 539 | out: |
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index e7d934eca06f..e11dd14d0b43 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c | |||
@@ -371,10 +371,8 @@ static int raid0_run (mddev_t *mddev) | |||
371 | return 0; | 371 | return 0; |
372 | 372 | ||
373 | out_free_conf: | 373 | out_free_conf: |
374 | if (conf->strip_zone) | 374 | kfree(conf->strip_zone); |
375 | kfree(conf->strip_zone); | 375 | kfree(conf->devlist); |
376 | if (conf->devlist) | ||
377 | kfree (conf->devlist); | ||
378 | kfree(conf); | 376 | kfree(conf); |
379 | mddev->private = NULL; | 377 | mddev->private = NULL; |
380 | out: | 378 | out: |
@@ -386,11 +384,11 @@ static int raid0_stop (mddev_t *mddev) | |||
386 | raid0_conf_t *conf = mddev_to_conf(mddev); | 384 | raid0_conf_t *conf = mddev_to_conf(mddev); |
387 | 385 | ||
388 | blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ | 386 | blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ |
389 | kfree (conf->hash_table); | 387 | kfree(conf->hash_table); |
390 | conf->hash_table = NULL; | 388 | conf->hash_table = NULL; |
391 | kfree (conf->strip_zone); | 389 | kfree(conf->strip_zone); |
392 | conf->strip_zone = NULL; | 390 | conf->strip_zone = NULL; |
393 | kfree (conf); | 391 | kfree(conf); |
394 | mddev->private = NULL; | 392 | mddev->private = NULL; |
395 | 393 | ||
396 | return 0; | 394 | return 0; |
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 1db5de52d376..ff1dbec864af 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -12,6 +12,15 @@ | |||
12 | * Fixes to reconstruction by Jakob Østergaard" <jakob@ostenfeld.dk> | 12 | * Fixes to reconstruction by Jakob Østergaard" <jakob@ostenfeld.dk> |
13 | * Various fixes by Neil Brown <neilb@cse.unsw.edu.au> | 13 | * Various fixes by Neil Brown <neilb@cse.unsw.edu.au> |
14 | * | 14 | * |
15 | * Changes by Peter T. Breuer <ptb@it.uc3m.es> 31/1/2003 to support | ||
16 | * bitmapped intelligence in resync: | ||
17 | * | ||
18 | * - bitmap marked during normal i/o | ||
19 | * - bitmap used to skip nondirty blocks during sync | ||
20 | * | ||
21 | * Additions to bitmap code, (C) 2003-2004 Paul Clements, SteelEye Technology: | ||
22 | * - persistent bitmap code | ||
23 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | 24 | * This program is free software; you can redistribute it and/or modify |
16 | * it under the terms of the GNU General Public License as published by | 25 | * it under the terms of the GNU General Public License as published by |
17 | * the Free Software Foundation; either version 2, or (at your option) | 26 | * the Free Software Foundation; either version 2, or (at your option) |
@@ -22,7 +31,16 @@ | |||
22 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 31 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
23 | */ | 32 | */ |
24 | 33 | ||
34 | #include "dm-bio-list.h" | ||
25 | #include <linux/raid/raid1.h> | 35 | #include <linux/raid/raid1.h> |
36 | #include <linux/raid/bitmap.h> | ||
37 | |||
38 | #define DEBUG 0 | ||
39 | #if DEBUG | ||
40 | #define PRINTK(x...) printk(x) | ||
41 | #else | ||
42 | #define PRINTK(x...) | ||
43 | #endif | ||
26 | 44 | ||
27 | /* | 45 | /* |
28 | * Number of guaranteed r1bios in case of extreme VM load: | 46 | * Number of guaranteed r1bios in case of extreme VM load: |
@@ -287,9 +305,11 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int | |||
287 | /* | 305 | /* |
288 | * this branch is our 'one mirror IO has finished' event handler: | 306 | * this branch is our 'one mirror IO has finished' event handler: |
289 | */ | 307 | */ |
290 | if (!uptodate) | 308 | if (!uptodate) { |
291 | md_error(r1_bio->mddev, conf->mirrors[mirror].rdev); | 309 | md_error(r1_bio->mddev, conf->mirrors[mirror].rdev); |
292 | else | 310 | /* an I/O failed, we can't clear the bitmap */ |
311 | set_bit(R1BIO_Degraded, &r1_bio->state); | ||
312 | } else | ||
293 | /* | 313 | /* |
294 | * Set R1BIO_Uptodate in our master bio, so that | 314 | * Set R1BIO_Uptodate in our master bio, so that |
295 | * we will return a good error code for to the higher | 315 | * we will return a good error code for to the higher |
@@ -309,6 +329,10 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int | |||
309 | * already. | 329 | * already. |
310 | */ | 330 | */ |
311 | if (atomic_dec_and_test(&r1_bio->remaining)) { | 331 | if (atomic_dec_and_test(&r1_bio->remaining)) { |
332 | /* clear the bitmap if all writes complete successfully */ | ||
333 | bitmap_endwrite(r1_bio->mddev->bitmap, r1_bio->sector, | ||
334 | r1_bio->sectors, | ||
335 | !test_bit(R1BIO_Degraded, &r1_bio->state)); | ||
312 | md_write_end(r1_bio->mddev); | 336 | md_write_end(r1_bio->mddev); |
313 | raid_end_bio_io(r1_bio); | 337 | raid_end_bio_io(r1_bio); |
314 | } | 338 | } |
@@ -458,7 +482,10 @@ static void unplug_slaves(mddev_t *mddev) | |||
458 | 482 | ||
459 | static void raid1_unplug(request_queue_t *q) | 483 | static void raid1_unplug(request_queue_t *q) |
460 | { | 484 | { |
461 | unplug_slaves(q->queuedata); | 485 | mddev_t *mddev = q->queuedata; |
486 | |||
487 | unplug_slaves(mddev); | ||
488 | md_wakeup_thread(mddev->thread); | ||
462 | } | 489 | } |
463 | 490 | ||
464 | static int raid1_issue_flush(request_queue_t *q, struct gendisk *disk, | 491 | static int raid1_issue_flush(request_queue_t *q, struct gendisk *disk, |
@@ -501,16 +528,16 @@ static void device_barrier(conf_t *conf, sector_t sect) | |||
501 | { | 528 | { |
502 | spin_lock_irq(&conf->resync_lock); | 529 | spin_lock_irq(&conf->resync_lock); |
503 | wait_event_lock_irq(conf->wait_idle, !waitqueue_active(&conf->wait_resume), | 530 | wait_event_lock_irq(conf->wait_idle, !waitqueue_active(&conf->wait_resume), |
504 | conf->resync_lock, unplug_slaves(conf->mddev)); | 531 | conf->resync_lock, raid1_unplug(conf->mddev->queue)); |
505 | 532 | ||
506 | if (!conf->barrier++) { | 533 | if (!conf->barrier++) { |
507 | wait_event_lock_irq(conf->wait_idle, !conf->nr_pending, | 534 | wait_event_lock_irq(conf->wait_idle, !conf->nr_pending, |
508 | conf->resync_lock, unplug_slaves(conf->mddev)); | 535 | conf->resync_lock, raid1_unplug(conf->mddev->queue)); |
509 | if (conf->nr_pending) | 536 | if (conf->nr_pending) |
510 | BUG(); | 537 | BUG(); |
511 | } | 538 | } |
512 | wait_event_lock_irq(conf->wait_resume, conf->barrier < RESYNC_DEPTH, | 539 | wait_event_lock_irq(conf->wait_resume, conf->barrier < RESYNC_DEPTH, |
513 | conf->resync_lock, unplug_slaves(conf->mddev)); | 540 | conf->resync_lock, raid1_unplug(conf->mddev->queue)); |
514 | conf->next_resync = sect; | 541 | conf->next_resync = sect; |
515 | spin_unlock_irq(&conf->resync_lock); | 542 | spin_unlock_irq(&conf->resync_lock); |
516 | } | 543 | } |
@@ -522,14 +549,20 @@ static int make_request(request_queue_t *q, struct bio * bio) | |||
522 | mirror_info_t *mirror; | 549 | mirror_info_t *mirror; |
523 | r1bio_t *r1_bio; | 550 | r1bio_t *r1_bio; |
524 | struct bio *read_bio; | 551 | struct bio *read_bio; |
525 | int i, disks; | 552 | int i, targets = 0, disks; |
526 | mdk_rdev_t *rdev; | 553 | mdk_rdev_t *rdev; |
554 | struct bitmap *bitmap = mddev->bitmap; | ||
555 | unsigned long flags; | ||
556 | struct bio_list bl; | ||
557 | |||
527 | 558 | ||
528 | /* | 559 | /* |
529 | * Register the new request and wait if the reconstruction | 560 | * Register the new request and wait if the reconstruction |
530 | * thread has put up a bar for new requests. | 561 | * thread has put up a bar for new requests. |
531 | * Continue immediately if no resync is active currently. | 562 | * Continue immediately if no resync is active currently. |
532 | */ | 563 | */ |
564 | md_write_start(mddev, bio); /* wait on superblock update early */ | ||
565 | |||
533 | spin_lock_irq(&conf->resync_lock); | 566 | spin_lock_irq(&conf->resync_lock); |
534 | wait_event_lock_irq(conf->wait_resume, !conf->barrier, conf->resync_lock, ); | 567 | wait_event_lock_irq(conf->wait_resume, !conf->barrier, conf->resync_lock, ); |
535 | conf->nr_pending++; | 568 | conf->nr_pending++; |
@@ -552,7 +585,7 @@ static int make_request(request_queue_t *q, struct bio * bio) | |||
552 | 585 | ||
553 | r1_bio->master_bio = bio; | 586 | r1_bio->master_bio = bio; |
554 | r1_bio->sectors = bio->bi_size >> 9; | 587 | r1_bio->sectors = bio->bi_size >> 9; |
555 | 588 | r1_bio->state = 0; | |
556 | r1_bio->mddev = mddev; | 589 | r1_bio->mddev = mddev; |
557 | r1_bio->sector = bio->bi_sector; | 590 | r1_bio->sector = bio->bi_sector; |
558 | 591 | ||
@@ -595,6 +628,13 @@ static int make_request(request_queue_t *q, struct bio * bio) | |||
595 | * bios[x] to bio | 628 | * bios[x] to bio |
596 | */ | 629 | */ |
597 | disks = conf->raid_disks; | 630 | disks = conf->raid_disks; |
631 | #if 0 | ||
632 | { static int first=1; | ||
633 | if (first) printk("First Write sector %llu disks %d\n", | ||
634 | (unsigned long long)r1_bio->sector, disks); | ||
635 | first = 0; | ||
636 | } | ||
637 | #endif | ||
598 | rcu_read_lock(); | 638 | rcu_read_lock(); |
599 | for (i = 0; i < disks; i++) { | 639 | for (i = 0; i < disks; i++) { |
600 | if ((rdev=conf->mirrors[i].rdev) != NULL && | 640 | if ((rdev=conf->mirrors[i].rdev) != NULL && |
@@ -605,13 +645,21 @@ static int make_request(request_queue_t *q, struct bio * bio) | |||
605 | r1_bio->bios[i] = NULL; | 645 | r1_bio->bios[i] = NULL; |
606 | } else | 646 | } else |
607 | r1_bio->bios[i] = bio; | 647 | r1_bio->bios[i] = bio; |
648 | targets++; | ||
608 | } else | 649 | } else |
609 | r1_bio->bios[i] = NULL; | 650 | r1_bio->bios[i] = NULL; |
610 | } | 651 | } |
611 | rcu_read_unlock(); | 652 | rcu_read_unlock(); |
612 | 653 | ||
613 | atomic_set(&r1_bio->remaining, 1); | 654 | if (targets < conf->raid_disks) { |
614 | md_write_start(mddev); | 655 | /* array is degraded, we will not clear the bitmap |
656 | * on I/O completion (see raid1_end_write_request) */ | ||
657 | set_bit(R1BIO_Degraded, &r1_bio->state); | ||
658 | } | ||
659 | |||
660 | atomic_set(&r1_bio->remaining, 0); | ||
661 | |||
662 | bio_list_init(&bl); | ||
615 | for (i = 0; i < disks; i++) { | 663 | for (i = 0; i < disks; i++) { |
616 | struct bio *mbio; | 664 | struct bio *mbio; |
617 | if (!r1_bio->bios[i]) | 665 | if (!r1_bio->bios[i]) |
@@ -627,14 +675,23 @@ static int make_request(request_queue_t *q, struct bio * bio) | |||
627 | mbio->bi_private = r1_bio; | 675 | mbio->bi_private = r1_bio; |
628 | 676 | ||
629 | atomic_inc(&r1_bio->remaining); | 677 | atomic_inc(&r1_bio->remaining); |
630 | generic_make_request(mbio); | ||
631 | } | ||
632 | 678 | ||
633 | if (atomic_dec_and_test(&r1_bio->remaining)) { | 679 | bio_list_add(&bl, mbio); |
634 | md_write_end(mddev); | ||
635 | raid_end_bio_io(r1_bio); | ||
636 | } | 680 | } |
637 | 681 | ||
682 | bitmap_startwrite(bitmap, bio->bi_sector, r1_bio->sectors); | ||
683 | spin_lock_irqsave(&conf->device_lock, flags); | ||
684 | bio_list_merge(&conf->pending_bio_list, &bl); | ||
685 | bio_list_init(&bl); | ||
686 | |||
687 | blk_plug_device(mddev->queue); | ||
688 | spin_unlock_irqrestore(&conf->device_lock, flags); | ||
689 | |||
690 | #if 0 | ||
691 | while ((bio = bio_list_pop(&bl)) != NULL) | ||
692 | generic_make_request(bio); | ||
693 | #endif | ||
694 | |||
638 | return 0; | 695 | return 0; |
639 | } | 696 | } |
640 | 697 | ||
@@ -714,7 +771,7 @@ static void close_sync(conf_t *conf) | |||
714 | { | 771 | { |
715 | spin_lock_irq(&conf->resync_lock); | 772 | spin_lock_irq(&conf->resync_lock); |
716 | wait_event_lock_irq(conf->wait_resume, !conf->barrier, | 773 | wait_event_lock_irq(conf->wait_resume, !conf->barrier, |
717 | conf->resync_lock, unplug_slaves(conf->mddev)); | 774 | conf->resync_lock, raid1_unplug(conf->mddev->queue)); |
718 | spin_unlock_irq(&conf->resync_lock); | 775 | spin_unlock_irq(&conf->resync_lock); |
719 | 776 | ||
720 | if (conf->barrier) BUG(); | 777 | if (conf->barrier) BUG(); |
@@ -754,9 +811,12 @@ static int raid1_add_disk(mddev_t *mddev, mdk_rdev_t *rdev) | |||
754 | { | 811 | { |
755 | conf_t *conf = mddev->private; | 812 | conf_t *conf = mddev->private; |
756 | int found = 0; | 813 | int found = 0; |
757 | int mirror; | 814 | int mirror = 0; |
758 | mirror_info_t *p; | 815 | mirror_info_t *p; |
759 | 816 | ||
817 | if (rdev->saved_raid_disk >= 0 && | ||
818 | conf->mirrors[rdev->saved_raid_disk].rdev == NULL) | ||
819 | mirror = rdev->saved_raid_disk; | ||
760 | for (mirror=0; mirror < mddev->raid_disks; mirror++) | 820 | for (mirror=0; mirror < mddev->raid_disks; mirror++) |
761 | if ( !(p=conf->mirrors+mirror)->rdev) { | 821 | if ( !(p=conf->mirrors+mirror)->rdev) { |
762 | 822 | ||
@@ -773,6 +833,8 @@ static int raid1_add_disk(mddev_t *mddev, mdk_rdev_t *rdev) | |||
773 | p->head_position = 0; | 833 | p->head_position = 0; |
774 | rdev->raid_disk = mirror; | 834 | rdev->raid_disk = mirror; |
775 | found = 1; | 835 | found = 1; |
836 | if (rdev->saved_raid_disk != mirror) | ||
837 | conf->fullsync = 1; | ||
776 | p->rdev = rdev; | 838 | p->rdev = rdev; |
777 | break; | 839 | break; |
778 | } | 840 | } |
@@ -828,10 +890,11 @@ static int end_sync_read(struct bio *bio, unsigned int bytes_done, int error) | |||
828 | * or re-read if the read failed. | 890 | * or re-read if the read failed. |
829 | * We don't do much here, just schedule handling by raid1d | 891 | * We don't do much here, just schedule handling by raid1d |
830 | */ | 892 | */ |
831 | if (!uptodate) | 893 | if (!uptodate) { |
832 | md_error(r1_bio->mddev, | 894 | md_error(r1_bio->mddev, |
833 | conf->mirrors[r1_bio->read_disk].rdev); | 895 | conf->mirrors[r1_bio->read_disk].rdev); |
834 | else | 896 | set_bit(R1BIO_Degraded, &r1_bio->state); |
897 | } else | ||
835 | set_bit(R1BIO_Uptodate, &r1_bio->state); | 898 | set_bit(R1BIO_Uptodate, &r1_bio->state); |
836 | rdev_dec_pending(conf->mirrors[r1_bio->read_disk].rdev, conf->mddev); | 899 | rdev_dec_pending(conf->mirrors[r1_bio->read_disk].rdev, conf->mddev); |
837 | reschedule_retry(r1_bio); | 900 | reschedule_retry(r1_bio); |
@@ -855,8 +918,10 @@ static int end_sync_write(struct bio *bio, unsigned int bytes_done, int error) | |||
855 | mirror = i; | 918 | mirror = i; |
856 | break; | 919 | break; |
857 | } | 920 | } |
858 | if (!uptodate) | 921 | if (!uptodate) { |
859 | md_error(mddev, conf->mirrors[mirror].rdev); | 922 | md_error(mddev, conf->mirrors[mirror].rdev); |
923 | set_bit(R1BIO_Degraded, &r1_bio->state); | ||
924 | } | ||
860 | update_head_pos(mirror, r1_bio); | 925 | update_head_pos(mirror, r1_bio); |
861 | 926 | ||
862 | if (atomic_dec_and_test(&r1_bio->remaining)) { | 927 | if (atomic_dec_and_test(&r1_bio->remaining)) { |
@@ -876,6 +941,9 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio) | |||
876 | 941 | ||
877 | bio = r1_bio->bios[r1_bio->read_disk]; | 942 | bio = r1_bio->bios[r1_bio->read_disk]; |
878 | 943 | ||
944 | /* | ||
945 | if (r1_bio->sector == 0) printk("First sync write startss\n"); | ||
946 | */ | ||
879 | /* | 947 | /* |
880 | * schedule writes | 948 | * schedule writes |
881 | */ | 949 | */ |
@@ -903,10 +971,12 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio) | |||
903 | atomic_inc(&conf->mirrors[i].rdev->nr_pending); | 971 | atomic_inc(&conf->mirrors[i].rdev->nr_pending); |
904 | atomic_inc(&r1_bio->remaining); | 972 | atomic_inc(&r1_bio->remaining); |
905 | md_sync_acct(conf->mirrors[i].rdev->bdev, wbio->bi_size >> 9); | 973 | md_sync_acct(conf->mirrors[i].rdev->bdev, wbio->bi_size >> 9); |
974 | |||
906 | generic_make_request(wbio); | 975 | generic_make_request(wbio); |
907 | } | 976 | } |
908 | 977 | ||
909 | if (atomic_dec_and_test(&r1_bio->remaining)) { | 978 | if (atomic_dec_and_test(&r1_bio->remaining)) { |
979 | /* if we're here, all write(s) have completed, so clean up */ | ||
910 | md_done_sync(mddev, r1_bio->sectors, 1); | 980 | md_done_sync(mddev, r1_bio->sectors, 1); |
911 | put_buf(r1_bio); | 981 | put_buf(r1_bio); |
912 | } | 982 | } |
@@ -931,11 +1001,30 @@ static void raid1d(mddev_t *mddev) | |||
931 | mdk_rdev_t *rdev; | 1001 | mdk_rdev_t *rdev; |
932 | 1002 | ||
933 | md_check_recovery(mddev); | 1003 | md_check_recovery(mddev); |
934 | md_handle_safemode(mddev); | ||
935 | 1004 | ||
936 | for (;;) { | 1005 | for (;;) { |
937 | char b[BDEVNAME_SIZE]; | 1006 | char b[BDEVNAME_SIZE]; |
938 | spin_lock_irqsave(&conf->device_lock, flags); | 1007 | spin_lock_irqsave(&conf->device_lock, flags); |
1008 | |||
1009 | if (conf->pending_bio_list.head) { | ||
1010 | bio = bio_list_get(&conf->pending_bio_list); | ||
1011 | blk_remove_plug(mddev->queue); | ||
1012 | spin_unlock_irqrestore(&conf->device_lock, flags); | ||
1013 | /* flush any pending bitmap writes to disk before proceeding w/ I/O */ | ||
1014 | if (bitmap_unplug(mddev->bitmap) != 0) | ||
1015 | printk("%s: bitmap file write failed!\n", mdname(mddev)); | ||
1016 | |||
1017 | while (bio) { /* submit pending writes */ | ||
1018 | struct bio *next = bio->bi_next; | ||
1019 | bio->bi_next = NULL; | ||
1020 | generic_make_request(bio); | ||
1021 | bio = next; | ||
1022 | } | ||
1023 | unplug = 1; | ||
1024 | |||
1025 | continue; | ||
1026 | } | ||
1027 | |||
939 | if (list_empty(head)) | 1028 | if (list_empty(head)) |
940 | break; | 1029 | break; |
941 | r1_bio = list_entry(head->prev, r1bio_t, retry_list); | 1030 | r1_bio = list_entry(head->prev, r1bio_t, retry_list); |
@@ -1009,7 +1098,7 @@ static int init_resync(conf_t *conf) | |||
1009 | * that can be installed to exclude normal IO requests. | 1098 | * that can be installed to exclude normal IO requests. |
1010 | */ | 1099 | */ |
1011 | 1100 | ||
1012 | static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | 1101 | static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, int go_faster) |
1013 | { | 1102 | { |
1014 | conf_t *conf = mddev_to_conf(mddev); | 1103 | conf_t *conf = mddev_to_conf(mddev); |
1015 | mirror_info_t *mirror; | 1104 | mirror_info_t *mirror; |
@@ -1019,17 +1108,43 @@ static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1019 | int disk; | 1108 | int disk; |
1020 | int i; | 1109 | int i; |
1021 | int write_targets = 0; | 1110 | int write_targets = 0; |
1111 | int sync_blocks; | ||
1022 | 1112 | ||
1023 | if (!conf->r1buf_pool) | 1113 | if (!conf->r1buf_pool) |
1114 | { | ||
1115 | /* | ||
1116 | printk("sync start - bitmap %p\n", mddev->bitmap); | ||
1117 | */ | ||
1024 | if (init_resync(conf)) | 1118 | if (init_resync(conf)) |
1025 | return -ENOMEM; | 1119 | return 0; |
1120 | } | ||
1026 | 1121 | ||
1027 | max_sector = mddev->size << 1; | 1122 | max_sector = mddev->size << 1; |
1028 | if (sector_nr >= max_sector) { | 1123 | if (sector_nr >= max_sector) { |
1124 | /* If we aborted, we need to abort the | ||
1125 | * sync on the 'current' bitmap chunk (there will | ||
1126 | * only be one in raid1 resync. | ||
1127 | * We can find the current addess in mddev->curr_resync | ||
1128 | */ | ||
1129 | if (!conf->fullsync) { | ||
1130 | if (mddev->curr_resync < max_sector) | ||
1131 | bitmap_end_sync(mddev->bitmap, | ||
1132 | mddev->curr_resync, | ||
1133 | &sync_blocks, 1); | ||
1134 | bitmap_close_sync(mddev->bitmap); | ||
1135 | } | ||
1136 | if (mddev->curr_resync >= max_sector) | ||
1137 | conf->fullsync = 0; | ||
1029 | close_sync(conf); | 1138 | close_sync(conf); |
1030 | return 0; | 1139 | return 0; |
1031 | } | 1140 | } |
1032 | 1141 | ||
1142 | if (!conf->fullsync && | ||
1143 | !bitmap_start_sync(mddev->bitmap, sector_nr, &sync_blocks)) { | ||
1144 | /* We can skip this block, and probably several more */ | ||
1145 | *skipped = 1; | ||
1146 | return sync_blocks; | ||
1147 | } | ||
1033 | /* | 1148 | /* |
1034 | * If there is non-resync activity waiting for us then | 1149 | * If there is non-resync activity waiting for us then |
1035 | * put in a delay to throttle resync. | 1150 | * put in a delay to throttle resync. |
@@ -1068,6 +1183,7 @@ static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1068 | 1183 | ||
1069 | r1_bio->mddev = mddev; | 1184 | r1_bio->mddev = mddev; |
1070 | r1_bio->sector = sector_nr; | 1185 | r1_bio->sector = sector_nr; |
1186 | r1_bio->state = 0; | ||
1071 | set_bit(R1BIO_IsSync, &r1_bio->state); | 1187 | set_bit(R1BIO_IsSync, &r1_bio->state); |
1072 | r1_bio->read_disk = disk; | 1188 | r1_bio->read_disk = disk; |
1073 | 1189 | ||
@@ -1102,18 +1218,24 @@ static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1102 | bio->bi_bdev = conf->mirrors[i].rdev->bdev; | 1218 | bio->bi_bdev = conf->mirrors[i].rdev->bdev; |
1103 | bio->bi_private = r1_bio; | 1219 | bio->bi_private = r1_bio; |
1104 | } | 1220 | } |
1221 | |||
1222 | if (write_targets + 1 < conf->raid_disks) | ||
1223 | /* array degraded, can't clear bitmap */ | ||
1224 | set_bit(R1BIO_Degraded, &r1_bio->state); | ||
1225 | |||
1105 | if (write_targets == 0) { | 1226 | if (write_targets == 0) { |
1106 | /* There is nowhere to write, so all non-sync | 1227 | /* There is nowhere to write, so all non-sync |
1107 | * drives must be failed - so we are finished | 1228 | * drives must be failed - so we are finished |
1108 | */ | 1229 | */ |
1109 | int rv = max_sector - sector_nr; | 1230 | sector_t rv = max_sector - sector_nr; |
1110 | md_done_sync(mddev, rv, 1); | 1231 | *skipped = 1; |
1111 | put_buf(r1_bio); | 1232 | put_buf(r1_bio); |
1112 | rdev_dec_pending(conf->mirrors[disk].rdev, mddev); | 1233 | rdev_dec_pending(conf->mirrors[disk].rdev, mddev); |
1113 | return rv; | 1234 | return rv; |
1114 | } | 1235 | } |
1115 | 1236 | ||
1116 | nr_sectors = 0; | 1237 | nr_sectors = 0; |
1238 | sync_blocks = 0; | ||
1117 | do { | 1239 | do { |
1118 | struct page *page; | 1240 | struct page *page; |
1119 | int len = PAGE_SIZE; | 1241 | int len = PAGE_SIZE; |
@@ -1121,6 +1243,17 @@ static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1121 | len = (max_sector - sector_nr) << 9; | 1243 | len = (max_sector - sector_nr) << 9; |
1122 | if (len == 0) | 1244 | if (len == 0) |
1123 | break; | 1245 | break; |
1246 | if (!conf->fullsync) { | ||
1247 | if (sync_blocks == 0) { | ||
1248 | if (!bitmap_start_sync(mddev->bitmap, | ||
1249 | sector_nr, &sync_blocks)) | ||
1250 | break; | ||
1251 | if (sync_blocks < (PAGE_SIZE>>9)) | ||
1252 | BUG(); | ||
1253 | if (len > (sync_blocks<<9)) len = sync_blocks<<9; | ||
1254 | } | ||
1255 | } | ||
1256 | |||
1124 | for (i=0 ; i < conf->raid_disks; i++) { | 1257 | for (i=0 ; i < conf->raid_disks; i++) { |
1125 | bio = r1_bio->bios[i]; | 1258 | bio = r1_bio->bios[i]; |
1126 | if (bio->bi_end_io) { | 1259 | if (bio->bi_end_io) { |
@@ -1143,6 +1276,7 @@ static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1143 | } | 1276 | } |
1144 | nr_sectors += len>>9; | 1277 | nr_sectors += len>>9; |
1145 | sector_nr += len>>9; | 1278 | sector_nr += len>>9; |
1279 | sync_blocks -= (len>>9); | ||
1146 | } while (r1_bio->bios[disk]->bi_vcnt < RESYNC_PAGES); | 1280 | } while (r1_bio->bios[disk]->bi_vcnt < RESYNC_PAGES); |
1147 | bio_full: | 1281 | bio_full: |
1148 | bio = r1_bio->bios[disk]; | 1282 | bio = r1_bio->bios[disk]; |
@@ -1231,6 +1365,9 @@ static int run(mddev_t *mddev) | |||
1231 | init_waitqueue_head(&conf->wait_idle); | 1365 | init_waitqueue_head(&conf->wait_idle); |
1232 | init_waitqueue_head(&conf->wait_resume); | 1366 | init_waitqueue_head(&conf->wait_resume); |
1233 | 1367 | ||
1368 | bio_list_init(&conf->pending_bio_list); | ||
1369 | bio_list_init(&conf->flushing_bio_list); | ||
1370 | |||
1234 | if (!conf->working_disks) { | 1371 | if (!conf->working_disks) { |
1235 | printk(KERN_ERR "raid1: no operational mirrors for %s\n", | 1372 | printk(KERN_ERR "raid1: no operational mirrors for %s\n", |
1236 | mdname(mddev)); | 1373 | mdname(mddev)); |
@@ -1259,16 +1396,15 @@ static int run(mddev_t *mddev) | |||
1259 | conf->last_used = j; | 1396 | conf->last_used = j; |
1260 | 1397 | ||
1261 | 1398 | ||
1262 | 1399 | mddev->thread = md_register_thread(raid1d, mddev, "%s_raid1"); | |
1263 | { | 1400 | if (!mddev->thread) { |
1264 | mddev->thread = md_register_thread(raid1d, mddev, "%s_raid1"); | 1401 | printk(KERN_ERR |
1265 | if (!mddev->thread) { | 1402 | "raid1: couldn't allocate thread for %s\n", |
1266 | printk(KERN_ERR | 1403 | mdname(mddev)); |
1267 | "raid1: couldn't allocate thread for %s\n", | 1404 | goto out_free_conf; |
1268 | mdname(mddev)); | ||
1269 | goto out_free_conf; | ||
1270 | } | ||
1271 | } | 1405 | } |
1406 | if (mddev->bitmap) mddev->thread->timeout = mddev->bitmap->daemon_sleep * HZ; | ||
1407 | |||
1272 | printk(KERN_INFO | 1408 | printk(KERN_INFO |
1273 | "raid1: raid set %s active with %d out of %d mirrors\n", | 1409 | "raid1: raid set %s active with %d out of %d mirrors\n", |
1274 | mdname(mddev), mddev->raid_disks - mddev->degraded, | 1410 | mdname(mddev), mddev->raid_disks - mddev->degraded, |
@@ -1291,10 +1427,8 @@ out_free_conf: | |||
1291 | if (conf) { | 1427 | if (conf) { |
1292 | if (conf->r1bio_pool) | 1428 | if (conf->r1bio_pool) |
1293 | mempool_destroy(conf->r1bio_pool); | 1429 | mempool_destroy(conf->r1bio_pool); |
1294 | if (conf->mirrors) | 1430 | kfree(conf->mirrors); |
1295 | kfree(conf->mirrors); | 1431 | kfree(conf->poolinfo); |
1296 | if (conf->poolinfo) | ||
1297 | kfree(conf->poolinfo); | ||
1298 | kfree(conf); | 1432 | kfree(conf); |
1299 | mddev->private = NULL; | 1433 | mddev->private = NULL; |
1300 | } | 1434 | } |
@@ -1311,10 +1445,8 @@ static int stop(mddev_t *mddev) | |||
1311 | blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ | 1445 | blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ |
1312 | if (conf->r1bio_pool) | 1446 | if (conf->r1bio_pool) |
1313 | mempool_destroy(conf->r1bio_pool); | 1447 | mempool_destroy(conf->r1bio_pool); |
1314 | if (conf->mirrors) | 1448 | kfree(conf->mirrors); |
1315 | kfree(conf->mirrors); | 1449 | kfree(conf->poolinfo); |
1316 | if (conf->poolinfo) | ||
1317 | kfree(conf->poolinfo); | ||
1318 | kfree(conf); | 1450 | kfree(conf); |
1319 | mddev->private = NULL; | 1451 | mddev->private = NULL; |
1320 | return 0; | 1452 | return 0; |
@@ -1349,17 +1481,26 @@ static int raid1_reshape(mddev_t *mddev, int raid_disks) | |||
1349 | * We allocate a new r1bio_pool if we can. | 1481 | * We allocate a new r1bio_pool if we can. |
1350 | * Then raise a device barrier and wait until all IO stops. | 1482 | * Then raise a device barrier and wait until all IO stops. |
1351 | * Then resize conf->mirrors and swap in the new r1bio pool. | 1483 | * Then resize conf->mirrors and swap in the new r1bio pool. |
1484 | * | ||
1485 | * At the same time, we "pack" the devices so that all the missing | ||
1486 | * devices have the higher raid_disk numbers. | ||
1352 | */ | 1487 | */ |
1353 | mempool_t *newpool, *oldpool; | 1488 | mempool_t *newpool, *oldpool; |
1354 | struct pool_info *newpoolinfo; | 1489 | struct pool_info *newpoolinfo; |
1355 | mirror_info_t *newmirrors; | 1490 | mirror_info_t *newmirrors; |
1356 | conf_t *conf = mddev_to_conf(mddev); | 1491 | conf_t *conf = mddev_to_conf(mddev); |
1492 | int cnt; | ||
1357 | 1493 | ||
1358 | int d; | 1494 | int d, d2; |
1359 | 1495 | ||
1360 | for (d= raid_disks; d < conf->raid_disks; d++) | 1496 | if (raid_disks < conf->raid_disks) { |
1361 | if (conf->mirrors[d].rdev) | 1497 | cnt=0; |
1498 | for (d= 0; d < conf->raid_disks; d++) | ||
1499 | if (conf->mirrors[d].rdev) | ||
1500 | cnt++; | ||
1501 | if (cnt > raid_disks) | ||
1362 | return -EBUSY; | 1502 | return -EBUSY; |
1503 | } | ||
1363 | 1504 | ||
1364 | newpoolinfo = kmalloc(sizeof(*newpoolinfo), GFP_KERNEL); | 1505 | newpoolinfo = kmalloc(sizeof(*newpoolinfo), GFP_KERNEL); |
1365 | if (!newpoolinfo) | 1506 | if (!newpoolinfo) |
@@ -1384,14 +1525,18 @@ static int raid1_reshape(mddev_t *mddev, int raid_disks) | |||
1384 | spin_lock_irq(&conf->resync_lock); | 1525 | spin_lock_irq(&conf->resync_lock); |
1385 | conf->barrier++; | 1526 | conf->barrier++; |
1386 | wait_event_lock_irq(conf->wait_idle, !conf->nr_pending, | 1527 | wait_event_lock_irq(conf->wait_idle, !conf->nr_pending, |
1387 | conf->resync_lock, unplug_slaves(mddev)); | 1528 | conf->resync_lock, raid1_unplug(mddev->queue)); |
1388 | spin_unlock_irq(&conf->resync_lock); | 1529 | spin_unlock_irq(&conf->resync_lock); |
1389 | 1530 | ||
1390 | /* ok, everything is stopped */ | 1531 | /* ok, everything is stopped */ |
1391 | oldpool = conf->r1bio_pool; | 1532 | oldpool = conf->r1bio_pool; |
1392 | conf->r1bio_pool = newpool; | 1533 | conf->r1bio_pool = newpool; |
1393 | for (d=0; d < raid_disks && d < conf->raid_disks; d++) | 1534 | |
1394 | newmirrors[d] = conf->mirrors[d]; | 1535 | for (d=d2=0; d < conf->raid_disks; d++) |
1536 | if (conf->mirrors[d].rdev) { | ||
1537 | conf->mirrors[d].rdev->raid_disk = d2; | ||
1538 | newmirrors[d2++].rdev = conf->mirrors[d].rdev; | ||
1539 | } | ||
1395 | kfree(conf->mirrors); | 1540 | kfree(conf->mirrors); |
1396 | conf->mirrors = newmirrors; | 1541 | conf->mirrors = newmirrors; |
1397 | kfree(conf->poolinfo); | 1542 | kfree(conf->poolinfo); |
@@ -1400,6 +1545,7 @@ static int raid1_reshape(mddev_t *mddev, int raid_disks) | |||
1400 | mddev->degraded += (raid_disks - conf->raid_disks); | 1545 | mddev->degraded += (raid_disks - conf->raid_disks); |
1401 | conf->raid_disks = mddev->raid_disks = raid_disks; | 1546 | conf->raid_disks = mddev->raid_disks = raid_disks; |
1402 | 1547 | ||
1548 | conf->last_used = 0; /* just make sure it is in-range */ | ||
1403 | spin_lock_irq(&conf->resync_lock); | 1549 | spin_lock_irq(&conf->resync_lock); |
1404 | conf->barrier--; | 1550 | conf->barrier--; |
1405 | spin_unlock_irq(&conf->resync_lock); | 1551 | spin_unlock_irq(&conf->resync_lock); |
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 3c37be6423d7..62ebb1bc72be 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -700,6 +700,8 @@ static int make_request(request_queue_t *q, struct bio * bio) | |||
700 | return 0; | 700 | return 0; |
701 | } | 701 | } |
702 | 702 | ||
703 | md_write_start(mddev, bio); | ||
704 | |||
703 | /* | 705 | /* |
704 | * Register the new request and wait if the reconstruction | 706 | * Register the new request and wait if the reconstruction |
705 | * thread has put up a bar for new requests. | 707 | * thread has put up a bar for new requests. |
@@ -774,7 +776,7 @@ static int make_request(request_queue_t *q, struct bio * bio) | |||
774 | rcu_read_unlock(); | 776 | rcu_read_unlock(); |
775 | 777 | ||
776 | atomic_set(&r10_bio->remaining, 1); | 778 | atomic_set(&r10_bio->remaining, 1); |
777 | md_write_start(mddev); | 779 | |
778 | for (i = 0; i < conf->copies; i++) { | 780 | for (i = 0; i < conf->copies; i++) { |
779 | struct bio *mbio; | 781 | struct bio *mbio; |
780 | int d = r10_bio->devs[i].devnum; | 782 | int d = r10_bio->devs[i].devnum; |
@@ -1216,7 +1218,6 @@ static void raid10d(mddev_t *mddev) | |||
1216 | mdk_rdev_t *rdev; | 1218 | mdk_rdev_t *rdev; |
1217 | 1219 | ||
1218 | md_check_recovery(mddev); | 1220 | md_check_recovery(mddev); |
1219 | md_handle_safemode(mddev); | ||
1220 | 1221 | ||
1221 | for (;;) { | 1222 | for (;;) { |
1222 | char b[BDEVNAME_SIZE]; | 1223 | char b[BDEVNAME_SIZE]; |
@@ -1319,7 +1320,7 @@ static int init_resync(conf_t *conf) | |||
1319 | * | 1320 | * |
1320 | */ | 1321 | */ |
1321 | 1322 | ||
1322 | static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | 1323 | static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, int go_faster) |
1323 | { | 1324 | { |
1324 | conf_t *conf = mddev_to_conf(mddev); | 1325 | conf_t *conf = mddev_to_conf(mddev); |
1325 | r10bio_t *r10_bio; | 1326 | r10bio_t *r10_bio; |
@@ -1333,7 +1334,7 @@ static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1333 | 1334 | ||
1334 | if (!conf->r10buf_pool) | 1335 | if (!conf->r10buf_pool) |
1335 | if (init_resync(conf)) | 1336 | if (init_resync(conf)) |
1336 | return -ENOMEM; | 1337 | return 0; |
1337 | 1338 | ||
1338 | skipped: | 1339 | skipped: |
1339 | max_sector = mddev->size << 1; | 1340 | max_sector = mddev->size << 1; |
@@ -1341,15 +1342,15 @@ static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1341 | max_sector = mddev->resync_max_sectors; | 1342 | max_sector = mddev->resync_max_sectors; |
1342 | if (sector_nr >= max_sector) { | 1343 | if (sector_nr >= max_sector) { |
1343 | close_sync(conf); | 1344 | close_sync(conf); |
1345 | *skipped = 1; | ||
1344 | return sectors_skipped; | 1346 | return sectors_skipped; |
1345 | } | 1347 | } |
1346 | if (chunks_skipped >= conf->raid_disks) { | 1348 | if (chunks_skipped >= conf->raid_disks) { |
1347 | /* if there has been nothing to do on any drive, | 1349 | /* if there has been nothing to do on any drive, |
1348 | * then there is nothing to do at all.. | 1350 | * then there is nothing to do at all.. |
1349 | */ | 1351 | */ |
1350 | sector_t sec = max_sector - sector_nr; | 1352 | *skipped = 1; |
1351 | md_done_sync(mddev, sec, 1); | 1353 | return (max_sector - sector_nr) + sectors_skipped; |
1352 | return sec + sectors_skipped; | ||
1353 | } | 1354 | } |
1354 | 1355 | ||
1355 | /* make sure whole request will fit in a chunk - if chunks | 1356 | /* make sure whole request will fit in a chunk - if chunks |
@@ -1563,17 +1564,22 @@ static int sync_request(mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1563 | } | 1564 | } |
1564 | } | 1565 | } |
1565 | 1566 | ||
1567 | if (sectors_skipped) | ||
1568 | /* pretend they weren't skipped, it makes | ||
1569 | * no important difference in this case | ||
1570 | */ | ||
1571 | md_done_sync(mddev, sectors_skipped, 1); | ||
1572 | |||
1566 | return sectors_skipped + nr_sectors; | 1573 | return sectors_skipped + nr_sectors; |
1567 | giveup: | 1574 | giveup: |
1568 | /* There is nowhere to write, so all non-sync | 1575 | /* There is nowhere to write, so all non-sync |
1569 | * drives must be failed, so try the next chunk... | 1576 | * drives must be failed, so try the next chunk... |
1570 | */ | 1577 | */ |
1571 | { | 1578 | { |
1572 | int sec = max_sector - sector_nr; | 1579 | sector_t sec = max_sector - sector_nr; |
1573 | sectors_skipped += sec; | 1580 | sectors_skipped += sec; |
1574 | chunks_skipped ++; | 1581 | chunks_skipped ++; |
1575 | sector_nr = max_sector; | 1582 | sector_nr = max_sector; |
1576 | md_done_sync(mddev, sec, 1); | ||
1577 | goto skipped; | 1583 | goto skipped; |
1578 | } | 1584 | } |
1579 | } | 1585 | } |
@@ -1731,8 +1737,7 @@ static int run(mddev_t *mddev) | |||
1731 | out_free_conf: | 1737 | out_free_conf: |
1732 | if (conf->r10bio_pool) | 1738 | if (conf->r10bio_pool) |
1733 | mempool_destroy(conf->r10bio_pool); | 1739 | mempool_destroy(conf->r10bio_pool); |
1734 | if (conf->mirrors) | 1740 | kfree(conf->mirrors); |
1735 | kfree(conf->mirrors); | ||
1736 | kfree(conf); | 1741 | kfree(conf); |
1737 | mddev->private = NULL; | 1742 | mddev->private = NULL; |
1738 | out: | 1743 | out: |
@@ -1748,8 +1753,7 @@ static int stop(mddev_t *mddev) | |||
1748 | blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ | 1753 | blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ |
1749 | if (conf->r10bio_pool) | 1754 | if (conf->r10bio_pool) |
1750 | mempool_destroy(conf->r10bio_pool); | 1755 | mempool_destroy(conf->r10bio_pool); |
1751 | if (conf->mirrors) | 1756 | kfree(conf->mirrors); |
1752 | kfree(conf->mirrors); | ||
1753 | kfree(conf); | 1757 | kfree(conf); |
1754 | mddev->private = NULL; | 1758 | mddev->private = NULL; |
1755 | return 0; | 1759 | return 0; |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 3cb11ac232fa..93a9726cc2d6 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -1411,6 +1411,8 @@ static int make_request (request_queue_t *q, struct bio * bi) | |||
1411 | sector_t logical_sector, last_sector; | 1411 | sector_t logical_sector, last_sector; |
1412 | struct stripe_head *sh; | 1412 | struct stripe_head *sh; |
1413 | 1413 | ||
1414 | md_write_start(mddev, bi); | ||
1415 | |||
1414 | if (bio_data_dir(bi)==WRITE) { | 1416 | if (bio_data_dir(bi)==WRITE) { |
1415 | disk_stat_inc(mddev->gendisk, writes); | 1417 | disk_stat_inc(mddev->gendisk, writes); |
1416 | disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bi)); | 1418 | disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bi)); |
@@ -1423,8 +1425,7 @@ static int make_request (request_queue_t *q, struct bio * bi) | |||
1423 | last_sector = bi->bi_sector + (bi->bi_size>>9); | 1425 | last_sector = bi->bi_sector + (bi->bi_size>>9); |
1424 | bi->bi_next = NULL; | 1426 | bi->bi_next = NULL; |
1425 | bi->bi_phys_segments = 1; /* over-loaded to count active stripes */ | 1427 | bi->bi_phys_segments = 1; /* over-loaded to count active stripes */ |
1426 | if ( bio_data_dir(bi) == WRITE ) | 1428 | |
1427 | md_write_start(mddev); | ||
1428 | for (;logical_sector < last_sector; logical_sector += STRIPE_SECTORS) { | 1429 | for (;logical_sector < last_sector; logical_sector += STRIPE_SECTORS) { |
1429 | DEFINE_WAIT(w); | 1430 | DEFINE_WAIT(w); |
1430 | 1431 | ||
@@ -1475,7 +1476,7 @@ static int make_request (request_queue_t *q, struct bio * bi) | |||
1475 | } | 1476 | } |
1476 | 1477 | ||
1477 | /* FIXME go_faster isn't used */ | 1478 | /* FIXME go_faster isn't used */ |
1478 | static int sync_request (mddev_t *mddev, sector_t sector_nr, int go_faster) | 1479 | static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, int go_faster) |
1479 | { | 1480 | { |
1480 | raid5_conf_t *conf = (raid5_conf_t *) mddev->private; | 1481 | raid5_conf_t *conf = (raid5_conf_t *) mddev->private; |
1481 | struct stripe_head *sh; | 1482 | struct stripe_head *sh; |
@@ -1498,8 +1499,8 @@ static int sync_request (mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1498 | * nothing we can do. | 1499 | * nothing we can do. |
1499 | */ | 1500 | */ |
1500 | if (mddev->degraded >= 1 && test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { | 1501 | if (mddev->degraded >= 1 && test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { |
1501 | int rv = (mddev->size << 1) - sector_nr; | 1502 | sector_t rv = (mddev->size << 1) - sector_nr; |
1502 | md_done_sync(mddev, rv, 1); | 1503 | *skipped = 1; |
1503 | return rv; | 1504 | return rv; |
1504 | } | 1505 | } |
1505 | 1506 | ||
@@ -1546,7 +1547,6 @@ static void raid5d (mddev_t *mddev) | |||
1546 | PRINTK("+++ raid5d active\n"); | 1547 | PRINTK("+++ raid5d active\n"); |
1547 | 1548 | ||
1548 | md_check_recovery(mddev); | 1549 | md_check_recovery(mddev); |
1549 | md_handle_safemode(mddev); | ||
1550 | 1550 | ||
1551 | handled = 0; | 1551 | handled = 0; |
1552 | spin_lock_irq(&conf->device_lock); | 1552 | spin_lock_irq(&conf->device_lock); |
diff --git a/drivers/md/raid6main.c b/drivers/md/raid6main.c index 908edd78a792..f62ea1a73d0d 100644 --- a/drivers/md/raid6main.c +++ b/drivers/md/raid6main.c | |||
@@ -1570,6 +1570,8 @@ static int make_request (request_queue_t *q, struct bio * bi) | |||
1570 | sector_t logical_sector, last_sector; | 1570 | sector_t logical_sector, last_sector; |
1571 | struct stripe_head *sh; | 1571 | struct stripe_head *sh; |
1572 | 1572 | ||
1573 | md_write_start(mddev, bi); | ||
1574 | |||
1573 | if (bio_data_dir(bi)==WRITE) { | 1575 | if (bio_data_dir(bi)==WRITE) { |
1574 | disk_stat_inc(mddev->gendisk, writes); | 1576 | disk_stat_inc(mddev->gendisk, writes); |
1575 | disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bi)); | 1577 | disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bi)); |
@@ -1583,8 +1585,7 @@ static int make_request (request_queue_t *q, struct bio * bi) | |||
1583 | 1585 | ||
1584 | bi->bi_next = NULL; | 1586 | bi->bi_next = NULL; |
1585 | bi->bi_phys_segments = 1; /* over-loaded to count active stripes */ | 1587 | bi->bi_phys_segments = 1; /* over-loaded to count active stripes */ |
1586 | if ( bio_data_dir(bi) == WRITE ) | 1588 | |
1587 | md_write_start(mddev); | ||
1588 | for (;logical_sector < last_sector; logical_sector += STRIPE_SECTORS) { | 1589 | for (;logical_sector < last_sector; logical_sector += STRIPE_SECTORS) { |
1589 | DEFINE_WAIT(w); | 1590 | DEFINE_WAIT(w); |
1590 | 1591 | ||
@@ -1634,7 +1635,7 @@ static int make_request (request_queue_t *q, struct bio * bi) | |||
1634 | } | 1635 | } |
1635 | 1636 | ||
1636 | /* FIXME go_faster isn't used */ | 1637 | /* FIXME go_faster isn't used */ |
1637 | static int sync_request (mddev_t *mddev, sector_t sector_nr, int go_faster) | 1638 | static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, int go_faster) |
1638 | { | 1639 | { |
1639 | raid6_conf_t *conf = (raid6_conf_t *) mddev->private; | 1640 | raid6_conf_t *conf = (raid6_conf_t *) mddev->private; |
1640 | struct stripe_head *sh; | 1641 | struct stripe_head *sh; |
@@ -1657,8 +1658,8 @@ static int sync_request (mddev_t *mddev, sector_t sector_nr, int go_faster) | |||
1657 | * nothing we can do. | 1658 | * nothing we can do. |
1658 | */ | 1659 | */ |
1659 | if (mddev->degraded >= 2 && test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { | 1660 | if (mddev->degraded >= 2 && test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { |
1660 | int rv = (mddev->size << 1) - sector_nr; | 1661 | sector_t rv = (mddev->size << 1) - sector_nr; |
1661 | md_done_sync(mddev, rv, 1); | 1662 | *skipped = 1; |
1662 | return rv; | 1663 | return rv; |
1663 | } | 1664 | } |
1664 | 1665 | ||
@@ -1705,7 +1706,6 @@ static void raid6d (mddev_t *mddev) | |||
1705 | PRINTK("+++ raid6d active\n"); | 1706 | PRINTK("+++ raid6d active\n"); |
1706 | 1707 | ||
1707 | md_check_recovery(mddev); | 1708 | md_check_recovery(mddev); |
1708 | md_handle_safemode(mddev); | ||
1709 | 1709 | ||
1710 | handled = 0; | 1710 | handled = 0; |
1711 | spin_lock_irq(&conf->device_lock); | 1711 | spin_lock_irq(&conf->device_lock); |
diff --git a/drivers/misc/ibmasm/command.c b/drivers/misc/ibmasm/command.c index 245b0058381d..07a085ccbd5b 100644 --- a/drivers/misc/ibmasm/command.c +++ b/drivers/misc/ibmasm/command.c | |||
@@ -23,6 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "ibmasm.h" | 25 | #include "ibmasm.h" |
26 | #include "lowlevel.h" | ||
26 | 27 | ||
27 | static void exec_next_command(struct service_processor *sp); | 28 | static void exec_next_command(struct service_processor *sp); |
28 | static void free_command(struct kobject *kobj); | 29 | static void free_command(struct kobject *kobj); |
@@ -31,8 +32,9 @@ static struct kobj_type ibmasm_cmd_kobj_type = { | |||
31 | .release = free_command, | 32 | .release = free_command, |
32 | }; | 33 | }; |
33 | 34 | ||
35 | static atomic_t command_count = ATOMIC_INIT(0); | ||
34 | 36 | ||
35 | struct command *ibmasm_new_command(size_t buffer_size) | 37 | struct command *ibmasm_new_command(struct service_processor *sp, size_t buffer_size) |
36 | { | 38 | { |
37 | struct command *cmd; | 39 | struct command *cmd; |
38 | 40 | ||
@@ -55,11 +57,15 @@ struct command *ibmasm_new_command(size_t buffer_size) | |||
55 | 57 | ||
56 | kobject_init(&cmd->kobj); | 58 | kobject_init(&cmd->kobj); |
57 | cmd->kobj.ktype = &ibmasm_cmd_kobj_type; | 59 | cmd->kobj.ktype = &ibmasm_cmd_kobj_type; |
60 | cmd->lock = &sp->lock; | ||
58 | 61 | ||
59 | cmd->status = IBMASM_CMD_PENDING; | 62 | cmd->status = IBMASM_CMD_PENDING; |
60 | init_waitqueue_head(&cmd->wait); | 63 | init_waitqueue_head(&cmd->wait); |
61 | INIT_LIST_HEAD(&cmd->queue_node); | 64 | INIT_LIST_HEAD(&cmd->queue_node); |
62 | 65 | ||
66 | atomic_inc(&command_count); | ||
67 | dbg("command count: %d\n", atomic_read(&command_count)); | ||
68 | |||
63 | return cmd; | 69 | return cmd; |
64 | } | 70 | } |
65 | 71 | ||
@@ -68,6 +74,8 @@ static void free_command(struct kobject *kobj) | |||
68 | struct command *cmd = to_command(kobj); | 74 | struct command *cmd = to_command(kobj); |
69 | 75 | ||
70 | list_del(&cmd->queue_node); | 76 | list_del(&cmd->queue_node); |
77 | atomic_dec(&command_count); | ||
78 | dbg("command count: %d\n", atomic_read(&command_count)); | ||
71 | kfree(cmd->buffer); | 79 | kfree(cmd->buffer); |
72 | kfree(cmd); | 80 | kfree(cmd); |
73 | } | 81 | } |
@@ -94,8 +102,14 @@ static struct command *dequeue_command(struct service_processor *sp) | |||
94 | 102 | ||
95 | static inline void do_exec_command(struct service_processor *sp) | 103 | static inline void do_exec_command(struct service_processor *sp) |
96 | { | 104 | { |
105 | char tsbuf[32]; | ||
106 | |||
107 | dbg("%s:%d at %s\n", __FUNCTION__, __LINE__, get_timestamp(tsbuf)); | ||
108 | |||
97 | if (ibmasm_send_i2o_message(sp)) { | 109 | if (ibmasm_send_i2o_message(sp)) { |
98 | sp->current_command->status = IBMASM_CMD_FAILED; | 110 | sp->current_command->status = IBMASM_CMD_FAILED; |
111 | wake_up(&sp->current_command->wait); | ||
112 | command_put(sp->current_command); | ||
99 | exec_next_command(sp); | 113 | exec_next_command(sp); |
100 | } | 114 | } |
101 | } | 115 | } |
@@ -111,14 +125,16 @@ static inline void do_exec_command(struct service_processor *sp) | |||
111 | void ibmasm_exec_command(struct service_processor *sp, struct command *cmd) | 125 | void ibmasm_exec_command(struct service_processor *sp, struct command *cmd) |
112 | { | 126 | { |
113 | unsigned long flags; | 127 | unsigned long flags; |
128 | char tsbuf[32]; | ||
129 | |||
130 | dbg("%s:%d at %s\n", __FUNCTION__, __LINE__, get_timestamp(tsbuf)); | ||
114 | 131 | ||
115 | spin_lock_irqsave(&sp->lock, flags); | 132 | spin_lock_irqsave(&sp->lock, flags); |
116 | 133 | ||
117 | if (!sp->current_command) { | 134 | if (!sp->current_command) { |
118 | command_get(cmd); | ||
119 | sp->current_command = cmd; | 135 | sp->current_command = cmd; |
136 | command_get(sp->current_command); | ||
120 | spin_unlock_irqrestore(&sp->lock, flags); | 137 | spin_unlock_irqrestore(&sp->lock, flags); |
121 | |||
122 | do_exec_command(sp); | 138 | do_exec_command(sp); |
123 | } else { | 139 | } else { |
124 | enqueue_command(sp, cmd); | 140 | enqueue_command(sp, cmd); |
@@ -129,9 +145,9 @@ void ibmasm_exec_command(struct service_processor *sp, struct command *cmd) | |||
129 | static void exec_next_command(struct service_processor *sp) | 145 | static void exec_next_command(struct service_processor *sp) |
130 | { | 146 | { |
131 | unsigned long flags; | 147 | unsigned long flags; |
148 | char tsbuf[32]; | ||
132 | 149 | ||
133 | wake_up(&sp->current_command->wait); | 150 | dbg("%s:%d at %s\n", __FUNCTION__, __LINE__, get_timestamp(tsbuf)); |
134 | command_put(sp->current_command); | ||
135 | 151 | ||
136 | spin_lock_irqsave(&sp->lock, flags); | 152 | spin_lock_irqsave(&sp->lock, flags); |
137 | sp->current_command = dequeue_command(sp); | 153 | sp->current_command = dequeue_command(sp); |
@@ -169,7 +185,9 @@ void ibmasm_receive_command_response(struct service_processor *sp, void *respons | |||
169 | if (!sp->current_command) | 185 | if (!sp->current_command) |
170 | return; | 186 | return; |
171 | 187 | ||
172 | memcpy(cmd->buffer, response, min(size, cmd->buffer_size)); | 188 | memcpy_fromio(cmd->buffer, response, min(size, cmd->buffer_size)); |
173 | cmd->status = IBMASM_CMD_COMPLETE; | 189 | cmd->status = IBMASM_CMD_COMPLETE; |
190 | wake_up(&sp->current_command->wait); | ||
191 | command_put(sp->current_command); | ||
174 | exec_next_command(sp); | 192 | exec_next_command(sp); |
175 | } | 193 | } |
diff --git a/drivers/misc/ibmasm/dot_command.c b/drivers/misc/ibmasm/dot_command.c index 478a8d898fc1..13c52f866e2e 100644 --- a/drivers/misc/ibmasm/dot_command.c +++ b/drivers/misc/ibmasm/dot_command.c | |||
@@ -33,7 +33,13 @@ void ibmasm_receive_message(struct service_processor *sp, void *message, int mes | |||
33 | u32 size; | 33 | u32 size; |
34 | struct dot_command_header *header = (struct dot_command_header *)message; | 34 | struct dot_command_header *header = (struct dot_command_header *)message; |
35 | 35 | ||
36 | if (message_size == 0) | ||
37 | return; | ||
38 | |||
36 | size = get_dot_command_size(message); | 39 | size = get_dot_command_size(message); |
40 | if (size == 0) | ||
41 | return; | ||
42 | |||
37 | if (size > message_size) | 43 | if (size > message_size) |
38 | size = message_size; | 44 | size = message_size; |
39 | 45 | ||
@@ -67,7 +73,7 @@ int ibmasm_send_driver_vpd(struct service_processor *sp) | |||
67 | u8 *vpd_data; | 73 | u8 *vpd_data; |
68 | int result = 0; | 74 | int result = 0; |
69 | 75 | ||
70 | command = ibmasm_new_command(INIT_BUFFER_SIZE); | 76 | command = ibmasm_new_command(sp, INIT_BUFFER_SIZE); |
71 | if (command == NULL) | 77 | if (command == NULL) |
72 | return -ENOMEM; | 78 | return -ENOMEM; |
73 | 79 | ||
@@ -121,7 +127,7 @@ int ibmasm_send_os_state(struct service_processor *sp, int os_state) | |||
121 | struct os_state_command *os_state_cmd; | 127 | struct os_state_command *os_state_cmd; |
122 | int result = 0; | 128 | int result = 0; |
123 | 129 | ||
124 | cmd = ibmasm_new_command(sizeof(struct os_state_command)); | 130 | cmd = ibmasm_new_command(sp, sizeof(struct os_state_command)); |
125 | if (cmd == NULL) | 131 | if (cmd == NULL) |
126 | return -ENOMEM; | 132 | return -ENOMEM; |
127 | 133 | ||
diff --git a/drivers/misc/ibmasm/event.c b/drivers/misc/ibmasm/event.c index e100f34f1587..fe1e819235a4 100644 --- a/drivers/misc/ibmasm/event.c +++ b/drivers/misc/ibmasm/event.c | |||
@@ -23,6 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "ibmasm.h" | 25 | #include "ibmasm.h" |
26 | #include "lowlevel.h" | ||
26 | 27 | ||
27 | /* | 28 | /* |
28 | * ASM service processor event handling routines. | 29 | * ASM service processor event handling routines. |
@@ -34,7 +35,6 @@ | |||
34 | * circular buffer. | 35 | * circular buffer. |
35 | */ | 36 | */ |
36 | 37 | ||
37 | |||
38 | static void wake_up_event_readers(struct service_processor *sp) | 38 | static void wake_up_event_readers(struct service_processor *sp) |
39 | { | 39 | { |
40 | struct event_reader *reader; | 40 | struct event_reader *reader; |
@@ -63,7 +63,7 @@ void ibmasm_receive_event(struct service_processor *sp, void *data, unsigned int | |||
63 | spin_lock_irqsave(&sp->lock, flags); | 63 | spin_lock_irqsave(&sp->lock, flags); |
64 | /* copy the event into the next slot in the circular buffer */ | 64 | /* copy the event into the next slot in the circular buffer */ |
65 | event = &buffer->events[buffer->next_index]; | 65 | event = &buffer->events[buffer->next_index]; |
66 | memcpy(event->data, data, data_size); | 66 | memcpy_fromio(event->data, data, data_size); |
67 | event->data_size = data_size; | 67 | event->data_size = data_size; |
68 | event->serial_number = buffer->next_serial_number; | 68 | event->serial_number = buffer->next_serial_number; |
69 | 69 | ||
@@ -93,7 +93,10 @@ int ibmasm_get_next_event(struct service_processor *sp, struct event_reader *rea | |||
93 | unsigned int index; | 93 | unsigned int index; |
94 | unsigned long flags; | 94 | unsigned long flags; |
95 | 95 | ||
96 | if (wait_event_interruptible(reader->wait, event_available(buffer, reader))) | 96 | reader->cancelled = 0; |
97 | |||
98 | if (wait_event_interruptible(reader->wait, | ||
99 | event_available(buffer, reader) || reader->cancelled)) | ||
97 | return -ERESTARTSYS; | 100 | return -ERESTARTSYS; |
98 | 101 | ||
99 | if (!event_available(buffer, reader)) | 102 | if (!event_available(buffer, reader)) |
@@ -116,6 +119,12 @@ int ibmasm_get_next_event(struct service_processor *sp, struct event_reader *rea | |||
116 | return event->data_size; | 119 | return event->data_size; |
117 | } | 120 | } |
118 | 121 | ||
122 | void ibmasm_cancel_next_event(struct event_reader *reader) | ||
123 | { | ||
124 | reader->cancelled = 1; | ||
125 | wake_up_interruptible(&reader->wait); | ||
126 | } | ||
127 | |||
119 | void ibmasm_event_reader_register(struct service_processor *sp, struct event_reader *reader) | 128 | void ibmasm_event_reader_register(struct service_processor *sp, struct event_reader *reader) |
120 | { | 129 | { |
121 | unsigned long flags; | 130 | unsigned long flags; |
@@ -131,8 +140,6 @@ void ibmasm_event_reader_unregister(struct service_processor *sp, struct event_r | |||
131 | { | 140 | { |
132 | unsigned long flags; | 141 | unsigned long flags; |
133 | 142 | ||
134 | wake_up_interruptible(&reader->wait); | ||
135 | |||
136 | spin_lock_irqsave(&sp->lock, flags); | 143 | spin_lock_irqsave(&sp->lock, flags); |
137 | list_del(&reader->node); | 144 | list_del(&reader->node); |
138 | spin_unlock_irqrestore(&sp->lock, flags); | 145 | spin_unlock_irqrestore(&sp->lock, flags); |
@@ -164,6 +171,5 @@ int ibmasm_event_buffer_init(struct service_processor *sp) | |||
164 | 171 | ||
165 | void ibmasm_event_buffer_exit(struct service_processor *sp) | 172 | void ibmasm_event_buffer_exit(struct service_processor *sp) |
166 | { | 173 | { |
167 | wake_up_event_readers(sp); | ||
168 | kfree(sp->event_buffer); | 174 | kfree(sp->event_buffer); |
169 | } | 175 | } |
diff --git a/drivers/misc/ibmasm/heartbeat.c b/drivers/misc/ibmasm/heartbeat.c index ce09309174d6..f295401fac21 100644 --- a/drivers/misc/ibmasm/heartbeat.c +++ b/drivers/misc/ibmasm/heartbeat.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/notifier.h> | 25 | #include <linux/notifier.h> |
26 | #include "ibmasm.h" | 26 | #include "ibmasm.h" |
27 | #include "dot_command.h" | 27 | #include "dot_command.h" |
28 | #include "lowlevel.h" | ||
28 | 29 | ||
29 | static int suspend_heartbeats = 0; | 30 | static int suspend_heartbeats = 0; |
30 | 31 | ||
@@ -62,7 +63,7 @@ void ibmasm_unregister_panic_notifier(void) | |||
62 | 63 | ||
63 | int ibmasm_heartbeat_init(struct service_processor *sp) | 64 | int ibmasm_heartbeat_init(struct service_processor *sp) |
64 | { | 65 | { |
65 | sp->heartbeat = ibmasm_new_command(HEARTBEAT_BUFFER_SIZE); | 66 | sp->heartbeat = ibmasm_new_command(sp, HEARTBEAT_BUFFER_SIZE); |
66 | if (sp->heartbeat == NULL) | 67 | if (sp->heartbeat == NULL) |
67 | return -ENOMEM; | 68 | return -ENOMEM; |
68 | 69 | ||
@@ -71,6 +72,12 @@ int ibmasm_heartbeat_init(struct service_processor *sp) | |||
71 | 72 | ||
72 | void ibmasm_heartbeat_exit(struct service_processor *sp) | 73 | void ibmasm_heartbeat_exit(struct service_processor *sp) |
73 | { | 74 | { |
75 | char tsbuf[32]; | ||
76 | |||
77 | dbg("%s:%d at %s\n", __FUNCTION__, __LINE__, get_timestamp(tsbuf)); | ||
78 | ibmasm_wait_for_response(sp->heartbeat, IBMASM_CMD_TIMEOUT_NORMAL); | ||
79 | dbg("%s:%d at %s\n", __FUNCTION__, __LINE__, get_timestamp(tsbuf)); | ||
80 | suspend_heartbeats = 1; | ||
74 | command_put(sp->heartbeat); | 81 | command_put(sp->heartbeat); |
75 | } | 82 | } |
76 | 83 | ||
@@ -78,14 +85,16 @@ void ibmasm_receive_heartbeat(struct service_processor *sp, void *message, size | |||
78 | { | 85 | { |
79 | struct command *cmd = sp->heartbeat; | 86 | struct command *cmd = sp->heartbeat; |
80 | struct dot_command_header *header = (struct dot_command_header *)cmd->buffer; | 87 | struct dot_command_header *header = (struct dot_command_header *)cmd->buffer; |
88 | char tsbuf[32]; | ||
81 | 89 | ||
90 | dbg("%s:%d at %s\n", __FUNCTION__, __LINE__, get_timestamp(tsbuf)); | ||
82 | if (suspend_heartbeats) | 91 | if (suspend_heartbeats) |
83 | return; | 92 | return; |
84 | 93 | ||
85 | /* return the received dot command to sender */ | 94 | /* return the received dot command to sender */ |
86 | cmd->status = IBMASM_CMD_PENDING; | 95 | cmd->status = IBMASM_CMD_PENDING; |
87 | size = min(size, cmd->buffer_size); | 96 | size = min(size, cmd->buffer_size); |
88 | memcpy(cmd->buffer, message, size); | 97 | memcpy_fromio(cmd->buffer, message, size); |
89 | header->type = sp_write; | 98 | header->type = sp_write; |
90 | ibmasm_exec_command(sp, cmd); | 99 | ibmasm_exec_command(sp, cmd); |
91 | } | 100 | } |
diff --git a/drivers/misc/ibmasm/ibmasm.h b/drivers/misc/ibmasm/ibmasm.h index 6fec7fd8cd1a..ecce4ffd3e23 100644 --- a/drivers/misc/ibmasm/ibmasm.h +++ b/drivers/misc/ibmasm/ibmasm.h | |||
@@ -34,16 +34,31 @@ | |||
34 | #include <linux/version.h> | 34 | #include <linux/version.h> |
35 | #include <linux/interrupt.h> | 35 | #include <linux/interrupt.h> |
36 | #include <linux/device.h> | 36 | #include <linux/device.h> |
37 | #include <linux/input.h> | ||
37 | 38 | ||
38 | /* Driver identification */ | 39 | /* Driver identification */ |
39 | #define DRIVER_NAME "ibmasm" | 40 | #define DRIVER_NAME "ibmasm" |
40 | #define DRIVER_VERSION "0.4" | 41 | #define DRIVER_VERSION "1.0" |
41 | #define DRIVER_AUTHOR "Max Asbock" | 42 | #define DRIVER_AUTHOR "Max Asbock <masbock@us.ibm.com>, Vernon Mauery <vernux@us.ibm.com>" |
42 | #define DRIVER_DESC "IBM ASM Service Processor Driver" | 43 | #define DRIVER_DESC "IBM ASM Service Processor Driver" |
43 | 44 | ||
44 | #define err(msg) printk(KERN_ERR "%s: " msg "\n", DRIVER_NAME) | 45 | #define err(msg) printk(KERN_ERR "%s: " msg "\n", DRIVER_NAME) |
45 | #define info(msg) printk(KERN_INFO "%s: " msg "\n", DRIVER_NAME) | 46 | #define info(msg) printk(KERN_INFO "%s: " msg "\n", DRIVER_NAME) |
46 | 47 | ||
48 | extern int ibmasm_debug; | ||
49 | #define dbg(STR, ARGS...) \ | ||
50 | do { \ | ||
51 | if (ibmasm_debug) \ | ||
52 | printk(KERN_DEBUG STR , ##ARGS); \ | ||
53 | } while (0) | ||
54 | |||
55 | static inline char *get_timestamp(char *buf) | ||
56 | { | ||
57 | struct timeval now; | ||
58 | do_gettimeofday(&now); | ||
59 | sprintf(buf, "%lu.%lu", now.tv_sec, now.tv_usec); | ||
60 | return buf; | ||
61 | } | ||
47 | 62 | ||
48 | #define IBMASM_CMD_PENDING 0 | 63 | #define IBMASM_CMD_PENDING 0 |
49 | #define IBMASM_CMD_COMPLETE 1 | 64 | #define IBMASM_CMD_COMPLETE 1 |
@@ -52,7 +67,7 @@ | |||
52 | #define IBMASM_CMD_TIMEOUT_NORMAL 45 | 67 | #define IBMASM_CMD_TIMEOUT_NORMAL 45 |
53 | #define IBMASM_CMD_TIMEOUT_EXTRA 240 | 68 | #define IBMASM_CMD_TIMEOUT_EXTRA 240 |
54 | 69 | ||
55 | #define IBMASM_CMD_MAX_BUFFER_SIZE 0x4000 | 70 | #define IBMASM_CMD_MAX_BUFFER_SIZE 0x8000 |
56 | 71 | ||
57 | #define REVERSE_HEARTBEAT_TIMEOUT 120 | 72 | #define REVERSE_HEARTBEAT_TIMEOUT 120 |
58 | 73 | ||
@@ -80,12 +95,17 @@ struct command { | |||
80 | size_t buffer_size; | 95 | size_t buffer_size; |
81 | int status; | 96 | int status; |
82 | struct kobject kobj; | 97 | struct kobject kobj; |
98 | spinlock_t *lock; | ||
83 | }; | 99 | }; |
84 | #define to_command(c) container_of(c, struct command, kobj) | 100 | #define to_command(c) container_of(c, struct command, kobj) |
85 | 101 | ||
86 | static inline void command_put(struct command *cmd) | 102 | static inline void command_put(struct command *cmd) |
87 | { | 103 | { |
104 | unsigned long flags; | ||
105 | |||
106 | spin_lock_irqsave(cmd->lock, flags); | ||
88 | kobject_put(&cmd->kobj); | 107 | kobject_put(&cmd->kobj); |
108 | spin_unlock_irqrestore(cmd->lock, flags); | ||
89 | } | 109 | } |
90 | 110 | ||
91 | static inline void command_get(struct command *cmd) | 111 | static inline void command_get(struct command *cmd) |
@@ -108,6 +128,7 @@ struct event_buffer { | |||
108 | }; | 128 | }; |
109 | 129 | ||
110 | struct event_reader { | 130 | struct event_reader { |
131 | int cancelled; | ||
111 | unsigned int next_serial_number; | 132 | unsigned int next_serial_number; |
112 | wait_queue_head_t wait; | 133 | wait_queue_head_t wait; |
113 | struct list_head node; | 134 | struct list_head node; |
@@ -120,41 +141,11 @@ struct reverse_heartbeat { | |||
120 | unsigned int stopped; | 141 | unsigned int stopped; |
121 | }; | 142 | }; |
122 | 143 | ||
123 | 144 | struct ibmasm_remote { | |
124 | /* remote console events */ | 145 | struct input_dev keybd_dev; |
125 | struct mouse_event { | 146 | struct input_dev mouse_dev; |
126 | long x; | ||
127 | long y; | ||
128 | unsigned char buttons; | ||
129 | unsigned char transitions; | ||
130 | }; | ||
131 | |||
132 | struct keyboard_event { | ||
133 | unsigned long key_code; | ||
134 | unsigned char key_down; | ||
135 | }; | 147 | }; |
136 | 148 | ||
137 | struct remote_event { | ||
138 | unsigned long type; | ||
139 | union { | ||
140 | struct mouse_event mouse; | ||
141 | struct keyboard_event keyboard; | ||
142 | } data; | ||
143 | }; | ||
144 | |||
145 | #define DRIVER_REMOTE_QUEUE_SIZE 240 | ||
146 | |||
147 | struct remote_queue { | ||
148 | struct remote_event *start; | ||
149 | struct remote_event *end; | ||
150 | struct remote_event *reader; | ||
151 | struct remote_event *writer; | ||
152 | unsigned int size; | ||
153 | int open; | ||
154 | wait_queue_head_t wait; | ||
155 | }; | ||
156 | |||
157 | |||
158 | struct service_processor { | 149 | struct service_processor { |
159 | struct list_head node; | 150 | struct list_head node; |
160 | spinlock_t lock; | 151 | spinlock_t lock; |
@@ -167,13 +158,13 @@ struct service_processor { | |||
167 | char dirname[IBMASM_NAME_SIZE]; | 158 | char dirname[IBMASM_NAME_SIZE]; |
168 | char devname[IBMASM_NAME_SIZE]; | 159 | char devname[IBMASM_NAME_SIZE]; |
169 | unsigned int number; | 160 | unsigned int number; |
170 | struct remote_queue remote_queue; | 161 | struct ibmasm_remote *remote; |
171 | int serial_line; | 162 | int serial_line; |
172 | struct device *dev; | 163 | struct device *dev; |
173 | }; | 164 | }; |
174 | 165 | ||
175 | /* command processing */ | 166 | /* command processing */ |
176 | extern struct command *ibmasm_new_command(size_t buffer_size); | 167 | extern struct command *ibmasm_new_command(struct service_processor *sp, size_t buffer_size); |
177 | extern void ibmasm_exec_command(struct service_processor *sp, struct command *cmd); | 168 | extern void ibmasm_exec_command(struct service_processor *sp, struct command *cmd); |
178 | extern void ibmasm_wait_for_response(struct command *cmd, int timeout); | 169 | extern void ibmasm_wait_for_response(struct command *cmd, int timeout); |
179 | extern void ibmasm_receive_command_response(struct service_processor *sp, void *response, size_t size); | 170 | extern void ibmasm_receive_command_response(struct service_processor *sp, void *response, size_t size); |
@@ -185,6 +176,7 @@ extern void ibmasm_receive_event(struct service_processor *sp, void *data, unsi | |||
185 | extern void ibmasm_event_reader_register(struct service_processor *sp, struct event_reader *reader); | 176 | extern void ibmasm_event_reader_register(struct service_processor *sp, struct event_reader *reader); |
186 | extern void ibmasm_event_reader_unregister(struct service_processor *sp, struct event_reader *reader); | 177 | extern void ibmasm_event_reader_unregister(struct service_processor *sp, struct event_reader *reader); |
187 | extern int ibmasm_get_next_event(struct service_processor *sp, struct event_reader *reader); | 178 | extern int ibmasm_get_next_event(struct service_processor *sp, struct event_reader *reader); |
179 | extern void ibmasm_cancel_next_event(struct event_reader *reader); | ||
188 | 180 | ||
189 | /* heartbeat - from SP to OS */ | 181 | /* heartbeat - from SP to OS */ |
190 | extern void ibmasm_register_panic_notifier(void); | 182 | extern void ibmasm_register_panic_notifier(void); |
@@ -208,11 +200,9 @@ extern int ibmasm_send_i2o_message(struct service_processor *sp); | |||
208 | extern irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id, struct pt_regs *regs); | 200 | extern irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id, struct pt_regs *regs); |
209 | 201 | ||
210 | /* remote console */ | 202 | /* remote console */ |
211 | extern void ibmasm_handle_mouse_interrupt(struct service_processor *sp); | 203 | extern void ibmasm_handle_mouse_interrupt(struct service_processor *sp, struct pt_regs *regs); |
212 | extern int ibmasm_init_remote_queue(struct service_processor *sp); | 204 | extern int ibmasm_init_remote_input_dev(struct service_processor *sp); |
213 | extern void ibmasm_free_remote_queue(struct service_processor *sp); | 205 | extern void ibmasm_free_remote_input_dev(struct service_processor *sp); |
214 | extern void ibmasm_advance_reader(struct remote_queue *q, unsigned int n); | ||
215 | extern size_t ibmasm_events_available(struct remote_queue *q); | ||
216 | 206 | ||
217 | /* file system */ | 207 | /* file system */ |
218 | extern int ibmasmfs_register(void); | 208 | extern int ibmasmfs_register(void); |
diff --git a/drivers/misc/ibmasm/ibmasmfs.c b/drivers/misc/ibmasm/ibmasmfs.c index 866e867e68f2..5c550fcac2c4 100644 --- a/drivers/misc/ibmasm/ibmasmfs.c +++ b/drivers/misc/ibmasm/ibmasmfs.c | |||
@@ -37,9 +37,7 @@ | |||
37 | * | |-- event | 37 | * | |-- event |
38 | * | |-- reverse_heartbeat | 38 | * | |-- reverse_heartbeat |
39 | * | `-- remote_video | 39 | * | `-- remote_video |
40 | * | |-- connected | ||
41 | * | |-- depth | 40 | * | |-- depth |
42 | * | |-- events | ||
43 | * | |-- height | 41 | * | |-- height |
44 | * | `-- width | 42 | * | `-- width |
45 | * . | 43 | * . |
@@ -50,9 +48,7 @@ | |||
50 | * |-- event | 48 | * |-- event |
51 | * |-- reverse_heartbeat | 49 | * |-- reverse_heartbeat |
52 | * `-- remote_video | 50 | * `-- remote_video |
53 | * |-- connected | ||
54 | * |-- depth | 51 | * |-- depth |
55 | * |-- events | ||
56 | * |-- height | 52 | * |-- height |
57 | * `-- width | 53 | * `-- width |
58 | * | 54 | * |
@@ -75,14 +71,6 @@ | |||
75 | * remote_video/width: control remote display settings | 71 | * remote_video/width: control remote display settings |
76 | * write: set value | 72 | * write: set value |
77 | * read: read value | 73 | * read: read value |
78 | * | ||
79 | * remote_video/connected | ||
80 | * read: return "1" if web browser VNC java applet is connected, | ||
81 | * "0" otherwise | ||
82 | * | ||
83 | * remote_video/events | ||
84 | * read: sleep until a remote mouse or keyboard event occurs, then return | ||
85 | * then event. | ||
86 | */ | 74 | */ |
87 | 75 | ||
88 | #include <linux/fs.h> | 76 | #include <linux/fs.h> |
@@ -333,7 +321,7 @@ static ssize_t command_file_write(struct file *file, const char __user *ubuff, s | |||
333 | if (command_data->command) | 321 | if (command_data->command) |
334 | return -EAGAIN; | 322 | return -EAGAIN; |
335 | 323 | ||
336 | cmd = ibmasm_new_command(count); | 324 | cmd = ibmasm_new_command(command_data->sp, count); |
337 | if (!cmd) | 325 | if (!cmd) |
338 | return -ENOMEM; | 326 | return -ENOMEM; |
339 | 327 | ||
@@ -374,6 +362,7 @@ static int event_file_open(struct inode *inode, struct file *file) | |||
374 | ibmasm_event_reader_register(sp, &event_data->reader); | 362 | ibmasm_event_reader_register(sp, &event_data->reader); |
375 | 363 | ||
376 | event_data->sp = sp; | 364 | event_data->sp = sp; |
365 | event_data->active = 0; | ||
377 | file->private_data = event_data; | 366 | file->private_data = event_data; |
378 | return 0; | 367 | return 0; |
379 | } | 368 | } |
@@ -391,7 +380,9 @@ static ssize_t event_file_read(struct file *file, char __user *buf, size_t count | |||
391 | { | 380 | { |
392 | struct ibmasmfs_event_data *event_data = file->private_data; | 381 | struct ibmasmfs_event_data *event_data = file->private_data; |
393 | struct event_reader *reader = &event_data->reader; | 382 | struct event_reader *reader = &event_data->reader; |
383 | struct service_processor *sp = event_data->sp; | ||
394 | int ret; | 384 | int ret; |
385 | unsigned long flags; | ||
395 | 386 | ||
396 | if (*offset < 0) | 387 | if (*offset < 0) |
397 | return -EINVAL; | 388 | return -EINVAL; |
@@ -400,17 +391,32 @@ static ssize_t event_file_read(struct file *file, char __user *buf, size_t count | |||
400 | if (*offset != 0) | 391 | if (*offset != 0) |
401 | return 0; | 392 | return 0; |
402 | 393 | ||
403 | ret = ibmasm_get_next_event(event_data->sp, reader); | 394 | spin_lock_irqsave(&sp->lock, flags); |
395 | if (event_data->active) { | ||
396 | spin_unlock_irqrestore(&sp->lock, flags); | ||
397 | return -EBUSY; | ||
398 | } | ||
399 | event_data->active = 1; | ||
400 | spin_unlock_irqrestore(&sp->lock, flags); | ||
401 | |||
402 | ret = ibmasm_get_next_event(sp, reader); | ||
404 | if (ret <= 0) | 403 | if (ret <= 0) |
405 | return ret; | 404 | goto out; |
406 | 405 | ||
407 | if (count < reader->data_size) | 406 | if (count < reader->data_size) { |
408 | return -EINVAL; | 407 | ret = -EINVAL; |
408 | goto out; | ||
409 | } | ||
409 | 410 | ||
410 | if (copy_to_user(buf, reader->data, reader->data_size)) | 411 | if (copy_to_user(buf, reader->data, reader->data_size)) { |
411 | return -EFAULT; | 412 | ret = -EFAULT; |
413 | goto out; | ||
414 | } | ||
415 | ret = reader->data_size; | ||
412 | 416 | ||
413 | return reader->data_size; | 417 | out: |
418 | event_data->active = 0; | ||
419 | return ret; | ||
414 | } | 420 | } |
415 | 421 | ||
416 | static ssize_t event_file_write(struct file *file, const char __user *buf, size_t count, loff_t *offset) | 422 | static ssize_t event_file_write(struct file *file, const char __user *buf, size_t count, loff_t *offset) |
@@ -424,7 +430,7 @@ static ssize_t event_file_write(struct file *file, const char __user *buf, size_ | |||
424 | if (*offset != 0) | 430 | if (*offset != 0) |
425 | return 0; | 431 | return 0; |
426 | 432 | ||
427 | wake_up_interruptible(&event_data->reader.wait); | 433 | ibmasm_cancel_next_event(&event_data->reader); |
428 | return 0; | 434 | return 0; |
429 | } | 435 | } |
430 | 436 | ||
@@ -575,75 +581,6 @@ static ssize_t remote_settings_file_write(struct file *file, const char __user * | |||
575 | return count; | 581 | return count; |
576 | } | 582 | } |
577 | 583 | ||
578 | static int remote_event_file_open(struct inode *inode, struct file *file) | ||
579 | { | ||
580 | struct service_processor *sp; | ||
581 | unsigned long flags; | ||
582 | struct remote_queue *q; | ||
583 | |||
584 | file->private_data = inode->u.generic_ip; | ||
585 | sp = file->private_data; | ||
586 | q = &sp->remote_queue; | ||
587 | |||
588 | /* allow only one event reader */ | ||
589 | spin_lock_irqsave(&sp->lock, flags); | ||
590 | if (q->open) { | ||
591 | spin_unlock_irqrestore(&sp->lock, flags); | ||
592 | return -EBUSY; | ||
593 | } | ||
594 | q->open = 1; | ||
595 | spin_unlock_irqrestore(&sp->lock, flags); | ||
596 | |||
597 | enable_mouse_interrupts(sp); | ||
598 | |||
599 | return 0; | ||
600 | } | ||
601 | |||
602 | static int remote_event_file_close(struct inode *inode, struct file *file) | ||
603 | { | ||
604 | struct service_processor *sp = file->private_data; | ||
605 | |||
606 | disable_mouse_interrupts(sp); | ||
607 | wake_up_interruptible(&sp->remote_queue.wait); | ||
608 | sp->remote_queue.open = 0; | ||
609 | |||
610 | return 0; | ||
611 | } | ||
612 | |||
613 | static ssize_t remote_event_file_read(struct file *file, char __user *buf, size_t count, loff_t *offset) | ||
614 | { | ||
615 | struct service_processor *sp = file->private_data; | ||
616 | struct remote_queue *q = &sp->remote_queue; | ||
617 | size_t data_size; | ||
618 | struct remote_event *reader = q->reader; | ||
619 | size_t num_events; | ||
620 | |||
621 | if (*offset < 0) | ||
622 | return -EINVAL; | ||
623 | if (count == 0 || count > 1024) | ||
624 | return 0; | ||
625 | if (*offset != 0) | ||
626 | return 0; | ||
627 | |||
628 | if (wait_event_interruptible(q->wait, q->reader != q->writer)) | ||
629 | return -ERESTARTSYS; | ||
630 | |||
631 | /* only get multiples of struct remote_event */ | ||
632 | num_events = min((count/sizeof(struct remote_event)), ibmasm_events_available(q)); | ||
633 | if (!num_events) | ||
634 | return 0; | ||
635 | |||
636 | data_size = num_events * sizeof(struct remote_event); | ||
637 | |||
638 | if (copy_to_user(buf, reader, data_size)) | ||
639 | return -EFAULT; | ||
640 | |||
641 | ibmasm_advance_reader(q, num_events); | ||
642 | |||
643 | return data_size; | ||
644 | } | ||
645 | |||
646 | |||
647 | static struct file_operations command_fops = { | 584 | static struct file_operations command_fops = { |
648 | .open = command_file_open, | 585 | .open = command_file_open, |
649 | .release = command_file_close, | 586 | .release = command_file_close, |
@@ -672,12 +609,6 @@ static struct file_operations remote_settings_fops = { | |||
672 | .write = remote_settings_file_write, | 609 | .write = remote_settings_file_write, |
673 | }; | 610 | }; |
674 | 611 | ||
675 | static struct file_operations remote_event_fops = { | ||
676 | .open = remote_event_file_open, | ||
677 | .release = remote_event_file_close, | ||
678 | .read = remote_event_file_read, | ||
679 | }; | ||
680 | |||
681 | 612 | ||
682 | static void ibmasmfs_create_files (struct super_block *sb, struct dentry *root) | 613 | static void ibmasmfs_create_files (struct super_block *sb, struct dentry *root) |
683 | { | 614 | { |
@@ -703,7 +634,5 @@ static void ibmasmfs_create_files (struct super_block *sb, struct dentry *root) | |||
703 | ibmasmfs_create_file(sb, remote_dir, "width", &remote_settings_fops, (void *)display_width(sp), S_IRUSR|S_IWUSR); | 634 | ibmasmfs_create_file(sb, remote_dir, "width", &remote_settings_fops, (void *)display_width(sp), S_IRUSR|S_IWUSR); |
704 | ibmasmfs_create_file(sb, remote_dir, "height", &remote_settings_fops, (void *)display_height(sp), S_IRUSR|S_IWUSR); | 635 | ibmasmfs_create_file(sb, remote_dir, "height", &remote_settings_fops, (void *)display_height(sp), S_IRUSR|S_IWUSR); |
705 | ibmasmfs_create_file(sb, remote_dir, "depth", &remote_settings_fops, (void *)display_depth(sp), S_IRUSR|S_IWUSR); | 636 | ibmasmfs_create_file(sb, remote_dir, "depth", &remote_settings_fops, (void *)display_depth(sp), S_IRUSR|S_IWUSR); |
706 | ibmasmfs_create_file(sb, remote_dir, "connected", &remote_settings_fops, (void *)vnc_status(sp), S_IRUSR); | ||
707 | ibmasmfs_create_file(sb, remote_dir, "events", &remote_event_fops, (void *)sp, S_IRUSR); | ||
708 | } | 637 | } |
709 | } | 638 | } |
diff --git a/drivers/misc/ibmasm/lowlevel.c b/drivers/misc/ibmasm/lowlevel.c index 5156de2759d8..47949a2c7e94 100644 --- a/drivers/misc/ibmasm/lowlevel.c +++ b/drivers/misc/ibmasm/lowlevel.c | |||
@@ -46,8 +46,8 @@ int ibmasm_send_i2o_message(struct service_processor *sp) | |||
46 | 46 | ||
47 | message = get_i2o_message(sp->base_address, mfa); | 47 | message = get_i2o_message(sp->base_address, mfa); |
48 | 48 | ||
49 | memcpy(&message->header, &header, sizeof(struct i2o_header)); | 49 | memcpy_toio(&message->header, &header, sizeof(struct i2o_header)); |
50 | memcpy(&message->data, command->buffer, command_size); | 50 | memcpy_toio(&message->data, command->buffer, command_size); |
51 | 51 | ||
52 | set_mfa_inbound(sp->base_address, mfa); | 52 | set_mfa_inbound(sp->base_address, mfa); |
53 | 53 | ||
@@ -59,23 +59,27 @@ irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id, struct pt_regs *reg | |||
59 | u32 mfa; | 59 | u32 mfa; |
60 | struct service_processor *sp = (struct service_processor *)dev_id; | 60 | struct service_processor *sp = (struct service_processor *)dev_id; |
61 | void __iomem *base_address = sp->base_address; | 61 | void __iomem *base_address = sp->base_address; |
62 | char tsbuf[32]; | ||
62 | 63 | ||
63 | if (!sp_interrupt_pending(base_address)) | 64 | if (!sp_interrupt_pending(base_address)) |
64 | return IRQ_NONE; | 65 | return IRQ_NONE; |
65 | 66 | ||
67 | dbg("respond to interrupt at %s\n", get_timestamp(tsbuf)); | ||
68 | |||
66 | if (mouse_interrupt_pending(sp)) { | 69 | if (mouse_interrupt_pending(sp)) { |
67 | ibmasm_handle_mouse_interrupt(sp); | 70 | ibmasm_handle_mouse_interrupt(sp, regs); |
68 | mfa = get_mfa_outbound(base_address); | ||
69 | clear_mouse_interrupt(sp); | 71 | clear_mouse_interrupt(sp); |
70 | set_mfa_outbound(base_address, mfa); | ||
71 | return IRQ_HANDLED; | ||
72 | } | 72 | } |
73 | 73 | ||
74 | mfa = get_mfa_outbound(base_address); | 74 | mfa = get_mfa_outbound(base_address); |
75 | if (valid_mfa(mfa)) { | 75 | if (valid_mfa(mfa)) { |
76 | struct i2o_message *msg = get_i2o_message(base_address, mfa); | 76 | struct i2o_message *msg = get_i2o_message(base_address, mfa); |
77 | ibmasm_receive_message(sp, &msg->data, incoming_data_size(msg)); | 77 | ibmasm_receive_message(sp, &msg->data, incoming_data_size(msg)); |
78 | } | 78 | } else |
79 | dbg("didn't get a valid MFA\n"); | ||
80 | |||
79 | set_mfa_outbound(base_address, mfa); | 81 | set_mfa_outbound(base_address, mfa); |
82 | dbg("finished interrupt at %s\n", get_timestamp(tsbuf)); | ||
83 | |||
80 | return IRQ_HANDLED; | 84 | return IRQ_HANDLED; |
81 | } | 85 | } |
diff --git a/drivers/misc/ibmasm/module.c b/drivers/misc/ibmasm/module.c index 777432ae764a..1fdf03fd2da7 100644 --- a/drivers/misc/ibmasm/module.c +++ b/drivers/misc/ibmasm/module.c | |||
@@ -56,17 +56,26 @@ | |||
56 | #include "lowlevel.h" | 56 | #include "lowlevel.h" |
57 | #include "remote.h" | 57 | #include "remote.h" |
58 | 58 | ||
59 | int ibmasm_debug = 0; | ||
60 | module_param(ibmasm_debug, int , S_IRUGO | S_IWUSR); | ||
61 | MODULE_PARM_DESC(ibmasm_debug, " Set debug mode on or off"); | ||
62 | |||
59 | 63 | ||
60 | static int __devinit ibmasm_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | 64 | static int __devinit ibmasm_init_one(struct pci_dev *pdev, const struct pci_device_id *id) |
61 | { | 65 | { |
62 | int err, result = -ENOMEM; | 66 | int result; |
63 | struct service_processor *sp; | 67 | struct service_processor *sp; |
64 | 68 | ||
65 | if ((err = pci_enable_device(pdev))) { | 69 | if ((result = pci_enable_device(pdev))) { |
66 | printk(KERN_ERR "%s: can't enable PCI device at %s\n", | 70 | dev_err(&pdev->dev, "Failed to enable PCI device\n"); |
67 | DRIVER_NAME, pci_name(pdev)); | 71 | return result; |
68 | return err; | ||
69 | } | 72 | } |
73 | if ((result = pci_request_regions(pdev, DRIVER_NAME))) { | ||
74 | dev_err(&pdev->dev, "Failed to allocate PCI resources\n"); | ||
75 | goto error_resources; | ||
76 | } | ||
77 | /* vnc client won't work without bus-mastering */ | ||
78 | pci_set_master(pdev); | ||
70 | 79 | ||
71 | sp = kmalloc(sizeof(struct service_processor), GFP_KERNEL); | 80 | sp = kmalloc(sizeof(struct service_processor), GFP_KERNEL); |
72 | if (sp == NULL) { | 81 | if (sp == NULL) { |
@@ -76,6 +85,9 @@ static int __devinit ibmasm_init_one(struct pci_dev *pdev, const struct pci_devi | |||
76 | } | 85 | } |
77 | memset(sp, 0, sizeof(struct service_processor)); | 86 | memset(sp, 0, sizeof(struct service_processor)); |
78 | 87 | ||
88 | sp->lock = SPIN_LOCK_UNLOCKED; | ||
89 | INIT_LIST_HEAD(&sp->command_queue); | ||
90 | |||
79 | pci_set_drvdata(pdev, (void *)sp); | 91 | pci_set_drvdata(pdev, (void *)sp); |
80 | sp->dev = &pdev->dev; | 92 | sp->dev = &pdev->dev; |
81 | sp->number = pdev->bus->number; | 93 | sp->number = pdev->bus->number; |
@@ -101,15 +113,6 @@ static int __devinit ibmasm_init_one(struct pci_dev *pdev, const struct pci_devi | |||
101 | goto error_ioremap; | 113 | goto error_ioremap; |
102 | } | 114 | } |
103 | 115 | ||
104 | result = ibmasm_init_remote_queue(sp); | ||
105 | if (result) { | ||
106 | dev_err(sp->dev, "Failed to initialize remote queue\n"); | ||
107 | goto error_remote_queue; | ||
108 | } | ||
109 | |||
110 | spin_lock_init(&sp->lock); | ||
111 | INIT_LIST_HEAD(&sp->command_queue); | ||
112 | |||
113 | result = request_irq(sp->irq, ibmasm_interrupt_handler, SA_SHIRQ, sp->devname, (void*)sp); | 116 | result = request_irq(sp->irq, ibmasm_interrupt_handler, SA_SHIRQ, sp->devname, (void*)sp); |
114 | if (result) { | 117 | if (result) { |
115 | dev_err(sp->dev, "Failed to register interrupt handler\n"); | 118 | dev_err(sp->dev, "Failed to register interrupt handler\n"); |
@@ -117,7 +120,12 @@ static int __devinit ibmasm_init_one(struct pci_dev *pdev, const struct pci_devi | |||
117 | } | 120 | } |
118 | 121 | ||
119 | enable_sp_interrupts(sp->base_address); | 122 | enable_sp_interrupts(sp->base_address); |
120 | disable_mouse_interrupts(sp); | 123 | |
124 | result = ibmasm_init_remote_input_dev(sp); | ||
125 | if (result) { | ||
126 | dev_err(sp->dev, "Failed to initialize remote queue\n"); | ||
127 | goto error_send_message; | ||
128 | } | ||
121 | 129 | ||
122 | result = ibmasm_send_driver_vpd(sp); | 130 | result = ibmasm_send_driver_vpd(sp); |
123 | if (result) { | 131 | if (result) { |
@@ -133,30 +141,25 @@ static int __devinit ibmasm_init_one(struct pci_dev *pdev, const struct pci_devi | |||
133 | 141 | ||
134 | ibmasm_register_uart(sp); | 142 | ibmasm_register_uart(sp); |
135 | 143 | ||
136 | dev_printk(KERN_DEBUG, &pdev->dev, "WARNING: This software may not be supported or function\n"); | ||
137 | dev_printk(KERN_DEBUG, &pdev->dev, "correctly on your IBM server. Please consult the IBM\n"); | ||
138 | dev_printk(KERN_DEBUG, &pdev->dev, "ServerProven website\n"); | ||
139 | dev_printk(KERN_DEBUG, &pdev->dev, "http://www.pc.ibm.com/ww/eserver/xseries/serverproven\n"); | ||
140 | dev_printk(KERN_DEBUG, &pdev->dev, "for information on the specific driver level and support\n"); | ||
141 | dev_printk(KERN_DEBUG, &pdev->dev, "statement for your IBM server.\n"); | ||
142 | |||
143 | return 0; | 144 | return 0; |
144 | 145 | ||
145 | error_send_message: | 146 | error_send_message: |
146 | disable_sp_interrupts(sp->base_address); | 147 | disable_sp_interrupts(sp->base_address); |
148 | ibmasm_free_remote_input_dev(sp); | ||
147 | free_irq(sp->irq, (void *)sp); | 149 | free_irq(sp->irq, (void *)sp); |
148 | error_request_irq: | 150 | error_request_irq: |
149 | ibmasm_free_remote_queue(sp); | ||
150 | error_remote_queue: | ||
151 | iounmap(sp->base_address); | 151 | iounmap(sp->base_address); |
152 | error_ioremap: | 152 | error_ioremap: |
153 | ibmasm_heartbeat_exit(sp); | 153 | ibmasm_heartbeat_exit(sp); |
154 | error_heartbeat: | 154 | error_heartbeat: |
155 | ibmasm_event_buffer_exit(sp); | 155 | ibmasm_event_buffer_exit(sp); |
156 | error_eventbuffer: | 156 | error_eventbuffer: |
157 | pci_set_drvdata(pdev, NULL); | ||
157 | kfree(sp); | 158 | kfree(sp); |
158 | error_kmalloc: | 159 | error_kmalloc: |
159 | pci_disable_device(pdev); | 160 | pci_release_regions(pdev); |
161 | error_resources: | ||
162 | pci_disable_device(pdev); | ||
160 | 163 | ||
161 | return result; | 164 | return result; |
162 | } | 165 | } |
@@ -165,16 +168,24 @@ static void __devexit ibmasm_remove_one(struct pci_dev *pdev) | |||
165 | { | 168 | { |
166 | struct service_processor *sp = (struct service_processor *)pci_get_drvdata(pdev); | 169 | struct service_processor *sp = (struct service_processor *)pci_get_drvdata(pdev); |
167 | 170 | ||
171 | dbg("Unregistering UART\n"); | ||
168 | ibmasm_unregister_uart(sp); | 172 | ibmasm_unregister_uart(sp); |
169 | ibmasm_send_os_state(sp, SYSTEM_STATE_OS_DOWN); | 173 | dbg("Sending OS down message\n"); |
174 | if (ibmasm_send_os_state(sp, SYSTEM_STATE_OS_DOWN)) | ||
175 | err("failed to get repsonse to 'Send OS State' command\n"); | ||
176 | dbg("Disabling heartbeats\n"); | ||
177 | ibmasm_heartbeat_exit(sp); | ||
178 | dbg("Disabling interrupts\n"); | ||
170 | disable_sp_interrupts(sp->base_address); | 179 | disable_sp_interrupts(sp->base_address); |
171 | disable_mouse_interrupts(sp); | 180 | dbg("Freeing SP irq\n"); |
172 | free_irq(sp->irq, (void *)sp); | 181 | free_irq(sp->irq, (void *)sp); |
173 | ibmasm_heartbeat_exit(sp); | 182 | dbg("Cleaning up\n"); |
174 | ibmasm_free_remote_queue(sp); | 183 | ibmasm_free_remote_input_dev(sp); |
175 | iounmap(sp->base_address); | 184 | iounmap(sp->base_address); |
176 | ibmasm_event_buffer_exit(sp); | 185 | ibmasm_event_buffer_exit(sp); |
186 | pci_set_drvdata(pdev, NULL); | ||
177 | kfree(sp); | 187 | kfree(sp); |
188 | pci_release_regions(pdev); | ||
178 | pci_disable_device(pdev); | 189 | pci_disable_device(pdev); |
179 | } | 190 | } |
180 | 191 | ||
diff --git a/drivers/misc/ibmasm/r_heartbeat.c b/drivers/misc/ibmasm/r_heartbeat.c index 93d9c1b2ad6f..f8fdb2d5417e 100644 --- a/drivers/misc/ibmasm/r_heartbeat.c +++ b/drivers/misc/ibmasm/r_heartbeat.c | |||
@@ -63,7 +63,7 @@ int ibmasm_start_reverse_heartbeat(struct service_processor *sp, struct reverse_ | |||
63 | int times_failed = 0; | 63 | int times_failed = 0; |
64 | int result = 1; | 64 | int result = 1; |
65 | 65 | ||
66 | cmd = ibmasm_new_command(sizeof rhb_dot_cmd); | 66 | cmd = ibmasm_new_command(sp, sizeof rhb_dot_cmd); |
67 | if (!cmd) | 67 | if (!cmd) |
68 | return -ENOMEM; | 68 | return -ENOMEM; |
69 | 69 | ||
diff --git a/drivers/misc/ibmasm/remote.c b/drivers/misc/ibmasm/remote.c index 520c3f10c271..d3c48d23ee51 100644 --- a/drivers/misc/ibmasm/remote.c +++ b/drivers/misc/ibmasm/remote.c | |||
@@ -1,4 +1,3 @@ | |||
1 | |||
2 | /* | 1 | /* |
3 | * IBM ASM Service Processor Device Driver | 2 | * IBM ASM Service Processor Device Driver |
4 | * | 3 | * |
@@ -18,135 +17,256 @@ | |||
18 | * | 17 | * |
19 | * Copyright (C) IBM Corporation, 2004 | 18 | * Copyright (C) IBM Corporation, 2004 |
20 | * | 19 | * |
21 | * Author: Max Asböck <amax@us.ibm.com> | 20 | * Authors: Max Asböck <amax@us.ibm.com> |
21 | * Vernon Mauery <vernux@us.ibm.com> | ||
22 | * | 22 | * |
23 | */ | 23 | */ |
24 | 24 | ||
25 | /* Remote mouse and keyboard event handling functions */ | 25 | /* Remote mouse and keyboard event handling functions */ |
26 | 26 | ||
27 | #include <linux/pci.h> | ||
27 | #include "ibmasm.h" | 28 | #include "ibmasm.h" |
28 | #include "remote.h" | 29 | #include "remote.h" |
29 | 30 | ||
30 | int ibmasm_init_remote_queue(struct service_processor *sp) | 31 | static int xmax = 1600; |
31 | { | 32 | static int ymax = 1200; |
32 | struct remote_queue *q = &sp->remote_queue; | ||
33 | |||
34 | disable_mouse_interrupts(sp); | ||
35 | 33 | ||
36 | q->open = 0; | ||
37 | q->size = 0; | ||
38 | 34 | ||
39 | q->start = kmalloc(DRIVER_REMOTE_QUEUE_SIZE * sizeof(struct remote_event), GFP_KERNEL); | 35 | static unsigned short xlate_high[XLATE_SIZE] = { |
40 | if (q->start == 0) | 36 | [KEY_SYM_ENTER & 0xff] = KEY_ENTER, |
41 | return -ENOMEM; | 37 | [KEY_SYM_KPSLASH & 0xff] = KEY_KPSLASH, |
38 | [KEY_SYM_KPSTAR & 0xff] = KEY_KPASTERISK, | ||
39 | [KEY_SYM_KPMINUS & 0xff] = KEY_KPMINUS, | ||
40 | [KEY_SYM_KPDOT & 0xff] = KEY_KPDOT, | ||
41 | [KEY_SYM_KPPLUS & 0xff] = KEY_KPPLUS, | ||
42 | [KEY_SYM_KP0 & 0xff] = KEY_KP0, | ||
43 | [KEY_SYM_KP1 & 0xff] = KEY_KP1, | ||
44 | [KEY_SYM_KP2 & 0xff] = KEY_KP2, [KEY_SYM_KPDOWN & 0xff] = KEY_KP2, | ||
45 | [KEY_SYM_KP3 & 0xff] = KEY_KP3, | ||
46 | [KEY_SYM_KP4 & 0xff] = KEY_KP4, [KEY_SYM_KPLEFT & 0xff] = KEY_KP4, | ||
47 | [KEY_SYM_KP5 & 0xff] = KEY_KP5, | ||
48 | [KEY_SYM_KP6 & 0xff] = KEY_KP6, [KEY_SYM_KPRIGHT & 0xff] = KEY_KP6, | ||
49 | [KEY_SYM_KP7 & 0xff] = KEY_KP7, | ||
50 | [KEY_SYM_KP8 & 0xff] = KEY_KP8, [KEY_SYM_KPUP & 0xff] = KEY_KP8, | ||
51 | [KEY_SYM_KP9 & 0xff] = KEY_KP9, | ||
52 | [KEY_SYM_BK_SPC & 0xff] = KEY_BACKSPACE, | ||
53 | [KEY_SYM_TAB & 0xff] = KEY_TAB, | ||
54 | [KEY_SYM_CTRL & 0xff] = KEY_LEFTCTRL, | ||
55 | [KEY_SYM_ALT & 0xff] = KEY_LEFTALT, | ||
56 | [KEY_SYM_INSERT & 0xff] = KEY_INSERT, | ||
57 | [KEY_SYM_DELETE & 0xff] = KEY_DELETE, | ||
58 | [KEY_SYM_SHIFT & 0xff] = KEY_LEFTSHIFT, | ||
59 | [KEY_SYM_UARROW & 0xff] = KEY_UP, | ||
60 | [KEY_SYM_DARROW & 0xff] = KEY_DOWN, | ||
61 | [KEY_SYM_LARROW & 0xff] = KEY_LEFT, | ||
62 | [KEY_SYM_RARROW & 0xff] = KEY_RIGHT, | ||
63 | [KEY_SYM_ESCAPE & 0xff] = KEY_ESC, | ||
64 | [KEY_SYM_PAGEUP & 0xff] = KEY_PAGEUP, | ||
65 | [KEY_SYM_PAGEDOWN & 0xff] = KEY_PAGEDOWN, | ||
66 | [KEY_SYM_HOME & 0xff] = KEY_HOME, | ||
67 | [KEY_SYM_END & 0xff] = KEY_END, | ||
68 | [KEY_SYM_F1 & 0xff] = KEY_F1, | ||
69 | [KEY_SYM_F2 & 0xff] = KEY_F2, | ||
70 | [KEY_SYM_F3 & 0xff] = KEY_F3, | ||
71 | [KEY_SYM_F4 & 0xff] = KEY_F4, | ||
72 | [KEY_SYM_F5 & 0xff] = KEY_F5, | ||
73 | [KEY_SYM_F6 & 0xff] = KEY_F6, | ||
74 | [KEY_SYM_F7 & 0xff] = KEY_F7, | ||
75 | [KEY_SYM_F8 & 0xff] = KEY_F8, | ||
76 | [KEY_SYM_F9 & 0xff] = KEY_F9, | ||
77 | [KEY_SYM_F10 & 0xff] = KEY_F10, | ||
78 | [KEY_SYM_F11 & 0xff] = KEY_F11, | ||
79 | [KEY_SYM_F12 & 0xff] = KEY_F12, | ||
80 | [KEY_SYM_CAP_LOCK & 0xff] = KEY_CAPSLOCK, | ||
81 | [KEY_SYM_NUM_LOCK & 0xff] = KEY_NUMLOCK, | ||
82 | [KEY_SYM_SCR_LOCK & 0xff] = KEY_SCROLLLOCK, | ||
83 | }; | ||
84 | static unsigned short xlate[XLATE_SIZE] = { | ||
85 | [NO_KEYCODE] = KEY_RESERVED, | ||
86 | [KEY_SYM_SPACE] = KEY_SPACE, | ||
87 | [KEY_SYM_TILDE] = KEY_GRAVE, [KEY_SYM_BKTIC] = KEY_GRAVE, | ||
88 | [KEY_SYM_ONE] = KEY_1, [KEY_SYM_BANG] = KEY_1, | ||
89 | [KEY_SYM_TWO] = KEY_2, [KEY_SYM_AT] = KEY_2, | ||
90 | [KEY_SYM_THREE] = KEY_3, [KEY_SYM_POUND] = KEY_3, | ||
91 | [KEY_SYM_FOUR] = KEY_4, [KEY_SYM_DOLLAR] = KEY_4, | ||
92 | [KEY_SYM_FIVE] = KEY_5, [KEY_SYM_PERCENT] = KEY_5, | ||
93 | [KEY_SYM_SIX] = KEY_6, [KEY_SYM_CARAT] = KEY_6, | ||
94 | [KEY_SYM_SEVEN] = KEY_7, [KEY_SYM_AMPER] = KEY_7, | ||
95 | [KEY_SYM_EIGHT] = KEY_8, [KEY_SYM_STAR] = KEY_8, | ||
96 | [KEY_SYM_NINE] = KEY_9, [KEY_SYM_LPAREN] = KEY_9, | ||
97 | [KEY_SYM_ZERO] = KEY_0, [KEY_SYM_RPAREN] = KEY_0, | ||
98 | [KEY_SYM_MINUS] = KEY_MINUS, [KEY_SYM_USCORE] = KEY_MINUS, | ||
99 | [KEY_SYM_EQUAL] = KEY_EQUAL, [KEY_SYM_PLUS] = KEY_EQUAL, | ||
100 | [KEY_SYM_LBRKT] = KEY_LEFTBRACE, [KEY_SYM_LCURLY] = KEY_LEFTBRACE, | ||
101 | [KEY_SYM_RBRKT] = KEY_RIGHTBRACE, [KEY_SYM_RCURLY] = KEY_RIGHTBRACE, | ||
102 | [KEY_SYM_SLASH] = KEY_BACKSLASH, [KEY_SYM_PIPE] = KEY_BACKSLASH, | ||
103 | [KEY_SYM_TIC] = KEY_APOSTROPHE, [KEY_SYM_QUOTE] = KEY_APOSTROPHE, | ||
104 | [KEY_SYM_SEMIC] = KEY_SEMICOLON, [KEY_SYM_COLON] = KEY_SEMICOLON, | ||
105 | [KEY_SYM_COMMA] = KEY_COMMA, [KEY_SYM_LT] = KEY_COMMA, | ||
106 | [KEY_SYM_PERIOD] = KEY_DOT, [KEY_SYM_GT] = KEY_DOT, | ||
107 | [KEY_SYM_BSLASH] = KEY_SLASH, [KEY_SYM_QMARK] = KEY_SLASH, | ||
108 | [KEY_SYM_A] = KEY_A, [KEY_SYM_a] = KEY_A, | ||
109 | [KEY_SYM_B] = KEY_B, [KEY_SYM_b] = KEY_B, | ||
110 | [KEY_SYM_C] = KEY_C, [KEY_SYM_c] = KEY_C, | ||
111 | [KEY_SYM_D] = KEY_D, [KEY_SYM_d] = KEY_D, | ||
112 | [KEY_SYM_E] = KEY_E, [KEY_SYM_e] = KEY_E, | ||
113 | [KEY_SYM_F] = KEY_F, [KEY_SYM_f] = KEY_F, | ||
114 | [KEY_SYM_G] = KEY_G, [KEY_SYM_g] = KEY_G, | ||
115 | [KEY_SYM_H] = KEY_H, [KEY_SYM_h] = KEY_H, | ||
116 | [KEY_SYM_I] = KEY_I, [KEY_SYM_i] = KEY_I, | ||
117 | [KEY_SYM_J] = KEY_J, [KEY_SYM_j] = KEY_J, | ||
118 | [KEY_SYM_K] = KEY_K, [KEY_SYM_k] = KEY_K, | ||
119 | [KEY_SYM_L] = KEY_L, [KEY_SYM_l] = KEY_L, | ||
120 | [KEY_SYM_M] = KEY_M, [KEY_SYM_m] = KEY_M, | ||
121 | [KEY_SYM_N] = KEY_N, [KEY_SYM_n] = KEY_N, | ||
122 | [KEY_SYM_O] = KEY_O, [KEY_SYM_o] = KEY_O, | ||
123 | [KEY_SYM_P] = KEY_P, [KEY_SYM_p] = KEY_P, | ||
124 | [KEY_SYM_Q] = KEY_Q, [KEY_SYM_q] = KEY_Q, | ||
125 | [KEY_SYM_R] = KEY_R, [KEY_SYM_r] = KEY_R, | ||
126 | [KEY_SYM_S] = KEY_S, [KEY_SYM_s] = KEY_S, | ||
127 | [KEY_SYM_T] = KEY_T, [KEY_SYM_t] = KEY_T, | ||
128 | [KEY_SYM_U] = KEY_U, [KEY_SYM_u] = KEY_U, | ||
129 | [KEY_SYM_V] = KEY_V, [KEY_SYM_v] = KEY_V, | ||
130 | [KEY_SYM_W] = KEY_W, [KEY_SYM_w] = KEY_W, | ||
131 | [KEY_SYM_X] = KEY_X, [KEY_SYM_x] = KEY_X, | ||
132 | [KEY_SYM_Y] = KEY_Y, [KEY_SYM_y] = KEY_Y, | ||
133 | [KEY_SYM_Z] = KEY_Z, [KEY_SYM_z] = KEY_Z, | ||
134 | }; | ||
42 | 135 | ||
43 | q->end = q->start + DRIVER_REMOTE_QUEUE_SIZE; | 136 | static char remote_mouse_name[] = "ibmasm RSA I remote mouse"; |
44 | q->reader = q->start; | 137 | static char remote_keybd_name[] = "ibmasm RSA I remote keyboard"; |
45 | q->writer = q->start; | ||
46 | q->size = DRIVER_REMOTE_QUEUE_SIZE; | ||
47 | init_waitqueue_head(&q->wait); | ||
48 | 138 | ||
49 | return 0; | 139 | static void print_input(struct remote_input *input) |
50 | } | ||
51 | |||
52 | void ibmasm_free_remote_queue(struct service_processor *sp) | ||
53 | { | 140 | { |
54 | kfree(sp->remote_queue.start); | 141 | if (input->type == INPUT_TYPE_MOUSE) { |
142 | unsigned char buttons = input->mouse_buttons; | ||
143 | dbg("remote mouse movement: (x,y)=(%d,%d)%s%s%s%s\n", | ||
144 | input->data.mouse.x, input->data.mouse.y, | ||
145 | (buttons)?" -- buttons:":"", | ||
146 | (buttons & REMOTE_BUTTON_LEFT)?"left ":"", | ||
147 | (buttons & REMOTE_BUTTON_MIDDLE)?"middle ":"", | ||
148 | (buttons & REMOTE_BUTTON_RIGHT)?"right":"" | ||
149 | ); | ||
150 | } else { | ||
151 | dbg("remote keypress (code, flag, down):" | ||
152 | "%d (0x%x) [0x%x] [0x%x]\n", | ||
153 | input->data.keyboard.key_code, | ||
154 | input->data.keyboard.key_code, | ||
155 | input->data.keyboard.key_flag, | ||
156 | input->data.keyboard.key_down | ||
157 | ); | ||
158 | } | ||
55 | } | 159 | } |
56 | 160 | ||
57 | void ibmasm_advance_reader(struct remote_queue *q, unsigned int n) | 161 | static void send_mouse_event(struct input_dev *dev, struct pt_regs *regs, |
162 | struct remote_input *input) | ||
58 | { | 163 | { |
59 | q->reader += n; | 164 | unsigned char buttons = input->mouse_buttons; |
60 | if (q->reader >= q->end) | ||
61 | q->reader -= q->size; | ||
62 | } | ||
63 | 165 | ||
64 | size_t ibmasm_events_available(struct remote_queue *q) | 166 | input_regs(dev, regs); |
65 | { | 167 | input_report_abs(dev, ABS_X, input->data.mouse.x); |
66 | ssize_t diff = q->writer - q->reader; | 168 | input_report_abs(dev, ABS_Y, input->data.mouse.y); |
67 | 169 | input_report_key(dev, BTN_LEFT, buttons & REMOTE_BUTTON_LEFT); | |
68 | return (diff >= 0) ? diff : q->end - q->reader; | 170 | input_report_key(dev, BTN_MIDDLE, buttons & REMOTE_BUTTON_MIDDLE); |
171 | input_report_key(dev, BTN_RIGHT, buttons & REMOTE_BUTTON_RIGHT); | ||
172 | input_sync(dev); | ||
69 | } | 173 | } |
70 | |||
71 | 174 | ||
72 | static int space_free(struct remote_queue *q) | 175 | static void send_keyboard_event(struct input_dev *dev, struct pt_regs *regs, |
176 | struct remote_input *input) | ||
73 | { | 177 | { |
74 | if (q->reader == q->writer) | 178 | unsigned int key; |
75 | return q->size - 1; | 179 | unsigned short code = input->data.keyboard.key_code; |
76 | 180 | ||
77 | return ( (q->reader + q->size - q->writer) % q->size ) - 1; | 181 | if (code & 0xff00) |
182 | key = xlate_high[code & 0xff]; | ||
183 | else | ||
184 | key = xlate[code]; | ||
185 | input_regs(dev, regs); | ||
186 | input_report_key(dev, key, (input->data.keyboard.key_down) ? 1 : 0); | ||
187 | input_sync(dev); | ||
78 | } | 188 | } |
79 | 189 | ||
80 | static void set_mouse_event(struct remote_input *input, struct mouse_event *mouse) | 190 | void ibmasm_handle_mouse_interrupt(struct service_processor *sp, |
191 | struct pt_regs *regs) | ||
81 | { | 192 | { |
82 | static char last_buttons = 0; | 193 | unsigned long reader; |
194 | unsigned long writer; | ||
195 | struct remote_input input; | ||
83 | 196 | ||
84 | mouse->x = input->data.mouse.x; | 197 | reader = get_queue_reader(sp); |
85 | mouse->y = input->data.mouse.y; | 198 | writer = get_queue_writer(sp); |
86 | 199 | ||
87 | if (input->mouse_buttons == REMOTE_MOUSE_DOUBLE_CLICK) { | 200 | while (reader != writer) { |
88 | mouse->buttons = REMOTE_MOUSE_DOUBLE_CLICK; | 201 | memcpy_fromio(&input, get_queue_entry(sp, reader), |
89 | last_buttons = 0; | 202 | sizeof(struct remote_input)); |
90 | return; | ||
91 | } | ||
92 | mouse->transitions = last_buttons ^ input->mouse_buttons; | ||
93 | mouse->buttons = input->mouse_buttons; | ||
94 | 203 | ||
95 | last_buttons = input->mouse_buttons; | 204 | print_input(&input); |
96 | } | 205 | if (input.type == INPUT_TYPE_MOUSE) { |
206 | send_mouse_event(&sp->remote->mouse_dev, regs, &input); | ||
207 | } else if (input.type == INPUT_TYPE_KEYBOARD) { | ||
208 | send_keyboard_event(&sp->remote->keybd_dev, regs, &input); | ||
209 | } else | ||
210 | break; | ||
97 | 211 | ||
98 | static void set_keyboard_event(struct remote_input *input, struct keyboard_event *keyboard) | 212 | reader = advance_queue_reader(sp, reader); |
99 | { | 213 | writer = get_queue_writer(sp); |
100 | keyboard->key_code = input->data.keyboard.key_code; | 214 | } |
101 | keyboard->key_down = input->data.keyboard.key_down; | ||
102 | } | 215 | } |
103 | 216 | ||
104 | static int add_to_driver_queue(struct remote_queue *q, struct remote_input *input) | 217 | int ibmasm_init_remote_input_dev(struct service_processor *sp) |
105 | { | 218 | { |
106 | struct remote_event *event = q->writer; | 219 | /* set up the mouse input device */ |
220 | struct ibmasm_remote *remote; | ||
221 | struct pci_dev *pdev = to_pci_dev(sp->dev); | ||
222 | int i; | ||
107 | 223 | ||
108 | if (space_free(q) < 1) { | 224 | sp->remote = remote = kmalloc(sizeof(*remote), GFP_KERNEL); |
109 | return 1; | 225 | if (!remote) |
110 | } | 226 | return -ENOMEM; |
111 | 227 | ||
112 | switch(input->type) { | 228 | memset(remote, 0, sizeof(*remote)); |
113 | case (INPUT_TYPE_MOUSE): | ||
114 | event->type = INPUT_TYPE_MOUSE; | ||
115 | set_mouse_event(input, &event->data.mouse); | ||
116 | break; | ||
117 | case (INPUT_TYPE_KEYBOARD): | ||
118 | event->type = INPUT_TYPE_KEYBOARD; | ||
119 | set_keyboard_event(input, &event->data.keyboard); | ||
120 | break; | ||
121 | default: | ||
122 | return 0; | ||
123 | } | ||
124 | event->type = input->type; | ||
125 | 229 | ||
126 | q->writer++; | 230 | remote->mouse_dev.private = remote; |
127 | if (q->writer == q->end) | 231 | init_input_dev(&remote->mouse_dev); |
128 | q->writer = q->start; | 232 | remote->mouse_dev.id.vendor = pdev->vendor; |
233 | remote->mouse_dev.id.product = pdev->device; | ||
234 | remote->mouse_dev.evbit[0] = BIT(EV_KEY) | BIT(EV_ABS); | ||
235 | remote->mouse_dev.keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | | ||
236 | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE); | ||
237 | set_bit(BTN_TOUCH, remote->mouse_dev.keybit); | ||
238 | remote->mouse_dev.name = remote_mouse_name; | ||
239 | input_set_abs_params(&remote->mouse_dev, ABS_X, 0, xmax, 0, 0); | ||
240 | input_set_abs_params(&remote->mouse_dev, ABS_Y, 0, ymax, 0, 0); | ||
129 | 241 | ||
130 | return 0; | 242 | remote->keybd_dev.private = remote; |
131 | } | 243 | init_input_dev(&remote->keybd_dev); |
132 | 244 | remote->keybd_dev.id.vendor = pdev->vendor; | |
245 | remote->keybd_dev.id.product = pdev->device; | ||
246 | remote->keybd_dev.evbit[0] = BIT(EV_KEY); | ||
247 | remote->keybd_dev.name = remote_keybd_name; | ||
133 | 248 | ||
134 | void ibmasm_handle_mouse_interrupt(struct service_processor *sp) | 249 | for (i=0; i<XLATE_SIZE; i++) { |
135 | { | 250 | if (xlate_high[i]) |
136 | unsigned long reader; | 251 | set_bit(xlate_high[i], remote->keybd_dev.keybit); |
137 | unsigned long writer; | 252 | if (xlate[i]) |
138 | struct remote_input input; | 253 | set_bit(xlate[i], remote->keybd_dev.keybit); |
254 | } | ||
139 | 255 | ||
140 | reader = get_queue_reader(sp); | 256 | input_register_device(&remote->mouse_dev); |
141 | writer = get_queue_writer(sp); | 257 | input_register_device(&remote->keybd_dev); |
258 | enable_mouse_interrupts(sp); | ||
142 | 259 | ||
143 | while (reader != writer) { | 260 | printk(KERN_INFO "ibmasm remote responding to events on RSA card %d\n", sp->number); |
144 | memcpy(&input, (void *)get_queue_entry(sp, reader), sizeof(struct remote_input)); | ||
145 | 261 | ||
146 | if (add_to_driver_queue(&sp->remote_queue, &input)) | 262 | return 0; |
147 | break; | 263 | } |
148 | 264 | ||
149 | reader = advance_queue_reader(sp, reader); | 265 | void ibmasm_free_remote_input_dev(struct service_processor *sp) |
150 | } | 266 | { |
151 | wake_up_interruptible(&sp->remote_queue.wait); | 267 | disable_mouse_interrupts(sp); |
268 | input_unregister_device(&sp->remote->keybd_dev); | ||
269 | input_unregister_device(&sp->remote->mouse_dev); | ||
270 | kfree(sp->remote); | ||
152 | } | 271 | } |
272 | |||
diff --git a/drivers/misc/ibmasm/remote.h b/drivers/misc/ibmasm/remote.h index a8eb19f02d3f..b7076a8442d2 100644 --- a/drivers/misc/ibmasm/remote.h +++ b/drivers/misc/ibmasm/remote.h | |||
@@ -51,11 +51,13 @@ | |||
51 | 51 | ||
52 | 52 | ||
53 | /* mouse button states received from SP */ | 53 | /* mouse button states received from SP */ |
54 | #define REMOTE_MOUSE_DOUBLE_CLICK 0xF0 | 54 | #define REMOTE_DOUBLE_CLICK 0xF0 |
55 | #define REMOTE_MOUSE_BUTTON_LEFT 0x01 | 55 | #define REMOTE_BUTTON_LEFT 0x01 |
56 | #define REMOTE_MOUSE_BUTTON_MIDDLE 0x02 | 56 | #define REMOTE_BUTTON_MIDDLE 0x02 |
57 | #define REMOTE_MOUSE_BUTTON_RIGHT 0x04 | 57 | #define REMOTE_BUTTON_RIGHT 0x04 |
58 | 58 | ||
59 | /* size of keysym/keycode translation matricies */ | ||
60 | #define XLATE_SIZE 256 | ||
59 | 61 | ||
60 | struct mouse_input { | 62 | struct mouse_input { |
61 | unsigned short y; | 63 | unsigned short y; |
@@ -83,11 +85,13 @@ struct remote_input { | |||
83 | unsigned char pad3; | 85 | unsigned char pad3; |
84 | }; | 86 | }; |
85 | 87 | ||
86 | #define mouse_addr(sp) sp->base_address + CONDOR_MOUSE_DATA | 88 | #define mouse_addr(sp) (sp->base_address + CONDOR_MOUSE_DATA) |
87 | #define display_width(sp) mouse_addr(sp) + CONDOR_INPUT_DISPLAY_RESX | 89 | #define display_width(sp) (mouse_addr(sp) + CONDOR_INPUT_DISPLAY_RESX) |
88 | #define display_height(sp) mouse_addr(sp) + CONDOR_INPUT_DISPLAY_RESY | 90 | #define display_height(sp) (mouse_addr(sp) + CONDOR_INPUT_DISPLAY_RESY) |
89 | #define display_depth(sp) mouse_addr(sp) + CONDOR_INPUT_DISPLAY_BITS | 91 | #define display_depth(sp) (mouse_addr(sp) + CONDOR_INPUT_DISPLAY_BITS) |
90 | #define vnc_status(sp) mouse_addr(sp) + CONDOR_OUTPUT_VNC_STATUS | 92 | #define desktop_info(sp) (mouse_addr(sp) + CONDOR_INPUT_DESKTOP_INFO) |
93 | #define vnc_status(sp) (mouse_addr(sp) + CONDOR_OUTPUT_VNC_STATUS) | ||
94 | #define isr_control(sp) (mouse_addr(sp) + CONDOR_MOUSE_ISR_CONTROL) | ||
91 | 95 | ||
92 | #define mouse_interrupt_pending(sp) readl(mouse_addr(sp) + CONDOR_MOUSE_ISR_STATUS) | 96 | #define mouse_interrupt_pending(sp) readl(mouse_addr(sp) + CONDOR_MOUSE_ISR_STATUS) |
93 | #define clear_mouse_interrupt(sp) writel(0, mouse_addr(sp) + CONDOR_MOUSE_ISR_STATUS) | 97 | #define clear_mouse_interrupt(sp) writel(0, mouse_addr(sp) + CONDOR_MOUSE_ISR_STATUS) |
@@ -101,10 +105,10 @@ struct remote_input { | |||
101 | #define get_queue_reader(sp) readl(mouse_addr(sp) + CONDOR_MOUSE_Q_READER) | 105 | #define get_queue_reader(sp) readl(mouse_addr(sp) + CONDOR_MOUSE_Q_READER) |
102 | #define set_queue_reader(sp, reader) writel(reader, mouse_addr(sp) + CONDOR_MOUSE_Q_READER) | 106 | #define set_queue_reader(sp, reader) writel(reader, mouse_addr(sp) + CONDOR_MOUSE_Q_READER) |
103 | 107 | ||
104 | #define queue_begin mouse_addr(sp) + CONDOR_MOUSE_Q_BEGIN | 108 | #define queue_begin (mouse_addr(sp) + CONDOR_MOUSE_Q_BEGIN) |
105 | 109 | ||
106 | #define get_queue_entry(sp, read_index) \ | 110 | #define get_queue_entry(sp, read_index) \ |
107 | queue_begin + read_index * sizeof(struct remote_input) | 111 | ((void*)(queue_begin + read_index * sizeof(struct remote_input))) |
108 | 112 | ||
109 | static inline int advance_queue_reader(struct service_processor *sp, unsigned long reader) | 113 | static inline int advance_queue_reader(struct service_processor *sp, unsigned long reader) |
110 | { | 114 | { |
@@ -116,4 +120,151 @@ static inline int advance_queue_reader(struct service_processor *sp, unsigned lo | |||
116 | return reader; | 120 | return reader; |
117 | } | 121 | } |
118 | 122 | ||
123 | #define NO_KEYCODE 0 | ||
124 | #define KEY_SYM_BK_SPC 0xFF08 | ||
125 | #define KEY_SYM_TAB 0xFF09 | ||
126 | #define KEY_SYM_ENTER 0xFF0D | ||
127 | #define KEY_SYM_SCR_LOCK 0xFF14 | ||
128 | #define KEY_SYM_ESCAPE 0xFF1B | ||
129 | #define KEY_SYM_HOME 0xFF50 | ||
130 | #define KEY_SYM_LARROW 0xFF51 | ||
131 | #define KEY_SYM_UARROW 0xFF52 | ||
132 | #define KEY_SYM_RARROW 0xFF53 | ||
133 | #define KEY_SYM_DARROW 0xFF54 | ||
134 | #define KEY_SYM_PAGEUP 0xFF55 | ||
135 | #define KEY_SYM_PAGEDOWN 0xFF56 | ||
136 | #define KEY_SYM_END 0xFF57 | ||
137 | #define KEY_SYM_INSERT 0xFF63 | ||
138 | #define KEY_SYM_NUM_LOCK 0xFF7F | ||
139 | #define KEY_SYM_KPSTAR 0xFFAA | ||
140 | #define KEY_SYM_KPPLUS 0xFFAB | ||
141 | #define KEY_SYM_KPMINUS 0xFFAD | ||
142 | #define KEY_SYM_KPDOT 0xFFAE | ||
143 | #define KEY_SYM_KPSLASH 0xFFAF | ||
144 | #define KEY_SYM_KPRIGHT 0xFF96 | ||
145 | #define KEY_SYM_KPUP 0xFF97 | ||
146 | #define KEY_SYM_KPLEFT 0xFF98 | ||
147 | #define KEY_SYM_KPDOWN 0xFF99 | ||
148 | #define KEY_SYM_KP0 0xFFB0 | ||
149 | #define KEY_SYM_KP1 0xFFB1 | ||
150 | #define KEY_SYM_KP2 0xFFB2 | ||
151 | #define KEY_SYM_KP3 0xFFB3 | ||
152 | #define KEY_SYM_KP4 0xFFB4 | ||
153 | #define KEY_SYM_KP5 0xFFB5 | ||
154 | #define KEY_SYM_KP6 0xFFB6 | ||
155 | #define KEY_SYM_KP7 0xFFB7 | ||
156 | #define KEY_SYM_KP8 0xFFB8 | ||
157 | #define KEY_SYM_KP9 0xFFB9 | ||
158 | #define KEY_SYM_F1 0xFFBE // 1B 5B 5B 41 | ||
159 | #define KEY_SYM_F2 0xFFBF // 1B 5B 5B 42 | ||
160 | #define KEY_SYM_F3 0xFFC0 // 1B 5B 5B 43 | ||
161 | #define KEY_SYM_F4 0xFFC1 // 1B 5B 5B 44 | ||
162 | #define KEY_SYM_F5 0xFFC2 // 1B 5B 5B 45 | ||
163 | #define KEY_SYM_F6 0xFFC3 // 1B 5B 31 37 7E | ||
164 | #define KEY_SYM_F7 0xFFC4 // 1B 5B 31 38 7E | ||
165 | #define KEY_SYM_F8 0xFFC5 // 1B 5B 31 39 7E | ||
166 | #define KEY_SYM_F9 0xFFC6 // 1B 5B 32 30 7E | ||
167 | #define KEY_SYM_F10 0xFFC7 // 1B 5B 32 31 7E | ||
168 | #define KEY_SYM_F11 0xFFC8 // 1B 5B 32 33 7E | ||
169 | #define KEY_SYM_F12 0xFFC9 // 1B 5B 32 34 7E | ||
170 | #define KEY_SYM_SHIFT 0xFFE1 | ||
171 | #define KEY_SYM_CTRL 0xFFE3 | ||
172 | #define KEY_SYM_ALT 0xFFE9 | ||
173 | #define KEY_SYM_CAP_LOCK 0xFFE5 | ||
174 | #define KEY_SYM_DELETE 0xFFFF | ||
175 | #define KEY_SYM_TILDE 0x60 | ||
176 | #define KEY_SYM_BKTIC 0x7E | ||
177 | #define KEY_SYM_ONE 0x31 | ||
178 | #define KEY_SYM_BANG 0x21 | ||
179 | #define KEY_SYM_TWO 0x32 | ||
180 | #define KEY_SYM_AT 0x40 | ||
181 | #define KEY_SYM_THREE 0x33 | ||
182 | #define KEY_SYM_POUND 0x23 | ||
183 | #define KEY_SYM_FOUR 0x34 | ||
184 | #define KEY_SYM_DOLLAR 0x24 | ||
185 | #define KEY_SYM_FIVE 0x35 | ||
186 | #define KEY_SYM_PERCENT 0x25 | ||
187 | #define KEY_SYM_SIX 0x36 | ||
188 | #define KEY_SYM_CARAT 0x5E | ||
189 | #define KEY_SYM_SEVEN 0x37 | ||
190 | #define KEY_SYM_AMPER 0x26 | ||
191 | #define KEY_SYM_EIGHT 0x38 | ||
192 | #define KEY_SYM_STAR 0x2A | ||
193 | #define KEY_SYM_NINE 0x39 | ||
194 | #define KEY_SYM_LPAREN 0x28 | ||
195 | #define KEY_SYM_ZERO 0x30 | ||
196 | #define KEY_SYM_RPAREN 0x29 | ||
197 | #define KEY_SYM_MINUS 0x2D | ||
198 | #define KEY_SYM_USCORE 0x5F | ||
199 | #define KEY_SYM_EQUAL 0x2B | ||
200 | #define KEY_SYM_PLUS 0x3D | ||
201 | #define KEY_SYM_LBRKT 0x5B | ||
202 | #define KEY_SYM_LCURLY 0x7B | ||
203 | #define KEY_SYM_RBRKT 0x5D | ||
204 | #define KEY_SYM_RCURLY 0x7D | ||
205 | #define KEY_SYM_SLASH 0x5C | ||
206 | #define KEY_SYM_PIPE 0x7C | ||
207 | #define KEY_SYM_TIC 0x27 | ||
208 | #define KEY_SYM_QUOTE 0x22 | ||
209 | #define KEY_SYM_SEMIC 0x3B | ||
210 | #define KEY_SYM_COLON 0x3A | ||
211 | #define KEY_SYM_COMMA 0x2C | ||
212 | #define KEY_SYM_LT 0x3C | ||
213 | #define KEY_SYM_PERIOD 0x2E | ||
214 | #define KEY_SYM_GT 0x3E | ||
215 | #define KEY_SYM_BSLASH 0x2F | ||
216 | #define KEY_SYM_QMARK 0x3F | ||
217 | #define KEY_SYM_A 0x41 | ||
218 | #define KEY_SYM_B 0x42 | ||
219 | #define KEY_SYM_C 0x43 | ||
220 | #define KEY_SYM_D 0x44 | ||
221 | #define KEY_SYM_E 0x45 | ||
222 | #define KEY_SYM_F 0x46 | ||
223 | #define KEY_SYM_G 0x47 | ||
224 | #define KEY_SYM_H 0x48 | ||
225 | #define KEY_SYM_I 0x49 | ||
226 | #define KEY_SYM_J 0x4A | ||
227 | #define KEY_SYM_K 0x4B | ||
228 | #define KEY_SYM_L 0x4C | ||
229 | #define KEY_SYM_M 0x4D | ||
230 | #define KEY_SYM_N 0x4E | ||
231 | #define KEY_SYM_O 0x4F | ||
232 | #define KEY_SYM_P 0x50 | ||
233 | #define KEY_SYM_Q 0x51 | ||
234 | #define KEY_SYM_R 0x52 | ||
235 | #define KEY_SYM_S 0x53 | ||
236 | #define KEY_SYM_T 0x54 | ||
237 | #define KEY_SYM_U 0x55 | ||
238 | #define KEY_SYM_V 0x56 | ||
239 | #define KEY_SYM_W 0x57 | ||
240 | #define KEY_SYM_X 0x58 | ||
241 | #define KEY_SYM_Y 0x59 | ||
242 | #define KEY_SYM_Z 0x5A | ||
243 | #define KEY_SYM_a 0x61 | ||
244 | #define KEY_SYM_b 0x62 | ||
245 | #define KEY_SYM_c 0x63 | ||
246 | #define KEY_SYM_d 0x64 | ||
247 | #define KEY_SYM_e 0x65 | ||
248 | #define KEY_SYM_f 0x66 | ||
249 | #define KEY_SYM_g 0x67 | ||
250 | #define KEY_SYM_h 0x68 | ||
251 | #define KEY_SYM_i 0x69 | ||
252 | #define KEY_SYM_j 0x6A | ||
253 | #define KEY_SYM_k 0x6B | ||
254 | #define KEY_SYM_l 0x6C | ||
255 | #define KEY_SYM_m 0x6D | ||
256 | #define KEY_SYM_n 0x6E | ||
257 | #define KEY_SYM_o 0x6F | ||
258 | #define KEY_SYM_p 0x70 | ||
259 | #define KEY_SYM_q 0x71 | ||
260 | #define KEY_SYM_r 0x72 | ||
261 | #define KEY_SYM_s 0x73 | ||
262 | #define KEY_SYM_t 0x74 | ||
263 | #define KEY_SYM_u 0x75 | ||
264 | #define KEY_SYM_v 0x76 | ||
265 | #define KEY_SYM_w 0x77 | ||
266 | #define KEY_SYM_x 0x78 | ||
267 | #define KEY_SYM_y 0x79 | ||
268 | #define KEY_SYM_z 0x7A | ||
269 | #define KEY_SYM_SPACE 0x20 | ||
119 | #endif /* _IBMASM_REMOTE_H_ */ | 270 | #endif /* _IBMASM_REMOTE_H_ */ |
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index b5e076043431..80ec9aa575bb 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
@@ -2202,9 +2202,8 @@ boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
2202 | 2202 | ||
2203 | if (vortex_debug > 6) { | 2203 | if (vortex_debug > 6) { |
2204 | printk(KERN_DEBUG "boomerang_start_xmit()\n"); | 2204 | printk(KERN_DEBUG "boomerang_start_xmit()\n"); |
2205 | if (vortex_debug > 3) | 2205 | printk(KERN_DEBUG "%s: Trying to send a packet, Tx index %d.\n", |
2206 | printk(KERN_DEBUG "%s: Trying to send a packet, Tx index %d.\n", | 2206 | dev->name, vp->cur_tx); |
2207 | dev->name, vp->cur_tx); | ||
2208 | } | 2207 | } |
2209 | 2208 | ||
2210 | if (vp->cur_tx - vp->dirty_tx >= TX_RING_SIZE) { | 2209 | if (vp->cur_tx - vp->dirty_tx >= TX_RING_SIZE) { |
diff --git a/drivers/net/8390.c b/drivers/net/8390.c index bab16bcc9ae5..6d76f3a99b17 100644 --- a/drivers/net/8390.c +++ b/drivers/net/8390.c | |||
@@ -225,9 +225,9 @@ void ei_tx_timeout(struct net_device *dev) | |||
225 | unsigned long icucr; | 225 | unsigned long icucr; |
226 | 226 | ||
227 | local_irq_save(flags); | 227 | local_irq_save(flags); |
228 | icucr = inl(ICUCR1); | 228 | icucr = inl(M32R_ICU_CR1_PORTL); |
229 | icucr |= M32R_ICUCR_ISMOD11; | 229 | icucr |= M32R_ICUCR_ISMOD11; |
230 | outl(icucr, ICUCR1); | 230 | outl(icucr, M32R_ICU_CR1_PORTL); |
231 | local_irq_restore(flags); | 231 | local_irq_restore(flags); |
232 | #endif | 232 | #endif |
233 | ei_local->stat.tx_errors++; | 233 | ei_local->stat.tx_errors++; |
diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c index 55720dc6ec43..745a14183634 100644 --- a/drivers/oprofile/buffer_sync.c +++ b/drivers/oprofile/buffer_sync.c | |||
@@ -62,7 +62,7 @@ static int task_exit_notify(struct notifier_block * self, unsigned long val, voi | |||
62 | /* To avoid latency problems, we only process the current CPU, | 62 | /* To avoid latency problems, we only process the current CPU, |
63 | * hoping that most samples for the task are on this CPU | 63 | * hoping that most samples for the task are on this CPU |
64 | */ | 64 | */ |
65 | sync_buffer(_smp_processor_id()); | 65 | sync_buffer(raw_smp_processor_id()); |
66 | return 0; | 66 | return 0; |
67 | } | 67 | } |
68 | 68 | ||
@@ -86,7 +86,7 @@ static int munmap_notify(struct notifier_block * self, unsigned long val, void * | |||
86 | /* To avoid latency problems, we only process the current CPU, | 86 | /* To avoid latency problems, we only process the current CPU, |
87 | * hoping that most samples for the task are on this CPU | 87 | * hoping that most samples for the task are on this CPU |
88 | */ | 88 | */ |
89 | sync_buffer(_smp_processor_id()); | 89 | sync_buffer(raw_smp_processor_id()); |
90 | return 0; | 90 | return 0; |
91 | } | 91 | } |
92 | 92 | ||
diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig index 6375ebc85020..14e4124e1523 100644 --- a/drivers/pcmcia/Kconfig +++ b/drivers/pcmcia/Kconfig | |||
@@ -171,19 +171,21 @@ config PCMCIA_PROBE | |||
171 | config M32R_PCC | 171 | config M32R_PCC |
172 | bool "M32R PCMCIA I/F" | 172 | bool "M32R PCMCIA I/F" |
173 | depends on M32R && CHIP_M32700 && PCMCIA | 173 | depends on M32R && CHIP_M32700 && PCMCIA |
174 | select PCCARD_NONSTATIC | ||
174 | help | 175 | help |
175 | Say Y here to use the M32R PCMCIA controller. | 176 | Say Y here to use the M32R PCMCIA controller. |
176 | 177 | ||
177 | config M32R_CFC | 178 | config M32R_CFC |
178 | bool "M32R CF I/F Controller" | 179 | bool "M32R CF I/F Controller" |
179 | depends on M32R && (PLAT_USRV || PLAT_M32700UT || PLAT_MAPPI2 || PLAT_OPSPUT) | 180 | depends on M32R && (PLAT_USRV || PLAT_M32700UT || PLAT_MAPPI2 || PLAT_MAPPI3 || PLAT_OPSPUT) |
181 | select PCCARD_NONSTATIC | ||
180 | help | 182 | help |
181 | Say Y here to use the M32R CompactFlash controller. | 183 | Say Y here to use the M32R CompactFlash controller. |
182 | 184 | ||
183 | config M32R_CFC_NUM | 185 | config M32R_CFC_NUM |
184 | int "M32R CF I/F number" | 186 | int "M32R CF I/F number" |
185 | depends on M32R_CFC | 187 | depends on M32R_CFC |
186 | default "1" if PLAT_USRV || PLAT_M32700UT || PLAT_MAPPI2 || PLAT_OPSPUT | 188 | default "1" if PLAT_USRV || PLAT_M32700UT || PLAT_MAPPI2 || PLAT_MAPPI3 || PLAT_OPSPUT |
187 | help | 189 | help |
188 | Set the number of M32R CF slots. | 190 | Set the number of M32R CF slots. |
189 | 191 | ||
diff --git a/drivers/pcmcia/m32r_cfc.c b/drivers/pcmcia/m32r_cfc.c index 581bfa95429e..b1111c6bf062 100644 --- a/drivers/pcmcia/m32r_cfc.c +++ b/drivers/pcmcia/m32r_cfc.c | |||
@@ -24,9 +24,9 @@ | |||
24 | #include <linux/workqueue.h> | 24 | #include <linux/workqueue.h> |
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/device.h> | 26 | #include <linux/device.h> |
27 | #include <linux/bitops.h> | ||
27 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
28 | #include <asm/io.h> | 29 | #include <asm/io.h> |
29 | #include <asm/bitops.h> | ||
30 | #include <asm/system.h> | 30 | #include <asm/system.h> |
31 | 31 | ||
32 | #include <pcmcia/version.h> | 32 | #include <pcmcia/version.h> |
@@ -444,7 +444,7 @@ static int _pcc_get_status(u_short sock, u_int *value) | |||
444 | debug(3, "m32r_cfc: _pcc_get_status: " | 444 | debug(3, "m32r_cfc: _pcc_get_status: " |
445 | "power off (CPCR=0x%08x)\n", status); | 445 | "power off (CPCR=0x%08x)\n", status); |
446 | } | 446 | } |
447 | #elif defined(CONFIG_PLAT_MAPPI2) | 447 | #elif defined(CONFIG_PLAT_MAPPI2) || defined(CONFIG_PLAT_MAPPI3) |
448 | if ( status ) { | 448 | if ( status ) { |
449 | status = pcc_get(sock, (unsigned int)PLD_CPCR); | 449 | status = pcc_get(sock, (unsigned int)PLD_CPCR); |
450 | if (status == 0) { /* power off */ | 450 | if (status == 0) { /* power off */ |
@@ -452,18 +452,23 @@ static int _pcc_get_status(u_short sock, u_int *value) | |||
452 | pcc_set(sock, (unsigned int)PLD_CFBUFCR,0); /* force buffer off for ZA-36 */ | 452 | pcc_set(sock, (unsigned int)PLD_CFBUFCR,0); /* force buffer off for ZA-36 */ |
453 | udelay(50); | 453 | udelay(50); |
454 | } | 454 | } |
455 | status = pcc_get(sock, (unsigned int)PLD_CFBUFCR); | 455 | *value |= SS_POWERON; |
456 | if (status != 0) { /* buffer off */ | 456 | |
457 | pcc_set(sock, (unsigned int)PLD_CFBUFCR,0); | 457 | pcc_set(sock, (unsigned int)PLD_CFBUFCR,0); |
458 | udelay(50); | 458 | udelay(50); |
459 | pcc_set(sock, (unsigned int)PLD_CFRSTCR, 0x0101); | 459 | pcc_set(sock, (unsigned int)PLD_CFRSTCR, 0x0101); |
460 | udelay(25); /* for IDE reset */ | 460 | udelay(25); /* for IDE reset */ |
461 | pcc_set(sock, (unsigned int)PLD_CFRSTCR, 0x0100); | 461 | pcc_set(sock, (unsigned int)PLD_CFRSTCR, 0x0100); |
462 | mdelay(2); /* for IDE reset */ | 462 | mdelay(2); /* for IDE reset */ |
463 | } else { | 463 | |
464 | *value |= SS_POWERON; | 464 | *value |= SS_READY; |
465 | *value |= SS_READY; | 465 | *value |= SS_3VCARD; |
466 | } | 466 | } else { |
467 | /* disable CF power */ | ||
468 | pcc_set(sock, (unsigned int)PLD_CPCR, 0); | ||
469 | udelay(100); | ||
470 | debug(3, "m32r_cfc: _pcc_get_status: " | ||
471 | "power off (CPCR=0x%08x)\n", status); | ||
467 | } | 472 | } |
468 | #else | 473 | #else |
469 | #error no platform configuration | 474 | #error no platform configuration |
@@ -479,14 +484,13 @@ static int _pcc_get_socket(u_short sock, socket_state_t *state) | |||
479 | { | 484 | { |
480 | // pcc_socket_t *t = &socket[sock]; | 485 | // pcc_socket_t *t = &socket[sock]; |
481 | 486 | ||
482 | #if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_USRV) || defined(CONFIG_PLAT_OPSPUT) | ||
483 | state->flags = 0; | 487 | state->flags = 0; |
484 | state->csc_mask = SS_DETECT; | 488 | state->csc_mask = SS_DETECT; |
485 | state->csc_mask |= SS_READY; | 489 | state->csc_mask |= SS_READY; |
486 | state->io_irq = 0; | 490 | state->io_irq = 0; |
487 | state->Vcc = 33; /* 3.3V fixed */ | 491 | state->Vcc = 33; /* 3.3V fixed */ |
488 | state->Vpp = 33; | 492 | state->Vpp = 33; |
489 | #endif | 493 | |
490 | debug(3, "m32r_cfc: GetSocket(%d) = flags %#3.3x, Vcc %d, Vpp %d, " | 494 | debug(3, "m32r_cfc: GetSocket(%d) = flags %#3.3x, Vcc %d, Vpp %d, " |
491 | "io_irq %d, csc_mask %#2.2x\n", sock, state->flags, | 495 | "io_irq %d, csc_mask %#2.2x\n", sock, state->flags, |
492 | state->Vcc, state->Vpp, state->io_irq, state->csc_mask); | 496 | state->Vcc, state->Vpp, state->io_irq, state->csc_mask); |
@@ -497,32 +501,17 @@ static int _pcc_get_socket(u_short sock, socket_state_t *state) | |||
497 | 501 | ||
498 | static int _pcc_set_socket(u_short sock, socket_state_t *state) | 502 | static int _pcc_set_socket(u_short sock, socket_state_t *state) |
499 | { | 503 | { |
500 | #if defined(CONFIG_PLAT_MAPPI2) | ||
501 | u_long reg = 0; | ||
502 | #endif | ||
503 | debug(3, "m32r_cfc: SetSocket(%d, flags %#3.3x, Vcc %d, Vpp %d, " | 504 | debug(3, "m32r_cfc: SetSocket(%d, flags %#3.3x, Vcc %d, Vpp %d, " |
504 | "io_irq %d, csc_mask %#2.2x)\n", sock, state->flags, | 505 | "io_irq %d, csc_mask %#2.2x)\n", sock, state->flags, |
505 | state->Vcc, state->Vpp, state->io_irq, state->csc_mask); | 506 | state->Vcc, state->Vpp, state->io_irq, state->csc_mask); |
506 | 507 | ||
507 | #if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_USRV) || defined(CONFIG_PLAT_OPSPUT) | 508 | #if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_USRV) || defined(CONFIG_PLAT_OPSPUT) || defined(CONFIG_PLAT_MAPPI2) || defined(CONFIG_PLAT_MAPPI3) |
508 | if (state->Vcc) { | 509 | if (state->Vcc) { |
509 | if ((state->Vcc != 50) && (state->Vcc != 33)) | 510 | if ((state->Vcc != 50) && (state->Vcc != 33)) |
510 | return -EINVAL; | 511 | return -EINVAL; |
511 | /* accept 5V and 3.3V */ | 512 | /* accept 5V and 3.3V */ |
512 | } | 513 | } |
513 | #elif defined(CONFIG_PLAT_MAPPI2) | ||
514 | if (state->Vcc) { | ||
515 | /* | ||
516 | * 5V only | ||
517 | */ | ||
518 | if (state->Vcc == 50) { | ||
519 | reg |= PCCSIGCR_VEN; | ||
520 | } else { | ||
521 | return -EINVAL; | ||
522 | } | ||
523 | } | ||
524 | #endif | 514 | #endif |
525 | |||
526 | if (state->flags & SS_RESET) { | 515 | if (state->flags & SS_RESET) { |
527 | debug(3, ":RESET\n"); | 516 | debug(3, ":RESET\n"); |
528 | pcc_set(sock,(unsigned int)PLD_CFRSTCR,0x101); | 517 | pcc_set(sock,(unsigned int)PLD_CFRSTCR,0x101); |
@@ -788,7 +777,7 @@ static int __init init_m32r_pcc(void) | |||
788 | return ret; | 777 | return ret; |
789 | } | 778 | } |
790 | 779 | ||
791 | #if defined(CONFIG_PLAT_MAPPI2) | 780 | #if defined(CONFIG_PLAT_MAPPI2) || defined(CONFIG_PLAT_MAPPI3) |
792 | pcc_set(0, (unsigned int)PLD_CFCR0, 0x0f0f); | 781 | pcc_set(0, (unsigned int)PLD_CFCR0, 0x0f0f); |
793 | pcc_set(0, (unsigned int)PLD_CFCR1, 0x0200); | 782 | pcc_set(0, (unsigned int)PLD_CFCR1, 0x0200); |
794 | #endif | 783 | #endif |
@@ -825,7 +814,7 @@ static int __init init_m32r_pcc(void) | |||
825 | for (i = 0 ; i < pcc_sockets ; i++) { | 814 | for (i = 0 ; i < pcc_sockets ; i++) { |
826 | socket[i].socket.dev.dev = &pcc_device.dev; | 815 | socket[i].socket.dev.dev = &pcc_device.dev; |
827 | socket[i].socket.ops = &pcc_operations; | 816 | socket[i].socket.ops = &pcc_operations; |
828 | socket[i].socket.resource_ops = &pccard_static_ops; | 817 | socket[i].socket.resource_ops = &pccard_nonstatic_ops; |
829 | socket[i].socket.owner = THIS_MODULE; | 818 | socket[i].socket.owner = THIS_MODULE; |
830 | socket[i].number = i; | 819 | socket[i].number = i; |
831 | ret = pcmcia_register_socket(&socket[i].socket); | 820 | ret = pcmcia_register_socket(&socket[i].socket); |
diff --git a/drivers/pcmcia/m32r_cfc.h b/drivers/pcmcia/m32r_cfc.h index 17c1db7ae155..8146e3bee2e8 100644 --- a/drivers/pcmcia/m32r_cfc.h +++ b/drivers/pcmcia/m32r_cfc.h | |||
@@ -71,11 +71,15 @@ | |||
71 | 71 | ||
72 | #define CFC_IOPORT_BASE 0x1000 | 72 | #define CFC_IOPORT_BASE 0x1000 |
73 | 73 | ||
74 | #if !defined(CONFIG_PLAT_USRV) | 74 | #if defined(CONFIG_PLAT_MAPPI3) |
75 | #define CFC_ATTR_MAPBASE 0x14014000 | ||
76 | #define CFC_IO_MAPBASE_BYTE 0xb4012000 | ||
77 | #define CFC_IO_MAPBASE_WORD 0xb4002000 | ||
78 | #elif !defined(CONFIG_PLAT_USRV) | ||
75 | #define CFC_ATTR_MAPBASE 0x0c014000 | 79 | #define CFC_ATTR_MAPBASE 0x0c014000 |
76 | #define CFC_IO_MAPBASE_BYTE 0xac012000 | 80 | #define CFC_IO_MAPBASE_BYTE 0xac012000 |
77 | #define CFC_IO_MAPBASE_WORD 0xac002000 | 81 | #define CFC_IO_MAPBASE_WORD 0xac002000 |
78 | #else /* CONFIG_PLAT_USRV */ | 82 | #else |
79 | #define CFC_ATTR_MAPBASE 0x04014000 | 83 | #define CFC_ATTR_MAPBASE 0x04014000 |
80 | #define CFC_IO_MAPBASE_BYTE 0xa4012000 | 84 | #define CFC_IO_MAPBASE_BYTE 0xa4012000 |
81 | #define CFC_IO_MAPBASE_WORD 0xa4002000 | 85 | #define CFC_IO_MAPBASE_WORD 0xa4002000 |
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c index 4a06c7d0e5e4..aac83ce6469c 100644 --- a/drivers/s390/cio/blacklist.c +++ b/drivers/s390/cio/blacklist.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * drivers/s390/cio/blacklist.c | 2 | * drivers/s390/cio/blacklist.c |
3 | * S/390 common I/O routines -- blacklisting of specific devices | 3 | * S/390 common I/O routines -- blacklisting of specific devices |
4 | * $Revision: 1.33 $ | 4 | * $Revision: 1.34 $ |
5 | * | 5 | * |
6 | * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, | 6 | * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, |
7 | * IBM Corporation | 7 | * IBM Corporation |
@@ -289,7 +289,7 @@ static int cio_ignore_read (char *page, char **start, off_t off, | |||
289 | len = 0; | 289 | len = 0; |
290 | for (devno = off; /* abuse the page variable | 290 | for (devno = off; /* abuse the page variable |
291 | * as counter, see fs/proc/generic.c */ | 291 | * as counter, see fs/proc/generic.c */ |
292 | devno <= __MAX_SUBCHANNELS && len + entry_size < count; devno++) { | 292 | devno < __MAX_SUBCHANNELS && len + entry_size < count; devno++) { |
293 | if (!test_bit(devno, bl_dev)) | 293 | if (!test_bit(devno, bl_dev)) |
294 | continue; | 294 | continue; |
295 | len += sprintf(page + len, "0.0.%04lx", devno); | 295 | len += sprintf(page + len, "0.0.%04lx", devno); |
@@ -302,7 +302,7 @@ static int cio_ignore_read (char *page, char **start, off_t off, | |||
302 | len += sprintf(page + len, "\n"); | 302 | len += sprintf(page + len, "\n"); |
303 | } | 303 | } |
304 | 304 | ||
305 | if (devno <= __MAX_SUBCHANNELS) | 305 | if (devno < __MAX_SUBCHANNELS) |
306 | *eof = 1; | 306 | *eof = 1; |
307 | *start = (char *) (devno - off); /* number of checked entries */ | 307 | *start = (char *) (devno - off); /* number of checked entries */ |
308 | return len; | 308 | return len; |
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index 80b0c40c522b..ec81532eb845 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c | |||
@@ -1975,7 +1975,7 @@ __megaraid_reset(Scsi_Cmnd *cmd) | |||
1975 | static int | 1975 | static int |
1976 | megaraid_reset(Scsi_Cmnd *cmd) | 1976 | megaraid_reset(Scsi_Cmnd *cmd) |
1977 | { | 1977 | { |
1978 | adapter = (adapter_t *)cmd->device->host->hostdata; | 1978 | adapter_t *adapter = (adapter_t *)cmd->device->host->hostdata; |
1979 | int rc; | 1979 | int rc; |
1980 | 1980 | ||
1981 | spin_lock_irq(&adapter->lock); | 1981 | spin_lock_irq(&adapter->lock); |
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 6e44b46c9e9d..25fcef2c42de 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -753,7 +753,7 @@ config SERIAL_MPC52xx_CONSOLE_BAUD | |||
753 | 753 | ||
754 | config SERIAL_ICOM | 754 | config SERIAL_ICOM |
755 | tristate "IBM Multiport Serial Adapter" | 755 | tristate "IBM Multiport Serial Adapter" |
756 | depends on PPC_ISERIES || PPC_PSERIES | 756 | depends on PCI && (PPC_ISERIES || PPC_PSERIES) |
757 | select SERIAL_CORE | 757 | select SERIAL_CORE |
758 | help | 758 | help |
759 | This driver is for a family of multiport serial adapters | 759 | This driver is for a family of multiport serial adapters |
@@ -843,4 +843,13 @@ config SERIAL_JSM | |||
843 | To compile this driver as a module, choose M here: the | 843 | To compile this driver as a module, choose M here: the |
844 | module will be called jsm. | 844 | module will be called jsm. |
845 | 845 | ||
846 | config SERIAL_SGI_IOC4 | ||
847 | tristate "SGI IOC4 controller serial support" | ||
848 | depends on (IA64_GENERIC || IA64_SGI_SN2) && SGI_IOC4 | ||
849 | select SERIAL_CORE | ||
850 | help | ||
851 | If you have an SGI Altix with an IOC4 based Base IO card | ||
852 | and wish to use the serial ports on this card, say Y. | ||
853 | Otherwise, say N. | ||
854 | |||
846 | endmenu | 855 | endmenu |
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 81b77d769b84..8f1cdde7dbed 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile | |||
@@ -51,4 +51,4 @@ obj-$(CONFIG_ETRAX_SERIAL) += crisv10.o | |||
51 | obj-$(CONFIG_SERIAL_JSM) += jsm/ | 51 | obj-$(CONFIG_SERIAL_JSM) += jsm/ |
52 | obj-$(CONFIG_SERIAL_TXX9) += serial_txx9.o | 52 | obj-$(CONFIG_SERIAL_TXX9) += serial_txx9.o |
53 | obj-$(CONFIG_SERIAL_VR41XX) += vr41xx_siu.o | 53 | obj-$(CONFIG_SERIAL_VR41XX) += vr41xx_siu.o |
54 | obj-$(CONFIG_BLK_DEV_SGIIOC4) += ioc4_serial.o | 54 | obj-$(CONFIG_SERIAL_SGI_IOC4) += ioc4_serial.o |
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm2.c b/drivers/serial/cpm_uart/cpm_uart_cpm2.c index b422c3abfba6..c4c8f4b44f53 100644 --- a/drivers/serial/cpm_uart/cpm_uart_cpm2.c +++ b/drivers/serial/cpm_uart/cpm_uart_cpm2.c | |||
@@ -134,12 +134,21 @@ void scc1_lineif(struct uart_cpm_port *pinfo) | |||
134 | 134 | ||
135 | void scc2_lineif(struct uart_cpm_port *pinfo) | 135 | void scc2_lineif(struct uart_cpm_port *pinfo) |
136 | { | 136 | { |
137 | /* | ||
138 | * STx GP3 uses the SCC2 secondary option pin assignment | ||
139 | * which this driver doesn't account for in the static | ||
140 | * pin assignments. This kind of board specific info | ||
141 | * really has to get out of the driver so boards can | ||
142 | * be supported in a sane fashion. | ||
143 | */ | ||
144 | #ifndef CONFIG_STX_GP3 | ||
137 | volatile iop_cpm2_t *io = &cpm2_immr->im_ioport; | 145 | volatile iop_cpm2_t *io = &cpm2_immr->im_ioport; |
138 | io->iop_pparb |= 0x008b0000; | 146 | io->iop_pparb |= 0x008b0000; |
139 | io->iop_pdirb |= 0x00880000; | 147 | io->iop_pdirb |= 0x00880000; |
140 | io->iop_psorb |= 0x00880000; | 148 | io->iop_psorb |= 0x00880000; |
141 | io->iop_pdirb &= ~0x00030000; | 149 | io->iop_pdirb &= ~0x00030000; |
142 | io->iop_psorb &= ~0x00030000; | 150 | io->iop_psorb &= ~0x00030000; |
151 | #endif | ||
143 | cpm2_immr->im_cpmux.cmx_scr &= 0xff00ffff; | 152 | cpm2_immr->im_cpmux.cmx_scr &= 0xff00ffff; |
144 | cpm2_immr->im_cpmux.cmx_scr |= 0x00090000; | 153 | cpm2_immr->im_cpmux.cmx_scr |= 0x00090000; |
145 | pinfo->brg = 2; | 154 | pinfo->brg = 2; |
diff --git a/drivers/serial/ioc4_serial.c b/drivers/serial/ioc4_serial.c index ba4e13a22a50..793c3a7cbe47 100644 --- a/drivers/serial/ioc4_serial.c +++ b/drivers/serial/ioc4_serial.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/serial_reg.h> | 20 | #include <linux/serial_reg.h> |
21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
22 | #include <linux/pci.h> | 22 | #include <linux/pci.h> |
23 | #include <linux/ioc4_common.h> | 23 | #include <linux/ioc4.h> |
24 | #include <linux/serial_core.h> | 24 | #include <linux/serial_core.h> |
25 | 25 | ||
26 | /* | 26 | /* |
@@ -130,12 +130,19 @@ | |||
130 | IOC4_SIO_IR_S3_TX_EXPLICIT) | 130 | IOC4_SIO_IR_S3_TX_EXPLICIT) |
131 | 131 | ||
132 | /* Bitmasks for IOC4_OTHER_IR, IOC4_OTHER_IEC, and IOC4_OTHER_IES */ | 132 | /* Bitmasks for IOC4_OTHER_IR, IOC4_OTHER_IEC, and IOC4_OTHER_IES */ |
133 | #define IOC4_OTHER_IR_ATA_INT 0x00000001 /* ATAPI intr pass-thru */ | 133 | #define IOC4_OTHER_IR_ATA_INT 0x00000001 /* ATAPI intr pass-thru */ |
134 | #define IOC4_OTHER_IR_ATA_MEMERR 0x00000002 /* ATAPI DMA PCI error */ | 134 | #define IOC4_OTHER_IR_ATA_MEMERR 0x00000002 /* ATAPI DMA PCI error */ |
135 | #define IOC4_OTHER_IR_S0_MEMERR 0x00000004 /* Port 0 PCI error */ | 135 | #define IOC4_OTHER_IR_S0_MEMERR 0x00000004 /* Port 0 PCI error */ |
136 | #define IOC4_OTHER_IR_S1_MEMERR 0x00000008 /* Port 1 PCI error */ | 136 | #define IOC4_OTHER_IR_S1_MEMERR 0x00000008 /* Port 1 PCI error */ |
137 | #define IOC4_OTHER_IR_S2_MEMERR 0x00000010 /* Port 2 PCI error */ | 137 | #define IOC4_OTHER_IR_S2_MEMERR 0x00000010 /* Port 2 PCI error */ |
138 | #define IOC4_OTHER_IR_S3_MEMERR 0x00000020 /* Port 3 PCI error */ | 138 | #define IOC4_OTHER_IR_S3_MEMERR 0x00000020 /* Port 3 PCI error */ |
139 | #define IOC4_OTHER_IR_KBD_INT 0x00000040 /* Keyboard/mouse */ | ||
140 | #define IOC4_OTHER_IR_RESERVED 0x007fff80 /* Reserved */ | ||
141 | #define IOC4_OTHER_IR_RT_INT 0x00800000 /* INT_OUT section output */ | ||
142 | #define IOC4_OTHER_IR_GEN_INT 0xff000000 /* Generic pins */ | ||
143 | |||
144 | #define IOC4_OTHER_IR_SER_MEMERR (IOC4_OTHER_IR_S0_MEMERR | IOC4_OTHER_IR_S1_MEMERR | \ | ||
145 | IOC4_OTHER_IR_S2_MEMERR | IOC4_OTHER_IR_S3_MEMERR) | ||
139 | 146 | ||
140 | /* Bitmasks for IOC4_SIO_CR */ | 147 | /* Bitmasks for IOC4_SIO_CR */ |
141 | #define IOC4_SIO_CR_CMD_PULSE_SHIFT 0 /* byte bus strobe shift */ | 148 | #define IOC4_SIO_CR_CMD_PULSE_SHIFT 0 /* byte bus strobe shift */ |
@@ -274,70 +281,24 @@ struct ioc4_uartregs { | |||
274 | #define i4u_dlm u2.dlm | 281 | #define i4u_dlm u2.dlm |
275 | #define i4u_fcr u3.fcr | 282 | #define i4u_fcr u3.fcr |
276 | 283 | ||
277 | /* PCI memory space register map addressed using pci_bar0 */ | 284 | /* Serial port registers used for DMA serial I/O */ |
278 | struct ioc4_memregs { | 285 | struct ioc4_serial { |
279 | struct ioc4_mem { | 286 | uint32_t sbbr01_l; |
280 | /* Miscellaneous IOC4 registers */ | 287 | uint32_t sbbr01_h; |
281 | uint32_t pci_err_addr_l; | 288 | uint32_t sbbr23_l; |
282 | uint32_t pci_err_addr_h; | 289 | uint32_t sbbr23_h; |
283 | uint32_t sio_ir; | 290 | |
284 | uint32_t other_ir; | 291 | struct ioc4_serialregs port_0; |
285 | 292 | struct ioc4_serialregs port_1; | |
286 | /* These registers are read-only for general kernel code. */ | 293 | struct ioc4_serialregs port_2; |
287 | uint32_t sio_ies_ro; | 294 | struct ioc4_serialregs port_3; |
288 | uint32_t other_ies_ro; | 295 | struct ioc4_uartregs uart_0; |
289 | uint32_t sio_iec_ro; | 296 | struct ioc4_uartregs uart_1; |
290 | uint32_t other_iec_ro; | 297 | struct ioc4_uartregs uart_2; |
291 | uint32_t sio_cr; | 298 | struct ioc4_uartregs uart_3; |
292 | uint32_t misc_fill1; | 299 | } ioc4_serial; |
293 | uint32_t int_out; | ||
294 | uint32_t misc_fill2; | ||
295 | uint32_t gpcr_s; | ||
296 | uint32_t gpcr_c; | ||
297 | uint32_t gpdr; | ||
298 | uint32_t misc_fill3; | ||
299 | uint32_t gppr_0; | ||
300 | uint32_t gppr_1; | ||
301 | uint32_t gppr_2; | ||
302 | uint32_t gppr_3; | ||
303 | uint32_t gppr_4; | ||
304 | uint32_t gppr_5; | ||
305 | uint32_t gppr_6; | ||
306 | uint32_t gppr_7; | ||
307 | } ioc4_mem; | ||
308 | |||
309 | char misc_fill4[0x100 - 0x5C - 4]; | ||
310 | |||
311 | /* ATA/ATAP registers */ | ||
312 | uint32_t ata_notused[9]; | ||
313 | char ata_fill1[0x140 - 0x120 - 4]; | ||
314 | uint32_t ata_notused1[8]; | ||
315 | char ata_fill2[0x200 - 0x15C - 4]; | ||
316 | |||
317 | /* Keyboard and mouse registers */ | ||
318 | uint32_t km_notused[5];; | ||
319 | char km_fill1[0x300 - 0x210 - 4]; | ||
320 | |||
321 | /* Serial port registers used for DMA serial I/O */ | ||
322 | struct ioc4_serial { | ||
323 | uint32_t sbbr01_l; | ||
324 | uint32_t sbbr01_h; | ||
325 | uint32_t sbbr23_l; | ||
326 | uint32_t sbbr23_h; | ||
327 | |||
328 | struct ioc4_serialregs port_0; | ||
329 | struct ioc4_serialregs port_1; | ||
330 | struct ioc4_serialregs port_2; | ||
331 | struct ioc4_serialregs port_3; | ||
332 | struct ioc4_uartregs uart_0; | ||
333 | struct ioc4_uartregs uart_1; | ||
334 | struct ioc4_uartregs uart_2; | ||
335 | struct ioc4_uartregs uart_3; | ||
336 | } ioc4_serial; | ||
337 | }; | ||
338 | 300 | ||
339 | /* UART clock speed */ | 301 | /* UART clock speed */ |
340 | #define IOC4_SER_XIN_CLK IOC4_SER_XIN_CLK_66 | ||
341 | #define IOC4_SER_XIN_CLK_66 66666667 | 302 | #define IOC4_SER_XIN_CLK_66 66666667 |
342 | #define IOC4_SER_XIN_CLK_33 33333333 | 303 | #define IOC4_SER_XIN_CLK_33 33333333 |
343 | 304 | ||
@@ -412,8 +373,8 @@ enum sio_proto { | |||
412 | | UART_LCR_WLEN7 | UART_LCR_WLEN8) | 373 | | UART_LCR_WLEN7 | UART_LCR_WLEN8) |
413 | #define LCR_MASK_STOP_BITS (UART_LCR_STOP) | 374 | #define LCR_MASK_STOP_BITS (UART_LCR_STOP) |
414 | 375 | ||
415 | #define PENDING(_p) (readl(&(_p)->ip_mem->sio_ir) & _p->ip_ienb) | 376 | #define PENDING(_p) (readl(&(_p)->ip_mem->sio_ir.raw) & _p->ip_ienb) |
416 | #define READ_SIO_IR(_p) readl(&(_p)->ip_mem->sio_ir) | 377 | #define READ_SIO_IR(_p) readl(&(_p)->ip_mem->sio_ir.raw) |
417 | 378 | ||
418 | /* Default to 4k buffers */ | 379 | /* Default to 4k buffers */ |
419 | #ifdef IOC4_1K_BUFFERS | 380 | #ifdef IOC4_1K_BUFFERS |
@@ -447,7 +408,7 @@ struct ioc4_control { | |||
447 | */ | 408 | */ |
448 | #define MAX_IOC4_INTR_ENTS (8 * sizeof(uint32_t)) | 409 | #define MAX_IOC4_INTR_ENTS (8 * sizeof(uint32_t)) |
449 | struct ioc4_soft { | 410 | struct ioc4_soft { |
450 | struct ioc4_mem __iomem *is_ioc4_mem_addr; | 411 | struct ioc4_misc_regs __iomem *is_ioc4_misc_addr; |
451 | struct ioc4_serial __iomem *is_ioc4_serial_addr; | 412 | struct ioc4_serial __iomem *is_ioc4_serial_addr; |
452 | 413 | ||
453 | /* Each interrupt type has an entry in the array */ | 414 | /* Each interrupt type has an entry in the array */ |
@@ -486,7 +447,7 @@ struct ioc4_port { | |||
486 | struct ioc4_soft *ip_ioc4_soft; | 447 | struct ioc4_soft *ip_ioc4_soft; |
487 | 448 | ||
488 | /* pci mem addresses */ | 449 | /* pci mem addresses */ |
489 | struct ioc4_mem __iomem *ip_mem; | 450 | struct ioc4_misc_regs __iomem *ip_mem; |
490 | struct ioc4_serial __iomem *ip_serial; | 451 | struct ioc4_serial __iomem *ip_serial; |
491 | struct ioc4_serialregs __iomem *ip_serial_regs; | 452 | struct ioc4_serialregs __iomem *ip_serial_regs; |
492 | struct ioc4_uartregs __iomem *ip_uart_regs; | 453 | struct ioc4_uartregs __iomem *ip_uart_regs; |
@@ -553,7 +514,7 @@ struct hooks { | |||
553 | uint32_t intr_dma_error; | 514 | uint32_t intr_dma_error; |
554 | uint32_t intr_clear; | 515 | uint32_t intr_clear; |
555 | uint32_t intr_all; | 516 | uint32_t intr_all; |
556 | char rs422_select_pin; | 517 | int rs422_select_pin; |
557 | }; | 518 | }; |
558 | 519 | ||
559 | static struct hooks hooks_array[IOC4_NUM_SERIAL_PORTS] = { | 520 | static struct hooks hooks_array[IOC4_NUM_SERIAL_PORTS] = { |
@@ -669,7 +630,7 @@ static void handle_intr(void *arg, uint32_t sio_ir); | |||
669 | static inline void | 630 | static inline void |
670 | write_ireg(struct ioc4_soft *ioc4_soft, uint32_t val, int which, int type) | 631 | write_ireg(struct ioc4_soft *ioc4_soft, uint32_t val, int which, int type) |
671 | { | 632 | { |
672 | struct ioc4_mem __iomem *mem = ioc4_soft->is_ioc4_mem_addr; | 633 | struct ioc4_misc_regs __iomem *mem = ioc4_soft->is_ioc4_misc_addr; |
673 | unsigned long flags; | 634 | unsigned long flags; |
674 | 635 | ||
675 | spin_lock_irqsave(&ioc4_soft->is_ir_lock, flags); | 636 | spin_lock_irqsave(&ioc4_soft->is_ir_lock, flags); |
@@ -678,11 +639,11 @@ write_ireg(struct ioc4_soft *ioc4_soft, uint32_t val, int which, int type) | |||
678 | case IOC4_SIO_INTR_TYPE: | 639 | case IOC4_SIO_INTR_TYPE: |
679 | switch (which) { | 640 | switch (which) { |
680 | case IOC4_W_IES: | 641 | case IOC4_W_IES: |
681 | writel(val, &mem->sio_ies_ro); | 642 | writel(val, &mem->sio_ies.raw); |
682 | break; | 643 | break; |
683 | 644 | ||
684 | case IOC4_W_IEC: | 645 | case IOC4_W_IEC: |
685 | writel(val, &mem->sio_iec_ro); | 646 | writel(val, &mem->sio_iec.raw); |
686 | break; | 647 | break; |
687 | } | 648 | } |
688 | break; | 649 | break; |
@@ -690,11 +651,11 @@ write_ireg(struct ioc4_soft *ioc4_soft, uint32_t val, int which, int type) | |||
690 | case IOC4_OTHER_INTR_TYPE: | 651 | case IOC4_OTHER_INTR_TYPE: |
691 | switch (which) { | 652 | switch (which) { |
692 | case IOC4_W_IES: | 653 | case IOC4_W_IES: |
693 | writel(val, &mem->other_ies_ro); | 654 | writel(val, &mem->other_ies.raw); |
694 | break; | 655 | break; |
695 | 656 | ||
696 | case IOC4_W_IEC: | 657 | case IOC4_W_IEC: |
697 | writel(val, &mem->other_iec_ro); | 658 | writel(val, &mem->other_iec.raw); |
698 | break; | 659 | break; |
699 | } | 660 | } |
700 | break; | 661 | break; |
@@ -747,7 +708,8 @@ static int set_baud(struct ioc4_port *port, int baud) | |||
747 | */ | 708 | */ |
748 | static struct ioc4_port *get_ioc4_port(struct uart_port *the_port) | 709 | static struct ioc4_port *get_ioc4_port(struct uart_port *the_port) |
749 | { | 710 | { |
750 | struct ioc4_control *control = dev_get_drvdata(the_port->dev); | 711 | struct ioc4_driver_data *idd = dev_get_drvdata(the_port->dev); |
712 | struct ioc4_control *control = idd->idd_serial_data; | ||
751 | int ii; | 713 | int ii; |
752 | 714 | ||
753 | if (control) { | 715 | if (control) { |
@@ -782,7 +744,7 @@ static struct ioc4_port *get_ioc4_port(struct uart_port *the_port) | |||
782 | static inline uint32_t | 744 | static inline uint32_t |
783 | pending_intrs(struct ioc4_soft *soft, int type) | 745 | pending_intrs(struct ioc4_soft *soft, int type) |
784 | { | 746 | { |
785 | struct ioc4_mem __iomem *mem = soft->is_ioc4_mem_addr; | 747 | struct ioc4_misc_regs __iomem *mem = soft->is_ioc4_misc_addr; |
786 | unsigned long flag; | 748 | unsigned long flag; |
787 | uint32_t intrs = 0; | 749 | uint32_t intrs = 0; |
788 | 750 | ||
@@ -793,11 +755,11 @@ pending_intrs(struct ioc4_soft *soft, int type) | |||
793 | 755 | ||
794 | switch (type) { | 756 | switch (type) { |
795 | case IOC4_SIO_INTR_TYPE: | 757 | case IOC4_SIO_INTR_TYPE: |
796 | intrs = readl(&mem->sio_ir) & readl(&mem->sio_ies_ro); | 758 | intrs = readl(&mem->sio_ir.raw) & readl(&mem->sio_ies.raw); |
797 | break; | 759 | break; |
798 | 760 | ||
799 | case IOC4_OTHER_INTR_TYPE: | 761 | case IOC4_OTHER_INTR_TYPE: |
800 | intrs = readl(&mem->other_ir) & readl(&mem->other_ies_ro); | 762 | intrs = readl(&mem->other_ir.raw) & readl(&mem->other_ies.raw); |
801 | 763 | ||
802 | /* Don't process any ATA interrupte */ | 764 | /* Don't process any ATA interrupte */ |
803 | intrs &= ~(IOC4_OTHER_IR_ATA_INT | IOC4_OTHER_IR_ATA_MEMERR); | 765 | intrs &= ~(IOC4_OTHER_IR_ATA_INT | IOC4_OTHER_IR_ATA_MEMERR); |
@@ -826,7 +788,7 @@ static int inline port_init(struct ioc4_port *port) | |||
826 | 788 | ||
827 | /* Wait until any pending bus activity for this port has ceased */ | 789 | /* Wait until any pending bus activity for this port has ceased */ |
828 | do | 790 | do |
829 | sio_cr = readl(&port->ip_mem->sio_cr); | 791 | sio_cr = readl(&port->ip_mem->sio_cr.raw); |
830 | while (!(sio_cr & IOC4_SIO_CR_SIO_DIAG_IDLE)); | 792 | while (!(sio_cr & IOC4_SIO_CR_SIO_DIAG_IDLE)); |
831 | 793 | ||
832 | /* Finish reset sequence */ | 794 | /* Finish reset sequence */ |
@@ -899,7 +861,7 @@ static int inline port_init(struct ioc4_port *port) | |||
899 | write_ireg(port->ip_ioc4_soft, hooks->intr_clear, | 861 | write_ireg(port->ip_ioc4_soft, hooks->intr_clear, |
900 | IOC4_W_IEC, IOC4_SIO_INTR_TYPE); | 862 | IOC4_W_IEC, IOC4_SIO_INTR_TYPE); |
901 | port->ip_ienb &= ~hooks->intr_clear; | 863 | port->ip_ienb &= ~hooks->intr_clear; |
902 | writel(hooks->intr_clear, &port->ip_mem->sio_ir); | 864 | writel(hooks->intr_clear, &port->ip_mem->sio_ir.raw); |
903 | return 0; | 865 | return 0; |
904 | } | 866 | } |
905 | 867 | ||
@@ -918,23 +880,23 @@ static void handle_dma_error_intr(void *arg, uint32_t other_ir) | |||
918 | spin_lock_irqsave(&port->ip_lock, flags); | 880 | spin_lock_irqsave(&port->ip_lock, flags); |
919 | 881 | ||
920 | /* ACK the interrupt */ | 882 | /* ACK the interrupt */ |
921 | writel(hooks->intr_dma_error, &port->ip_mem->other_ir); | 883 | writel(hooks->intr_dma_error, &port->ip_mem->other_ir.raw); |
922 | 884 | ||
923 | if (readl(&port->ip_mem->pci_err_addr_l) & IOC4_PCI_ERR_ADDR_VLD) { | 885 | if (readl(&port->ip_mem->pci_err_addr_l.raw) & IOC4_PCI_ERR_ADDR_VLD) { |
924 | printk(KERN_ERR | 886 | printk(KERN_ERR |
925 | "PCI error address is 0x%lx, " | 887 | "PCI error address is 0x%lx, " |
926 | "master is serial port %c %s\n", | 888 | "master is serial port %c %s\n", |
927 | (((uint64_t)readl(&port->ip_mem->pci_err_addr_h) | 889 | (((uint64_t)readl(&port->ip_mem->pci_err_addr_h) |
928 | << 32) | 890 | << 32) |
929 | | readl(&port->ip_mem->pci_err_addr_l)) | 891 | | readl(&port->ip_mem->pci_err_addr_l.raw)) |
930 | & IOC4_PCI_ERR_ADDR_ADDR_MSK, '1' + | 892 | & IOC4_PCI_ERR_ADDR_ADDR_MSK, '1' + |
931 | ((char)(readl(&port->ip_mem-> pci_err_addr_l) & | 893 | ((char)(readl(&port->ip_mem->pci_err_addr_l.raw) & |
932 | IOC4_PCI_ERR_ADDR_MST_NUM_MSK) >> 1), | 894 | IOC4_PCI_ERR_ADDR_MST_NUM_MSK) >> 1), |
933 | (readl(&port->ip_mem->pci_err_addr_l) | 895 | (readl(&port->ip_mem->pci_err_addr_l.raw) |
934 | & IOC4_PCI_ERR_ADDR_MST_TYP_MSK) | 896 | & IOC4_PCI_ERR_ADDR_MST_TYP_MSK) |
935 | ? "RX" : "TX"); | 897 | ? "RX" : "TX"); |
936 | 898 | ||
937 | if (readl(&port->ip_mem->pci_err_addr_l) | 899 | if (readl(&port->ip_mem->pci_err_addr_l.raw) |
938 | & IOC4_PCI_ERR_ADDR_MUL_ERR) { | 900 | & IOC4_PCI_ERR_ADDR_MUL_ERR) { |
939 | printk(KERN_ERR | 901 | printk(KERN_ERR |
940 | "Multiple errors occurred\n"); | 902 | "Multiple errors occurred\n"); |
@@ -1018,26 +980,26 @@ static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs) | |||
1018 | "other_ies = 0x%x\n", | 980 | "other_ies = 0x%x\n", |
1019 | (intr_type == IOC4_SIO_INTR_TYPE) ? "sio" : | 981 | (intr_type == IOC4_SIO_INTR_TYPE) ? "sio" : |
1020 | "other", this_ir, | 982 | "other", this_ir, |
1021 | readl(&soft->is_ioc4_mem_addr->sio_ir), | 983 | readl(&soft->is_ioc4_misc_addr->sio_ir.raw), |
1022 | readl(&soft->is_ioc4_mem_addr->sio_ies_ro), | 984 | readl(&soft->is_ioc4_misc_addr->sio_ies.raw), |
1023 | readl(&soft->is_ioc4_mem_addr->other_ir), | 985 | readl(&soft->is_ioc4_misc_addr->other_ir.raw), |
1024 | readl(&soft->is_ioc4_mem_addr->other_ies_ro)); | 986 | readl(&soft->is_ioc4_misc_addr->other_ies.raw)); |
1025 | } | 987 | } |
1026 | } | 988 | } |
1027 | #ifdef DEBUG_INTERRUPTS | 989 | #ifdef DEBUG_INTERRUPTS |
1028 | { | 990 | { |
1029 | struct ioc4_mem __iomem *mem = soft->is_ioc4_mem_addr; | 991 | struct ioc4_misc_regs __iomem *mem = soft->is_ioc4_misc_addr; |
1030 | spinlock_t *lp = &soft->is_ir_lock; | 992 | spinlock_t *lp = &soft->is_ir_lock; |
1031 | unsigned long flag; | 993 | unsigned long flag; |
1032 | 994 | ||
1033 | spin_lock_irqsave(&soft->is_ir_lock, flag); | 995 | spin_lock_irqsave(&soft->is_ir_lock, flag); |
1034 | printk ("%s : %d : mem 0x%p sio_ir 0x%x sio_ies_ro 0x%x " | 996 | printk ("%s : %d : mem 0x%p sio_ir 0x%x sio_ies 0x%x " |
1035 | "other_ir 0x%x other_ies_ro 0x%x mask 0x%x\n", | 997 | "other_ir 0x%x other_ies 0x%x mask 0x%x\n", |
1036 | __FUNCTION__, __LINE__, | 998 | __FUNCTION__, __LINE__, |
1037 | (void *)mem, readl(&mem->sio_ir), | 999 | (void *)mem, readl(&mem->sio_ir.raw), |
1038 | readl(&mem->sio_ies_ro), | 1000 | readl(&mem->sio_ies.raw), |
1039 | readl(&mem->other_ir), | 1001 | readl(&mem->other_ir.raw), |
1040 | readl(&mem->other_ies_ro), | 1002 | readl(&mem->other_ies.raw), |
1041 | IOC4_OTHER_IR_ATA_INT | IOC4_OTHER_IR_ATA_MEMERR); | 1003 | IOC4_OTHER_IR_ATA_INT | IOC4_OTHER_IR_ATA_MEMERR); |
1042 | spin_unlock_irqrestore(&soft->is_ir_lock, flag); | 1004 | spin_unlock_irqrestore(&soft->is_ir_lock, flag); |
1043 | } | 1005 | } |
@@ -1049,21 +1011,20 @@ static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs) | |||
1049 | * ioc4_attach_local - Device initialization. | 1011 | * ioc4_attach_local - Device initialization. |
1050 | * Called at *_attach() time for each | 1012 | * Called at *_attach() time for each |
1051 | * IOC4 with serial ports in the system. | 1013 | * IOC4 with serial ports in the system. |
1052 | * @control: ioc4_control ptr | 1014 | * @idd: Master module data for this IOC4 |
1053 | * @pdev: PCI handle for this device | ||
1054 | * @soft: soft struct for this device | ||
1055 | * @ioc4: ioc4 mem space | ||
1056 | */ | 1015 | */ |
1057 | static int inline ioc4_attach_local(struct pci_dev *pdev, | 1016 | static int inline ioc4_attach_local(struct ioc4_driver_data *idd) |
1058 | struct ioc4_control *control, | ||
1059 | struct ioc4_soft *soft, void __iomem *ioc4_mem, | ||
1060 | void __iomem *ioc4_serial) | ||
1061 | { | 1017 | { |
1062 | struct ioc4_port *port; | 1018 | struct ioc4_port *port; |
1063 | struct ioc4_port *ports[IOC4_NUM_SERIAL_PORTS]; | 1019 | struct ioc4_port *ports[IOC4_NUM_SERIAL_PORTS]; |
1064 | int port_number; | 1020 | int port_number; |
1065 | uint16_t ioc4_revid_min = 62; | 1021 | uint16_t ioc4_revid_min = 62; |
1066 | uint16_t ioc4_revid; | 1022 | uint16_t ioc4_revid; |
1023 | struct pci_dev *pdev = idd->idd_pdev; | ||
1024 | struct ioc4_control* control = idd->idd_serial_data; | ||
1025 | struct ioc4_soft *soft = control->ic_soft; | ||
1026 | void __iomem *ioc4_misc = idd->idd_misc_regs; | ||
1027 | void __iomem *ioc4_serial = soft->is_ioc4_serial_addr; | ||
1067 | 1028 | ||
1068 | /* IOC4 firmware must be at least rev 62 */ | 1029 | /* IOC4 firmware must be at least rev 62 */ |
1069 | pci_read_config_word(pdev, PCI_COMMAND_SPECIAL, &ioc4_revid); | 1030 | pci_read_config_word(pdev, PCI_COMMAND_SPECIAL, &ioc4_revid); |
@@ -1076,7 +1037,7 @@ static int inline ioc4_attach_local(struct pci_dev *pdev, | |||
1076 | ioc4_revid, ioc4_revid_min); | 1037 | ioc4_revid, ioc4_revid_min); |
1077 | return -EPERM; | 1038 | return -EPERM; |
1078 | } | 1039 | } |
1079 | BUG_ON(ioc4_mem == NULL); | 1040 | BUG_ON(ioc4_misc == NULL); |
1080 | BUG_ON(ioc4_serial == NULL); | 1041 | BUG_ON(ioc4_serial == NULL); |
1081 | 1042 | ||
1082 | /* Create port structures for each port */ | 1043 | /* Create port structures for each port */ |
@@ -1100,10 +1061,18 @@ static int inline ioc4_attach_local(struct pci_dev *pdev, | |||
1100 | port->ip_ioc4_soft = soft; | 1061 | port->ip_ioc4_soft = soft; |
1101 | port->ip_pdev = pdev; | 1062 | port->ip_pdev = pdev; |
1102 | port->ip_ienb = 0; | 1063 | port->ip_ienb = 0; |
1103 | port->ip_pci_bus_speed = IOC4_SER_XIN_CLK; | 1064 | /* Use baud rate calculations based on detected PCI |
1065 | * bus speed. Simply test whether the PCI clock is | ||
1066 | * running closer to 66MHz or 33MHz. | ||
1067 | */ | ||
1068 | if (idd->count_period/IOC4_EXTINT_COUNT_DIVISOR < 20) { | ||
1069 | port->ip_pci_bus_speed = IOC4_SER_XIN_CLK_66; | ||
1070 | } else { | ||
1071 | port->ip_pci_bus_speed = IOC4_SER_XIN_CLK_33; | ||
1072 | } | ||
1104 | port->ip_baud = 9600; | 1073 | port->ip_baud = 9600; |
1105 | port->ip_control = control; | 1074 | port->ip_control = control; |
1106 | port->ip_mem = ioc4_mem; | 1075 | port->ip_mem = ioc4_misc; |
1107 | port->ip_serial = ioc4_serial; | 1076 | port->ip_serial = ioc4_serial; |
1108 | 1077 | ||
1109 | /* point to the right hook */ | 1078 | /* point to the right hook */ |
@@ -1604,14 +1573,12 @@ static int ioc4_set_proto(struct ioc4_port *port, enum sio_proto proto) | |||
1604 | switch (proto) { | 1573 | switch (proto) { |
1605 | case PROTO_RS232: | 1574 | case PROTO_RS232: |
1606 | /* Clear the appropriate GIO pin */ | 1575 | /* Clear the appropriate GIO pin */ |
1607 | writel(0, (&port->ip_mem->gppr_0 + | 1576 | writel(0, (&port->ip_mem->gppr[hooks->rs422_select_pin].raw)); |
1608 | hooks->rs422_select_pin)); | ||
1609 | break; | 1577 | break; |
1610 | 1578 | ||
1611 | case PROTO_RS422: | 1579 | case PROTO_RS422: |
1612 | /* Set the appropriate GIO pin */ | 1580 | /* Set the appropriate GIO pin */ |
1613 | writel(1, (&port->ip_mem->gppr_0 + | 1581 | writel(1, (&port->ip_mem->gppr[hooks->rs422_select_pin].raw)); |
1614 | hooks->rs422_select_pin)); | ||
1615 | break; | 1582 | break; |
1616 | 1583 | ||
1617 | default: | 1584 | default: |
@@ -1885,7 +1852,7 @@ static void handle_intr(void *arg, uint32_t sio_ir) | |||
1885 | if (sio_ir & hooks->intr_delta_dcd) { | 1852 | if (sio_ir & hooks->intr_delta_dcd) { |
1886 | /* ACK the interrupt */ | 1853 | /* ACK the interrupt */ |
1887 | writel(hooks->intr_delta_dcd, | 1854 | writel(hooks->intr_delta_dcd, |
1888 | &port->ip_mem->sio_ir); | 1855 | &port->ip_mem->sio_ir.raw); |
1889 | 1856 | ||
1890 | shadow = readl(&port->ip_serial_regs->shadow); | 1857 | shadow = readl(&port->ip_serial_regs->shadow); |
1891 | 1858 | ||
@@ -1907,7 +1874,7 @@ static void handle_intr(void *arg, uint32_t sio_ir) | |||
1907 | if (sio_ir & hooks->intr_delta_cts) { | 1874 | if (sio_ir & hooks->intr_delta_cts) { |
1908 | /* ACK the interrupt */ | 1875 | /* ACK the interrupt */ |
1909 | writel(hooks->intr_delta_cts, | 1876 | writel(hooks->intr_delta_cts, |
1910 | &port->ip_mem->sio_ir); | 1877 | &port->ip_mem->sio_ir.raw); |
1911 | 1878 | ||
1912 | shadow = readl(&port->ip_serial_regs->shadow); | 1879 | shadow = readl(&port->ip_serial_regs->shadow); |
1913 | 1880 | ||
@@ -1928,7 +1895,7 @@ static void handle_intr(void *arg, uint32_t sio_ir) | |||
1928 | if (sio_ir & hooks->intr_rx_timer) { | 1895 | if (sio_ir & hooks->intr_rx_timer) { |
1929 | /* ACK the interrupt */ | 1896 | /* ACK the interrupt */ |
1930 | writel(hooks->intr_rx_timer, | 1897 | writel(hooks->intr_rx_timer, |
1931 | &port->ip_mem->sio_ir); | 1898 | &port->ip_mem->sio_ir.raw); |
1932 | 1899 | ||
1933 | if ((port->ip_notify & N_DATA_READY) | 1900 | if ((port->ip_notify & N_DATA_READY) |
1934 | && (port->ip_port)) { | 1901 | && (port->ip_port)) { |
@@ -1974,7 +1941,7 @@ static void handle_intr(void *arg, uint32_t sio_ir) | |||
1974 | 1941 | ||
1975 | /* ACK the interrupt */ | 1942 | /* ACK the interrupt */ |
1976 | writel(hooks->intr_tx_explicit, | 1943 | writel(hooks->intr_tx_explicit, |
1977 | &port->ip_mem->sio_ir); | 1944 | &port->ip_mem->sio_ir.raw); |
1978 | 1945 | ||
1979 | if (port->ip_notify & N_OUTPUT_LOWAT) | 1946 | if (port->ip_notify & N_OUTPUT_LOWAT) |
1980 | ioc4_cb_output_lowat(port); | 1947 | ioc4_cb_output_lowat(port); |
@@ -2634,7 +2601,8 @@ ioc4_serial_core_attach(struct pci_dev *pdev) | |||
2634 | { | 2601 | { |
2635 | struct ioc4_port *port; | 2602 | struct ioc4_port *port; |
2636 | struct uart_port *the_port; | 2603 | struct uart_port *the_port; |
2637 | struct ioc4_control *control = pci_get_drvdata(pdev); | 2604 | struct ioc4_driver_data *idd = pci_get_drvdata(pdev); |
2605 | struct ioc4_control *control = idd->idd_serial_data; | ||
2638 | int ii; | 2606 | int ii; |
2639 | 2607 | ||
2640 | DPRINT_CONFIG(("%s: attach pdev 0x%p - control 0x%p\n", | 2608 | DPRINT_CONFIG(("%s: attach pdev 0x%p - control 0x%p\n", |
@@ -2680,55 +2648,29 @@ ioc4_serial_core_attach(struct pci_dev *pdev) | |||
2680 | 2648 | ||
2681 | /** | 2649 | /** |
2682 | * ioc4_serial_attach_one - register attach function | 2650 | * ioc4_serial_attach_one - register attach function |
2683 | * called per card found from ioc4_serial_detect as part | 2651 | * called per card found from IOC4 master module. |
2684 | * of module_init(). | 2652 | * @idd: Master module data for this IOC4 |
2685 | * @pdev: handle for this card | ||
2686 | * @pci_id: pci id for this card | ||
2687 | */ | 2653 | */ |
2688 | int | 2654 | int |
2689 | ioc4_serial_attach_one(struct pci_dev *pdev, const struct pci_device_id *pci_id) | 2655 | ioc4_serial_attach_one(struct ioc4_driver_data *idd) |
2690 | { | 2656 | { |
2691 | struct ioc4_mem __iomem *mem; | 2657 | unsigned long tmp_addr1; |
2692 | unsigned long tmp_addr, tmp_addr1; | ||
2693 | struct ioc4_serial __iomem *serial; | 2658 | struct ioc4_serial __iomem *serial; |
2694 | struct ioc4_soft *soft; | 2659 | struct ioc4_soft *soft; |
2695 | struct ioc4_control *control; | 2660 | struct ioc4_control *control; |
2696 | int tmp, ret = 0; | 2661 | int ret = 0; |
2697 | 2662 | ||
2698 | 2663 | ||
2699 | DPRINT_CONFIG(("%s (0x%p, 0x%p)\n", __FUNCTION__, pdev, pci_id)); | 2664 | DPRINT_CONFIG(("%s (0x%p, 0x%p)\n", __FUNCTION__, idd->idd_pdev, idd->idd_pci_id)); |
2700 | |||
2701 | /* Map in the ioc4 memory */ | ||
2702 | tmp_addr = pci_resource_start(pdev, 0); | ||
2703 | if (!tmp_addr) { | ||
2704 | printk(KERN_WARNING | ||
2705 | "ioc4 (%p) : unable to get PIO mapping for " | ||
2706 | "MEM space\n", (void *)pdev); | ||
2707 | return -ENODEV; | ||
2708 | } | ||
2709 | if (!request_region(tmp_addr, sizeof(struct ioc4_mem), "sioc4_mem")) { | ||
2710 | printk(KERN_ALERT | ||
2711 | "ioc4 (%p): unable to get request region for " | ||
2712 | "MEM space\n", (void *)pdev); | ||
2713 | return -ENODEV; | ||
2714 | } | ||
2715 | mem = ioremap(tmp_addr, sizeof(struct ioc4_mem)); | ||
2716 | if (!mem) { | ||
2717 | printk(KERN_WARNING | ||
2718 | "ioc4 (%p) : unable to remap ioc4 memory\n", | ||
2719 | (void *)pdev); | ||
2720 | ret = -ENODEV; | ||
2721 | goto out1; | ||
2722 | } | ||
2723 | 2665 | ||
2724 | /* request serial registers */ | 2666 | /* request serial registers */ |
2725 | tmp_addr1 = pci_resource_start(pdev, 0) + IOC4_SERIAL_OFFSET; | 2667 | tmp_addr1 = idd->idd_bar0 + IOC4_SERIAL_OFFSET; |
2726 | 2668 | ||
2727 | if (!request_region(tmp_addr1, sizeof(struct ioc4_serial), | 2669 | if (!request_region(tmp_addr1, sizeof(struct ioc4_serial), |
2728 | "sioc4_uart")) { | 2670 | "sioc4_uart")) { |
2729 | printk(KERN_WARNING | 2671 | printk(KERN_WARNING |
2730 | "ioc4 (%p): unable to get request region for " | 2672 | "ioc4 (%p): unable to get request region for " |
2731 | "uart space\n", (void *)pdev); | 2673 | "uart space\n", (void *)idd->idd_pdev); |
2732 | ret = -ENODEV; | 2674 | ret = -ENODEV; |
2733 | goto out1; | 2675 | goto out1; |
2734 | } | 2676 | } |
@@ -2736,12 +2678,12 @@ ioc4_serial_attach_one(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
2736 | if (!serial) { | 2678 | if (!serial) { |
2737 | printk(KERN_WARNING | 2679 | printk(KERN_WARNING |
2738 | "ioc4 (%p) : unable to remap ioc4 serial register\n", | 2680 | "ioc4 (%p) : unable to remap ioc4 serial register\n", |
2739 | (void *)pdev); | 2681 | (void *)idd->idd_pdev); |
2740 | ret = -ENODEV; | 2682 | ret = -ENODEV; |
2741 | goto out2; | 2683 | goto out2; |
2742 | } | 2684 | } |
2743 | DPRINT_CONFIG(("%s : mem 0x%p, serial 0x%p\n", | 2685 | DPRINT_CONFIG(("%s : mem 0x%p, serial 0x%p\n", |
2744 | __FUNCTION__, (void *)mem, (void *)serial)); | 2686 | __FUNCTION__, (void *)idd->idd_misc_regs, (void *)serial)); |
2745 | 2687 | ||
2746 | /* Get memory for the new card */ | 2688 | /* Get memory for the new card */ |
2747 | control = kmalloc(sizeof(struct ioc4_control) * IOC4_NUM_SERIAL_PORTS, | 2689 | control = kmalloc(sizeof(struct ioc4_control) * IOC4_NUM_SERIAL_PORTS, |
@@ -2754,59 +2696,56 @@ ioc4_serial_attach_one(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
2754 | goto out2; | 2696 | goto out2; |
2755 | } | 2697 | } |
2756 | memset(control, 0, sizeof(struct ioc4_control)); | 2698 | memset(control, 0, sizeof(struct ioc4_control)); |
2757 | pci_set_drvdata(pdev, control); | 2699 | idd->idd_serial_data = control; |
2758 | 2700 | ||
2759 | /* Allocate the soft structure */ | 2701 | /* Allocate the soft structure */ |
2760 | soft = kmalloc(sizeof(struct ioc4_soft), GFP_KERNEL); | 2702 | soft = kmalloc(sizeof(struct ioc4_soft), GFP_KERNEL); |
2761 | if (!soft) { | 2703 | if (!soft) { |
2762 | printk(KERN_WARNING | 2704 | printk(KERN_WARNING |
2763 | "ioc4 (%p): unable to get memory for the soft struct\n", | 2705 | "ioc4 (%p): unable to get memory for the soft struct\n", |
2764 | (void *)pdev); | 2706 | (void *)idd->idd_pdev); |
2765 | ret = -ENOMEM; | 2707 | ret = -ENOMEM; |
2766 | goto out3; | 2708 | goto out3; |
2767 | } | 2709 | } |
2768 | memset(soft, 0, sizeof(struct ioc4_soft)); | 2710 | memset(soft, 0, sizeof(struct ioc4_soft)); |
2769 | 2711 | ||
2770 | spin_lock_init(&soft->is_ir_lock); | 2712 | spin_lock_init(&soft->is_ir_lock); |
2771 | soft->is_ioc4_mem_addr = mem; | 2713 | soft->is_ioc4_misc_addr = idd->idd_misc_regs; |
2772 | soft->is_ioc4_serial_addr = serial; | 2714 | soft->is_ioc4_serial_addr = serial; |
2773 | 2715 | ||
2774 | /* Init the IOC4 */ | 2716 | /* Init the IOC4 */ |
2775 | pci_read_config_dword(pdev, PCI_COMMAND, &tmp); | 2717 | writel(0xf << IOC4_SIO_CR_CMD_PULSE_SHIFT, |
2776 | pci_write_config_dword(pdev, PCI_COMMAND, | 2718 | &idd->idd_misc_regs->sio_cr.raw); |
2777 | tmp | PCI_COMMAND_PARITY | PCI_COMMAND_SERR); | ||
2778 | |||
2779 | writel(0xf << IOC4_SIO_CR_CMD_PULSE_SHIFT, &mem->sio_cr); | ||
2780 | 2719 | ||
2781 | /* Enable serial port mode select generic PIO pins as outputs */ | 2720 | /* Enable serial port mode select generic PIO pins as outputs */ |
2782 | writel(IOC4_GPCR_UART0_MODESEL | IOC4_GPCR_UART1_MODESEL | 2721 | writel(IOC4_GPCR_UART0_MODESEL | IOC4_GPCR_UART1_MODESEL |
2783 | | IOC4_GPCR_UART2_MODESEL | IOC4_GPCR_UART3_MODESEL, | 2722 | | IOC4_GPCR_UART2_MODESEL | IOC4_GPCR_UART3_MODESEL, |
2784 | &mem->gpcr_s); | 2723 | &idd->idd_misc_regs->gpcr_s.raw); |
2785 | 2724 | ||
2786 | /* Clear and disable all interrupts */ | 2725 | /* Clear and disable all serial interrupts */ |
2787 | write_ireg(soft, ~0, IOC4_W_IEC, IOC4_SIO_INTR_TYPE); | 2726 | write_ireg(soft, ~0, IOC4_W_IEC, IOC4_SIO_INTR_TYPE); |
2788 | writel(~0, &mem->sio_ir); | 2727 | writel(~0, &idd->idd_misc_regs->sio_ir.raw); |
2789 | write_ireg(soft, ~(IOC4_OTHER_IR_ATA_INT | IOC4_OTHER_IR_ATA_MEMERR), | 2728 | write_ireg(soft, IOC4_OTHER_IR_SER_MEMERR, IOC4_W_IEC, |
2790 | IOC4_W_IEC, IOC4_OTHER_INTR_TYPE); | 2729 | IOC4_OTHER_INTR_TYPE); |
2791 | writel(~(IOC4_OTHER_IR_ATA_MEMERR | IOC4_OTHER_IR_ATA_MEMERR), | 2730 | writel(IOC4_OTHER_IR_SER_MEMERR, &idd->idd_misc_regs->other_ir.raw); |
2792 | &mem->other_ir); | ||
2793 | control->ic_soft = soft; | 2731 | control->ic_soft = soft; |
2794 | if (!request_irq(pdev->irq, ioc4_intr, SA_SHIRQ, | 2732 | |
2733 | /* Hook up interrupt handler */ | ||
2734 | if (!request_irq(idd->idd_pdev->irq, ioc4_intr, SA_SHIRQ, | ||
2795 | "sgi-ioc4serial", (void *)soft)) { | 2735 | "sgi-ioc4serial", (void *)soft)) { |
2796 | control->ic_irq = pdev->irq; | 2736 | control->ic_irq = idd->idd_pdev->irq; |
2797 | } else { | 2737 | } else { |
2798 | printk(KERN_WARNING | 2738 | printk(KERN_WARNING |
2799 | "%s : request_irq fails for IRQ 0x%x\n ", | 2739 | "%s : request_irq fails for IRQ 0x%x\n ", |
2800 | __FUNCTION__, pdev->irq); | 2740 | __FUNCTION__, idd->idd_pdev->irq); |
2801 | } | 2741 | } |
2802 | if ((ret = ioc4_attach_local(pdev, control, soft, | 2742 | ret = ioc4_attach_local(idd); |
2803 | soft->is_ioc4_mem_addr, | 2743 | if (ret) |
2804 | soft->is_ioc4_serial_addr))) | ||
2805 | goto out4; | 2744 | goto out4; |
2806 | 2745 | ||
2807 | /* register port with the serial core */ | 2746 | /* register port with the serial core */ |
2808 | 2747 | ||
2809 | if ((ret = ioc4_serial_core_attach(pdev))) | 2748 | if ((ret = ioc4_serial_core_attach(idd->idd_pdev))) |
2810 | goto out4; | 2749 | goto out4; |
2811 | 2750 | ||
2812 | return ret; | 2751 | return ret; |
@@ -2819,7 +2758,6 @@ out3: | |||
2819 | out2: | 2758 | out2: |
2820 | release_region(tmp_addr1, sizeof(struct ioc4_serial)); | 2759 | release_region(tmp_addr1, sizeof(struct ioc4_serial)); |
2821 | out1: | 2760 | out1: |
2822 | release_region(tmp_addr, sizeof(struct ioc4_mem)); | ||
2823 | 2761 | ||
2824 | return ret; | 2762 | return ret; |
2825 | } | 2763 | } |
@@ -2828,11 +2766,10 @@ out1: | |||
2828 | /** | 2766 | /** |
2829 | * ioc4_serial_remove_one - detach function | 2767 | * ioc4_serial_remove_one - detach function |
2830 | * | 2768 | * |
2831 | * @pdev: handle for this card | 2769 | * @idd: IOC4 master module data for this IOC4 |
2832 | */ | 2770 | */ |
2833 | 2771 | ||
2834 | #if 0 | 2772 | int ioc4_serial_remove_one(struct ioc4_driver_data *idd) |
2835 | void ioc4_serial_remove_one(struct pci_dev *pdev) | ||
2836 | { | 2773 | { |
2837 | int ii; | 2774 | int ii; |
2838 | struct ioc4_control *control; | 2775 | struct ioc4_control *control; |
@@ -2840,7 +2777,7 @@ void ioc4_serial_remove_one(struct pci_dev *pdev) | |||
2840 | struct ioc4_port *port; | 2777 | struct ioc4_port *port; |
2841 | struct ioc4_soft *soft; | 2778 | struct ioc4_soft *soft; |
2842 | 2779 | ||
2843 | control = pci_get_drvdata(pdev); | 2780 | control = idd->idd_serial_data; |
2844 | 2781 | ||
2845 | for (ii = 0; ii < IOC4_NUM_SERIAL_PORTS; ii++) { | 2782 | for (ii = 0; ii < IOC4_NUM_SERIAL_PORTS; ii++) { |
2846 | the_port = &control->ic_port[ii].icp_uart_port; | 2783 | the_port = &control->ic_port[ii].icp_uart_port; |
@@ -2867,10 +2804,17 @@ void ioc4_serial_remove_one(struct pci_dev *pdev) | |||
2867 | kfree(soft); | 2804 | kfree(soft); |
2868 | } | 2805 | } |
2869 | kfree(control); | 2806 | kfree(control); |
2870 | pci_set_drvdata(pdev, NULL); | 2807 | idd->idd_serial_data = NULL; |
2871 | uart_unregister_driver(&ioc4_uart); | 2808 | |
2809 | return 0; | ||
2872 | } | 2810 | } |
2873 | #endif | 2811 | |
2812 | static struct ioc4_submodule ioc4_serial_submodule = { | ||
2813 | .is_name = "IOC4_serial", | ||
2814 | .is_owner = THIS_MODULE, | ||
2815 | .is_probe = ioc4_serial_attach_one, | ||
2816 | .is_remove = ioc4_serial_remove_one, | ||
2817 | }; | ||
2874 | 2818 | ||
2875 | /** | 2819 | /** |
2876 | * ioc4_serial_init - module init | 2820 | * ioc4_serial_init - module init |
@@ -2886,12 +2830,20 @@ int ioc4_serial_init(void) | |||
2886 | __FUNCTION__); | 2830 | __FUNCTION__); |
2887 | return ret; | 2831 | return ret; |
2888 | } | 2832 | } |
2889 | return 0; | 2833 | |
2834 | /* register with IOC4 main module */ | ||
2835 | return ioc4_register_submodule(&ioc4_serial_submodule); | ||
2836 | } | ||
2837 | |||
2838 | static void __devexit ioc4_serial_exit(void) | ||
2839 | { | ||
2840 | ioc4_unregister_submodule(&ioc4_serial_submodule); | ||
2841 | uart_unregister_driver(&ioc4_uart); | ||
2890 | } | 2842 | } |
2891 | 2843 | ||
2844 | module_init(ioc4_serial_init); | ||
2845 | module_exit(ioc4_serial_exit); | ||
2846 | |||
2892 | MODULE_AUTHOR("Pat Gefre - Silicon Graphics Inc. (SGI) <pfg@sgi.com>"); | 2847 | MODULE_AUTHOR("Pat Gefre - Silicon Graphics Inc. (SGI) <pfg@sgi.com>"); |
2893 | MODULE_DESCRIPTION("Serial PCI driver module for SGI IOC4 Base-IO Card"); | 2848 | MODULE_DESCRIPTION("Serial PCI driver module for SGI IOC4 Base-IO Card"); |
2894 | MODULE_LICENSE("GPL"); | 2849 | MODULE_LICENSE("GPL"); |
2895 | |||
2896 | EXPORT_SYMBOL(ioc4_serial_init); | ||
2897 | EXPORT_SYMBOL(ioc4_serial_attach_one); | ||
diff --git a/drivers/sn/Kconfig b/drivers/sn/Kconfig new file mode 100644 index 000000000000..13b8d249da5c --- /dev/null +++ b/drivers/sn/Kconfig | |||
@@ -0,0 +1,20 @@ | |||
1 | # | ||
2 | # Miscellaneous SN-specific devices | ||
3 | # | ||
4 | |||
5 | menu "SN Devices" | ||
6 | |||
7 | config SGI_IOC4 | ||
8 | tristate "SGI IOC4 Base IO support" | ||
9 | depends on (IA64_GENERIC || IA64_SGI_SN2) && MMTIMER | ||
10 | default m | ||
11 | ---help--- | ||
12 | This option enables basic support for the SGI IOC4-based Base IO | ||
13 | controller card. This option does not enable any specific | ||
14 | functions on such a card, but provides necessary infrastructure | ||
15 | for other drivers to utilize. | ||
16 | |||
17 | If you have an SGI Altix with an IOC4-based | ||
18 | I/O controller say Y. Otherwise say N. | ||
19 | |||
20 | endmenu | ||
diff --git a/drivers/sn/Makefile b/drivers/sn/Makefile index 631e54958448..c2a284185372 100644 --- a/drivers/sn/Makefile +++ b/drivers/sn/Makefile | |||
@@ -3,4 +3,4 @@ | |||
3 | # | 3 | # |
4 | # | 4 | # |
5 | 5 | ||
6 | obj-$(CONFIG_BLK_DEV_SGIIOC4) += ioc4.o | 6 | obj-$(CONFIG_SGI_IOC4) += ioc4.o |
diff --git a/drivers/sn/ioc4.c b/drivers/sn/ioc4.c index d9e4ee280e5f..ea75b3d0612b 100644 --- a/drivers/sn/ioc4.c +++ b/drivers/sn/ioc4.c | |||
@@ -6,60 +6,422 @@ | |||
6 | * Copyright (C) 2005 Silicon Graphics, Inc. All Rights Reserved. | 6 | * Copyright (C) 2005 Silicon Graphics, Inc. All Rights Reserved. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | /* | 9 | /* This file contains the master driver module for use by SGI IOC4 subdrivers. |
10 | * This file contains a shim driver for the IOC4 IDE and serial drivers. | 10 | * |
11 | * It allocates any resources shared between multiple subdevices, and | ||
12 | * provides accessor functions (where needed) and the like for those | ||
13 | * resources. It also provides a mechanism for the subdevice modules | ||
14 | * to support loading and unloading. | ||
15 | * | ||
16 | * Non-shared resources (e.g. external interrupt A_INT_OUT register page | ||
17 | * alias, serial port and UART registers) are handled by the subdevice | ||
18 | * modules themselves. | ||
19 | * | ||
20 | * This is all necessary because IOC4 is not implemented as a multi-function | ||
21 | * PCI device, but an amalgamation of disparate registers for several | ||
22 | * types of device (ATA, serial, external interrupts). The normal | ||
23 | * resource management in the kernel doesn't have quite the right interfaces | ||
24 | * to handle this situation (e.g. multiple modules can't claim the same | ||
25 | * PCI ID), thus this IOC4 master module. | ||
11 | */ | 26 | */ |
12 | 27 | ||
13 | #include <linux/errno.h> | 28 | #include <linux/errno.h> |
14 | #include <linux/module.h> | 29 | #include <linux/module.h> |
15 | #include <linux/pci.h> | 30 | #include <linux/pci.h> |
16 | #include <linux/ioc4_common.h> | 31 | #include <linux/ioc4.h> |
17 | #include <linux/ide.h> | 32 | #include <linux/mmtimer.h> |
33 | #include <linux/rtc.h> | ||
34 | #include <linux/rwsem.h> | ||
35 | #include <asm/sn/addrs.h> | ||
36 | #include <asm/sn/clksupport.h> | ||
37 | #include <asm/sn/shub_mmr.h> | ||
18 | 38 | ||
39 | /*************** | ||
40 | * Definitions * | ||
41 | ***************/ | ||
19 | 42 | ||
20 | static int __devinit | 43 | /* Tweakable values */ |
21 | ioc4_probe_one(struct pci_dev *pdev, const struct pci_device_id *pci_id) | 44 | |
45 | /* PCI bus speed detection/calibration */ | ||
46 | #define IOC4_CALIBRATE_COUNT 63 /* Calibration cycle period */ | ||
47 | #define IOC4_CALIBRATE_CYCLES 256 /* Average over this many cycles */ | ||
48 | #define IOC4_CALIBRATE_DISCARD 2 /* Discard first few cycles */ | ||
49 | #define IOC4_CALIBRATE_LOW_MHZ 25 /* Lower bound on bus speed sanity */ | ||
50 | #define IOC4_CALIBRATE_HIGH_MHZ 75 /* Upper bound on bus speed sanity */ | ||
51 | #define IOC4_CALIBRATE_DEFAULT_MHZ 66 /* Assumed if sanity check fails */ | ||
52 | |||
53 | /************************ | ||
54 | * Submodule management * | ||
55 | ************************/ | ||
56 | |||
57 | static LIST_HEAD(ioc4_devices); | ||
58 | static DECLARE_RWSEM(ioc4_devices_rwsem); | ||
59 | |||
60 | static LIST_HEAD(ioc4_submodules); | ||
61 | static DECLARE_RWSEM(ioc4_submodules_rwsem); | ||
62 | |||
63 | /* Register an IOC4 submodule */ | ||
64 | int | ||
65 | ioc4_register_submodule(struct ioc4_submodule *is) | ||
66 | { | ||
67 | struct ioc4_driver_data *idd; | ||
68 | |||
69 | down_write(&ioc4_submodules_rwsem); | ||
70 | list_add(&is->is_list, &ioc4_submodules); | ||
71 | up_write(&ioc4_submodules_rwsem); | ||
72 | |||
73 | /* Initialize submodule for each IOC4 */ | ||
74 | if (!is->is_probe) | ||
75 | return 0; | ||
76 | |||
77 | down_read(&ioc4_devices_rwsem); | ||
78 | list_for_each_entry(idd, &ioc4_devices, idd_list) { | ||
79 | if (is->is_probe(idd)) { | ||
80 | printk(KERN_WARNING | ||
81 | "%s: IOC4 submodule %s probe failed " | ||
82 | "for pci_dev %s", | ||
83 | __FUNCTION__, module_name(is->is_owner), | ||
84 | pci_name(idd->idd_pdev)); | ||
85 | } | ||
86 | } | ||
87 | up_read(&ioc4_devices_rwsem); | ||
88 | |||
89 | return 0; | ||
90 | } | ||
91 | |||
92 | /* Unregister an IOC4 submodule */ | ||
93 | void | ||
94 | ioc4_unregister_submodule(struct ioc4_submodule *is) | ||
95 | { | ||
96 | struct ioc4_driver_data *idd; | ||
97 | |||
98 | down_write(&ioc4_submodules_rwsem); | ||
99 | list_del(&is->is_list); | ||
100 | up_write(&ioc4_submodules_rwsem); | ||
101 | |||
102 | /* Remove submodule for each IOC4 */ | ||
103 | if (!is->is_remove) | ||
104 | return; | ||
105 | |||
106 | down_read(&ioc4_devices_rwsem); | ||
107 | list_for_each_entry(idd, &ioc4_devices, idd_list) { | ||
108 | if (is->is_remove(idd)) { | ||
109 | printk(KERN_WARNING | ||
110 | "%s: IOC4 submodule %s remove failed " | ||
111 | "for pci_dev %s.\n", | ||
112 | __FUNCTION__, module_name(is->is_owner), | ||
113 | pci_name(idd->idd_pdev)); | ||
114 | } | ||
115 | } | ||
116 | up_read(&ioc4_devices_rwsem); | ||
117 | } | ||
118 | |||
119 | /********************* | ||
120 | * Device management * | ||
121 | *********************/ | ||
122 | |||
123 | #define IOC4_CALIBRATE_LOW_LIMIT \ | ||
124 | (1000*IOC4_EXTINT_COUNT_DIVISOR/IOC4_CALIBRATE_LOW_MHZ) | ||
125 | #define IOC4_CALIBRATE_HIGH_LIMIT \ | ||
126 | (1000*IOC4_EXTINT_COUNT_DIVISOR/IOC4_CALIBRATE_HIGH_MHZ) | ||
127 | #define IOC4_CALIBRATE_DEFAULT \ | ||
128 | (1000*IOC4_EXTINT_COUNT_DIVISOR/IOC4_CALIBRATE_DEFAULT_MHZ) | ||
129 | |||
130 | #define IOC4_CALIBRATE_END \ | ||
131 | (IOC4_CALIBRATE_CYCLES + IOC4_CALIBRATE_DISCARD) | ||
132 | |||
133 | #define IOC4_INT_OUT_MODE_TOGGLE 0x7 /* Toggle INT_OUT every COUNT+1 ticks */ | ||
134 | |||
135 | /* Determines external interrupt output clock period of the PCI bus an | ||
136 | * IOC4 is attached to. This value can be used to determine the PCI | ||
137 | * bus speed. | ||
138 | * | ||
139 | * IOC4 has a design feature that various internal timers are derived from | ||
140 | * the PCI bus clock. This causes IOC4 device drivers to need to take the | ||
141 | * bus speed into account when setting various register values (e.g. INT_OUT | ||
142 | * register COUNT field, UART divisors, etc). Since this information is | ||
143 | * needed by several subdrivers, it is determined by the main IOC4 driver, | ||
144 | * even though the following code utilizes external interrupt registers | ||
145 | * to perform the speed calculation. | ||
146 | */ | ||
147 | static void | ||
148 | ioc4_clock_calibrate(struct ioc4_driver_data *idd) | ||
149 | { | ||
150 | extern unsigned long sn_rtc_cycles_per_second; | ||
151 | union ioc4_int_out int_out; | ||
152 | union ioc4_gpcr gpcr; | ||
153 | unsigned int state, last_state = 1; | ||
154 | uint64_t start = 0, end, period; | ||
155 | unsigned int count = 0; | ||
156 | |||
157 | /* Enable output */ | ||
158 | gpcr.raw = 0; | ||
159 | gpcr.fields.dir = IOC4_GPCR_DIR_0; | ||
160 | gpcr.fields.int_out_en = 1; | ||
161 | writel(gpcr.raw, &idd->idd_misc_regs->gpcr_s.raw); | ||
162 | |||
163 | /* Reset to power-on state */ | ||
164 | writel(0, &idd->idd_misc_regs->int_out.raw); | ||
165 | mmiowb(); | ||
166 | |||
167 | printk(KERN_INFO | ||
168 | "%s: Calibrating PCI bus speed " | ||
169 | "for pci_dev %s ... ", __FUNCTION__, pci_name(idd->idd_pdev)); | ||
170 | /* Set up square wave */ | ||
171 | int_out.raw = 0; | ||
172 | int_out.fields.count = IOC4_CALIBRATE_COUNT; | ||
173 | int_out.fields.mode = IOC4_INT_OUT_MODE_TOGGLE; | ||
174 | int_out.fields.diag = 0; | ||
175 | writel(int_out.raw, &idd->idd_misc_regs->int_out.raw); | ||
176 | mmiowb(); | ||
177 | |||
178 | /* Check square wave period averaged over some number of cycles */ | ||
179 | do { | ||
180 | int_out.raw = readl(&idd->idd_misc_regs->int_out.raw); | ||
181 | state = int_out.fields.int_out; | ||
182 | if (!last_state && state) { | ||
183 | count++; | ||
184 | if (count == IOC4_CALIBRATE_END) { | ||
185 | end = rtc_time(); | ||
186 | break; | ||
187 | } else if (count == IOC4_CALIBRATE_DISCARD) | ||
188 | start = rtc_time(); | ||
189 | } | ||
190 | last_state = state; | ||
191 | } while (1); | ||
192 | |||
193 | /* Calculation rearranged to preserve intermediate precision. | ||
194 | * Logically: | ||
195 | * 1. "end - start" gives us number of RTC cycles over all the | ||
196 | * square wave cycles measured. | ||
197 | * 2. Divide by number of square wave cycles to get number of | ||
198 | * RTC cycles per square wave cycle. | ||
199 | * 3. Divide by 2*(int_out.fields.count+1), which is the formula | ||
200 | * by which the IOC4 generates the square wave, to get the | ||
201 | * number of RTC cycles per IOC4 INT_OUT count. | ||
202 | * 4. Divide by sn_rtc_cycles_per_second to get seconds per | ||
203 | * count. | ||
204 | * 5. Multiply by 1E9 to get nanoseconds per count. | ||
205 | */ | ||
206 | period = ((end - start) * 1000000000) / | ||
207 | (IOC4_CALIBRATE_CYCLES * 2 * (IOC4_CALIBRATE_COUNT + 1) | ||
208 | * sn_rtc_cycles_per_second); | ||
209 | |||
210 | /* Bounds check the result. */ | ||
211 | if (period > IOC4_CALIBRATE_LOW_LIMIT || | ||
212 | period < IOC4_CALIBRATE_HIGH_LIMIT) { | ||
213 | printk("failed. Assuming PCI clock ticks are %d ns.\n", | ||
214 | IOC4_CALIBRATE_DEFAULT / IOC4_EXTINT_COUNT_DIVISOR); | ||
215 | period = IOC4_CALIBRATE_DEFAULT; | ||
216 | } else { | ||
217 | printk("succeeded. PCI clock ticks are %ld ns.\n", | ||
218 | period / IOC4_EXTINT_COUNT_DIVISOR); | ||
219 | } | ||
220 | |||
221 | /* Remember results. We store the extint clock period rather | ||
222 | * than the PCI clock period so that greater precision is | ||
223 | * retained. Divide by IOC4_EXTINT_COUNT_DIVISOR to get | ||
224 | * PCI clock period. | ||
225 | */ | ||
226 | idd->count_period = period; | ||
227 | } | ||
228 | |||
229 | /* Adds a new instance of an IOC4 card */ | ||
230 | static int | ||
231 | ioc4_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | ||
22 | { | 232 | { |
233 | struct ioc4_driver_data *idd; | ||
234 | struct ioc4_submodule *is; | ||
235 | uint32_t pcmd; | ||
23 | int ret; | 236 | int ret; |
24 | 237 | ||
238 | /* Enable IOC4 and take ownership of it */ | ||
25 | if ((ret = pci_enable_device(pdev))) { | 239 | if ((ret = pci_enable_device(pdev))) { |
26 | printk(KERN_WARNING | 240 | printk(KERN_WARNING |
27 | "%s: Failed to enable device with " | 241 | "%s: Failed to enable IOC4 device for pci_dev %s.\n", |
28 | "pci_dev 0x%p... returning\n", | 242 | __FUNCTION__, pci_name(pdev)); |
29 | __FUNCTION__, (void *)pdev); | 243 | goto out; |
30 | return ret; | ||
31 | } | 244 | } |
32 | pci_set_master(pdev); | 245 | pci_set_master(pdev); |
33 | 246 | ||
34 | /* attach each sub-device */ | 247 | /* Set up per-IOC4 data */ |
35 | ret = ioc4_ide_attach_one(pdev, pci_id); | 248 | idd = kmalloc(sizeof(struct ioc4_driver_data), GFP_KERNEL); |
36 | if (ret) | 249 | if (!idd) { |
37 | return ret; | 250 | printk(KERN_WARNING |
38 | return ioc4_serial_attach_one(pdev, pci_id); | 251 | "%s: Failed to allocate IOC4 data for pci_dev %s.\n", |
252 | __FUNCTION__, pci_name(pdev)); | ||
253 | ret = -ENODEV; | ||
254 | goto out_idd; | ||
255 | } | ||
256 | idd->idd_pdev = pdev; | ||
257 | idd->idd_pci_id = pci_id; | ||
258 | |||
259 | /* Map IOC4 misc registers. These are shared between subdevices | ||
260 | * so the main IOC4 module manages them. | ||
261 | */ | ||
262 | idd->idd_bar0 = pci_resource_start(idd->idd_pdev, 0); | ||
263 | if (!idd->idd_bar0) { | ||
264 | printk(KERN_WARNING | ||
265 | "%s: Unable to find IOC4 misc resource " | ||
266 | "for pci_dev %s.\n", | ||
267 | __FUNCTION__, pci_name(idd->idd_pdev)); | ||
268 | ret = -ENODEV; | ||
269 | goto out_pci; | ||
270 | } | ||
271 | if (!request_region(idd->idd_bar0, sizeof(struct ioc4_misc_regs), | ||
272 | "ioc4_misc")) { | ||
273 | printk(KERN_WARNING | ||
274 | "%s: Unable to request IOC4 misc region " | ||
275 | "for pci_dev %s.\n", | ||
276 | __FUNCTION__, pci_name(idd->idd_pdev)); | ||
277 | ret = -ENODEV; | ||
278 | goto out_pci; | ||
279 | } | ||
280 | idd->idd_misc_regs = ioremap(idd->idd_bar0, | ||
281 | sizeof(struct ioc4_misc_regs)); | ||
282 | if (!idd->idd_misc_regs) { | ||
283 | printk(KERN_WARNING | ||
284 | "%s: Unable to remap IOC4 misc region " | ||
285 | "for pci_dev %s.\n", | ||
286 | __FUNCTION__, pci_name(idd->idd_pdev)); | ||
287 | ret = -ENODEV; | ||
288 | goto out_misc_region; | ||
289 | } | ||
290 | |||
291 | /* Failsafe portion of per-IOC4 initialization */ | ||
292 | |||
293 | /* Initialize IOC4 */ | ||
294 | pci_read_config_dword(idd->idd_pdev, PCI_COMMAND, &pcmd); | ||
295 | pci_write_config_dword(idd->idd_pdev, PCI_COMMAND, | ||
296 | pcmd | PCI_COMMAND_PARITY | PCI_COMMAND_SERR); | ||
297 | |||
298 | /* Determine PCI clock */ | ||
299 | ioc4_clock_calibrate(idd); | ||
300 | |||
301 | /* Disable/clear all interrupts. Need to do this here lest | ||
302 | * one submodule request the shared IOC4 IRQ, but interrupt | ||
303 | * is generated by a different subdevice. | ||
304 | */ | ||
305 | /* Disable */ | ||
306 | writel(~0, &idd->idd_misc_regs->other_iec.raw); | ||
307 | writel(~0, &idd->idd_misc_regs->sio_iec); | ||
308 | /* Clear (i.e. acknowledge) */ | ||
309 | writel(~0, &idd->idd_misc_regs->other_ir.raw); | ||
310 | writel(~0, &idd->idd_misc_regs->sio_ir); | ||
311 | |||
312 | /* Track PCI-device specific data */ | ||
313 | idd->idd_serial_data = NULL; | ||
314 | pci_set_drvdata(idd->idd_pdev, idd); | ||
315 | down_write(&ioc4_devices_rwsem); | ||
316 | list_add(&idd->idd_list, &ioc4_devices); | ||
317 | up_write(&ioc4_devices_rwsem); | ||
318 | |||
319 | /* Add this IOC4 to all submodules */ | ||
320 | down_read(&ioc4_submodules_rwsem); | ||
321 | list_for_each_entry(is, &ioc4_submodules, is_list) { | ||
322 | if (is->is_probe && is->is_probe(idd)) { | ||
323 | printk(KERN_WARNING | ||
324 | "%s: IOC4 submodule 0x%s probe failed " | ||
325 | "for pci_dev %s.\n", | ||
326 | __FUNCTION__, module_name(is->is_owner), | ||
327 | pci_name(idd->idd_pdev)); | ||
328 | } | ||
329 | } | ||
330 | up_read(&ioc4_submodules_rwsem); | ||
331 | |||
332 | return 0; | ||
333 | |||
334 | out_misc_region: | ||
335 | release_region(idd->idd_bar0, sizeof(struct ioc4_misc_regs)); | ||
336 | out_pci: | ||
337 | kfree(idd); | ||
338 | out_idd: | ||
339 | pci_disable_device(pdev); | ||
340 | out: | ||
341 | return ret; | ||
39 | } | 342 | } |
40 | 343 | ||
41 | /* pci device struct */ | 344 | /* Removes a particular instance of an IOC4 card. */ |
42 | static struct pci_device_id ioc4_s_id_table[] = { | 345 | static void |
346 | ioc4_remove(struct pci_dev *pdev) | ||
347 | { | ||
348 | struct ioc4_submodule *is; | ||
349 | struct ioc4_driver_data *idd; | ||
350 | |||
351 | idd = pci_get_drvdata(pdev); | ||
352 | |||
353 | /* Remove this IOC4 from all submodules */ | ||
354 | down_read(&ioc4_submodules_rwsem); | ||
355 | list_for_each_entry(is, &ioc4_submodules, is_list) { | ||
356 | if (is->is_remove && is->is_remove(idd)) { | ||
357 | printk(KERN_WARNING | ||
358 | "%s: IOC4 submodule 0x%s remove failed " | ||
359 | "for pci_dev %s.\n", | ||
360 | __FUNCTION__, module_name(is->is_owner), | ||
361 | pci_name(idd->idd_pdev)); | ||
362 | } | ||
363 | } | ||
364 | up_read(&ioc4_submodules_rwsem); | ||
365 | |||
366 | /* Release resources */ | ||
367 | iounmap(idd->idd_misc_regs); | ||
368 | if (!idd->idd_bar0) { | ||
369 | printk(KERN_WARNING | ||
370 | "%s: Unable to get IOC4 misc mapping for pci_dev %s. " | ||
371 | "Device removal may be incomplete.\n", | ||
372 | __FUNCTION__, pci_name(idd->idd_pdev)); | ||
373 | } | ||
374 | release_region(idd->idd_bar0, sizeof(struct ioc4_misc_regs)); | ||
375 | |||
376 | /* Disable IOC4 and relinquish */ | ||
377 | pci_disable_device(pdev); | ||
378 | |||
379 | /* Remove and free driver data */ | ||
380 | down_write(&ioc4_devices_rwsem); | ||
381 | list_del(&idd->idd_list); | ||
382 | up_write(&ioc4_devices_rwsem); | ||
383 | kfree(idd); | ||
384 | } | ||
385 | |||
386 | static struct pci_device_id ioc4_id_table[] = { | ||
43 | {PCI_VENDOR_ID_SGI, PCI_DEVICE_ID_SGI_IOC4, PCI_ANY_ID, | 387 | {PCI_VENDOR_ID_SGI, PCI_DEVICE_ID_SGI_IOC4, PCI_ANY_ID, |
44 | PCI_ANY_ID, 0x0b4000, 0xFFFFFF}, | 388 | PCI_ANY_ID, 0x0b4000, 0xFFFFFF}, |
45 | {0} | 389 | {0} |
46 | }; | 390 | }; |
47 | MODULE_DEVICE_TABLE(pci, ioc4_s_id_table); | ||
48 | 391 | ||
49 | static struct pci_driver __devinitdata ioc4_s_driver = { | 392 | static struct pci_driver __devinitdata ioc4_driver = { |
50 | .name = "IOC4", | 393 | .name = "IOC4", |
51 | .id_table = ioc4_s_id_table, | 394 | .id_table = ioc4_id_table, |
52 | .probe = ioc4_probe_one, | 395 | .probe = ioc4_probe, |
396 | .remove = ioc4_remove, | ||
53 | }; | 397 | }; |
54 | 398 | ||
55 | static int __devinit ioc4_detect(void) | 399 | MODULE_DEVICE_TABLE(pci, ioc4_id_table); |
400 | |||
401 | /********************* | ||
402 | * Module management * | ||
403 | *********************/ | ||
404 | |||
405 | /* Module load */ | ||
406 | static int __devinit | ||
407 | ioc4_init(void) | ||
56 | { | 408 | { |
57 | ioc4_serial_init(); | 409 | return pci_register_driver(&ioc4_driver); |
410 | } | ||
58 | 411 | ||
59 | return pci_register_driver(&ioc4_s_driver); | 412 | /* Module unload */ |
413 | static void __devexit | ||
414 | ioc4_exit(void) | ||
415 | { | ||
416 | pci_unregister_driver(&ioc4_driver); | ||
60 | } | 417 | } |
61 | module_init(ioc4_detect); | ||
62 | 418 | ||
63 | MODULE_AUTHOR("Pat Gefre - Silicon Graphics Inc. (SGI) <pfg@sgi.com>"); | 419 | module_init(ioc4_init); |
64 | MODULE_DESCRIPTION("PCI driver module for SGI IOC4 Base-IO Card"); | 420 | module_exit(ioc4_exit); |
421 | |||
422 | MODULE_AUTHOR("Brent Casavant - Silicon Graphics, Inc. <bcasavan@sgi.com>"); | ||
423 | MODULE_DESCRIPTION("PCI driver master module for SGI IOC4 Base-IO Card"); | ||
65 | MODULE_LICENSE("GPL"); | 424 | MODULE_LICENSE("GPL"); |
425 | |||
426 | EXPORT_SYMBOL(ioc4_register_submodule); | ||
427 | EXPORT_SYMBOL(ioc4_unregister_submodule); | ||
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 6be8fbec0a0e..04d3120f7236 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
@@ -322,6 +322,22 @@ config FB_FM2 | |||
322 | This is the frame buffer device driver for the Amiga FrameMaster | 322 | This is the frame buffer device driver for the Amiga FrameMaster |
323 | card from BSC (exhibited 1992 but not shipped as a CBM product). | 323 | card from BSC (exhibited 1992 but not shipped as a CBM product). |
324 | 324 | ||
325 | config FB_ARC | ||
326 | tristate "Arc Monochrome LCD board support" | ||
327 | depends on FB && X86 | ||
328 | select FB_CFB_FILLRECT | ||
329 | select FB_CFB_COPYAREA | ||
330 | select FB_CFB_IMAGEBLIT | ||
331 | select FB_SOFT_CURSOR | ||
332 | help | ||
333 | This enables support for the Arc Monochrome LCD board. The board | ||
334 | is based on the KS-108 lcd controller and is typically a matrix | ||
335 | of 2*n chips. This driver was tested with a 128x64 panel. This | ||
336 | driver supports it for use with x86 SBCs through a 16 bit GPIO | ||
337 | interface (8 bit data, 8 bit control). If you anticpate using | ||
338 | this driver, say Y or M; otherwise say N. You must specify the | ||
339 | GPIO IO address to be used for setting control and data. | ||
340 | |||
325 | config FB_ATARI | 341 | config FB_ATARI |
326 | bool "Atari native chipset support" | 342 | bool "Atari native chipset support" |
327 | depends on (FB = y) && ATARI && BROKEN | 343 | depends on (FB = y) && ATARI && BROKEN |
diff --git a/drivers/video/Makefile b/drivers/video/Makefile index bd8dc0ffe723..b018df4e95c8 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile | |||
@@ -21,6 +21,7 @@ obj-$(CONFIG_FB_MACMODES) += macmodes.o | |||
21 | # Hardware specific drivers go first | 21 | # Hardware specific drivers go first |
22 | obj-$(CONFIG_FB_RETINAZ3) += retz3fb.o | 22 | obj-$(CONFIG_FB_RETINAZ3) += retz3fb.o |
23 | obj-$(CONFIG_FB_AMIGA) += amifb.o c2p.o | 23 | obj-$(CONFIG_FB_AMIGA) += amifb.o c2p.o |
24 | obj-$(CONFIG_FB_ARC) += arcfb.o | ||
24 | obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o | 25 | obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o |
25 | obj-$(CONFIG_FB_CYBER) += cyberfb.o | 26 | obj-$(CONFIG_FB_CYBER) += cyberfb.o |
26 | obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o | 27 | obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o |
diff --git a/drivers/video/arcfb.c b/drivers/video/arcfb.c new file mode 100644 index 000000000000..d28457e0c063 --- /dev/null +++ b/drivers/video/arcfb.c | |||
@@ -0,0 +1,684 @@ | |||
1 | /* | ||
2 | * linux/drivers/video/arcfb.c -- FB driver for Arc monochrome LCD board | ||
3 | * | ||
4 | * Copyright (C) 2005, Jaya Kumar <jayalk@intworks.biz> | ||
5 | * http://www.intworks.biz/arclcd | ||
6 | * | ||
7 | * This file is subject to the terms and conditions of the GNU General Public | ||
8 | * License. See the file COPYING in the main directory of this archive for | ||
9 | * more details. | ||
10 | * | ||
11 | * Layout is based on skeletonfb.c by James Simmons and Geert Uytterhoeven. | ||
12 | * | ||
13 | * This driver was written to be used with the Arc LCD board. Arc uses a | ||
14 | * set of KS108 chips that control individual 64x64 LCD matrices. The board | ||
15 | * can be paneled in a variety of setups such as 2x1=128x64, 4x4=256x256 and | ||
16 | * so on. The interface between the board and the host is TTL based GPIO. The | ||
17 | * GPIO requirements are 8 writable data lines and 4+n lines for control. On a | ||
18 | * GPIO-less system, the board can be tested by connecting the respective sigs | ||
19 | * up to a parallel port connector. The driver requires the IO addresses for | ||
20 | * data and control GPIO at load time. It is unable to probe for the | ||
21 | * existence of the LCD so it must be told at load time whether it should | ||
22 | * be enabled or not. | ||
23 | * | ||
24 | * Todo: | ||
25 | * - testing with 4x4 | ||
26 | * - testing with interrupt hw | ||
27 | * | ||
28 | * General notes: | ||
29 | * - User must set tuhold. It's in microseconds. According to the 108 spec, | ||
30 | * the hold time is supposed to be at least 1 microsecond. | ||
31 | * - User must set num_cols=x num_rows=y, eg: x=2 means 128 | ||
32 | * - User must set arcfb_enable=1 to enable it | ||
33 | * - User must set dio_addr=0xIOADDR cio_addr=0xIOADDR | ||
34 | * | ||
35 | */ | ||
36 | |||
37 | #include <linux/module.h> | ||
38 | #include <linux/kernel.h> | ||
39 | #include <linux/errno.h> | ||
40 | #include <linux/string.h> | ||
41 | #include <linux/mm.h> | ||
42 | #include <linux/tty.h> | ||
43 | #include <linux/slab.h> | ||
44 | #include <linux/vmalloc.h> | ||
45 | #include <linux/delay.h> | ||
46 | #include <linux/interrupt.h> | ||
47 | #include <linux/fb.h> | ||
48 | #include <linux/init.h> | ||
49 | #include <linux/arcfb.h> | ||
50 | |||
51 | #include <asm/uaccess.h> | ||
52 | |||
53 | #define floor8(a) (a&(~0x07)) | ||
54 | #define floorXres(a,xres) (a&(~(xres - 1))) | ||
55 | #define iceil8(a) (((int)((a+7)/8))*8) | ||
56 | #define ceil64(a) (a|0x3F) | ||
57 | #define ceilXres(a,xres) (a|(xres - 1)) | ||
58 | |||
59 | /* ks108 chipset specific defines and code */ | ||
60 | |||
61 | #define KS_SET_DPY_START_LINE 0xC0 | ||
62 | #define KS_SET_PAGE_NUM 0xB8 | ||
63 | #define KS_SET_X 0x40 | ||
64 | #define KS_CEHI 0x01 | ||
65 | #define KS_CELO 0x00 | ||
66 | #define KS_SEL_CMD 0x08 | ||
67 | #define KS_SEL_DATA 0x00 | ||
68 | #define KS_DPY_ON 0x3F | ||
69 | #define KS_DPY_OFF 0x3E | ||
70 | #define KS_INTACK 0x40 | ||
71 | #define KS_CLRINT 0x02 | ||
72 | |||
73 | struct arcfb_par { | ||
74 | unsigned long dio_addr; | ||
75 | unsigned long cio_addr; | ||
76 | unsigned long c2io_addr; | ||
77 | atomic_t ref_count; | ||
78 | unsigned char cslut[9]; | ||
79 | struct fb_info *info; | ||
80 | unsigned int irq; | ||
81 | spinlock_t lock; | ||
82 | }; | ||
83 | |||
84 | static struct fb_fix_screeninfo arcfb_fix __initdata = { | ||
85 | .id = "arcfb", | ||
86 | .type = FB_TYPE_PACKED_PIXELS, | ||
87 | .visual = FB_VISUAL_MONO01, | ||
88 | .xpanstep = 0, | ||
89 | .ypanstep = 1, | ||
90 | .ywrapstep = 0, | ||
91 | .accel = FB_ACCEL_NONE, | ||
92 | }; | ||
93 | |||
94 | static struct fb_var_screeninfo arcfb_var __initdata = { | ||
95 | .xres = 128, | ||
96 | .yres = 64, | ||
97 | .xres_virtual = 128, | ||
98 | .yres_virtual = 64, | ||
99 | .bits_per_pixel = 1, | ||
100 | .nonstd = 1, | ||
101 | }; | ||
102 | |||
103 | static unsigned long num_cols; | ||
104 | static unsigned long num_rows; | ||
105 | static unsigned long dio_addr; | ||
106 | static unsigned long cio_addr; | ||
107 | static unsigned long c2io_addr; | ||
108 | static unsigned long splashval; | ||
109 | static unsigned long tuhold; | ||
110 | static unsigned int nosplash; | ||
111 | static unsigned int arcfb_enable; | ||
112 | static unsigned int irq; | ||
113 | |||
114 | static DECLARE_WAIT_QUEUE_HEAD(arcfb_waitq); | ||
115 | |||
116 | static void ks108_writeb_ctl(struct arcfb_par *par, | ||
117 | unsigned int chipindex, unsigned char value) | ||
118 | { | ||
119 | unsigned char chipselval = par->cslut[chipindex]; | ||
120 | |||
121 | outb(chipselval|KS_CEHI|KS_SEL_CMD, par->cio_addr); | ||
122 | outb(value, par->dio_addr); | ||
123 | udelay(tuhold); | ||
124 | outb(chipselval|KS_CELO|KS_SEL_CMD, par->cio_addr); | ||
125 | } | ||
126 | |||
127 | static void ks108_writeb_mainctl(struct arcfb_par *par, unsigned char value) | ||
128 | { | ||
129 | |||
130 | outb(value, par->cio_addr); | ||
131 | udelay(tuhold); | ||
132 | } | ||
133 | |||
134 | static unsigned char ks108_readb_ctl2(struct arcfb_par *par) | ||
135 | { | ||
136 | return inb(par->c2io_addr); | ||
137 | } | ||
138 | |||
139 | static void ks108_writeb_data(struct arcfb_par *par, | ||
140 | unsigned int chipindex, unsigned char value) | ||
141 | { | ||
142 | unsigned char chipselval = par->cslut[chipindex]; | ||
143 | |||
144 | outb(chipselval|KS_CEHI|KS_SEL_DATA, par->cio_addr); | ||
145 | outb(value, par->dio_addr); | ||
146 | udelay(tuhold); | ||
147 | outb(chipselval|KS_CELO|KS_SEL_DATA, par->cio_addr); | ||
148 | } | ||
149 | |||
150 | static void ks108_set_start_line(struct arcfb_par *par, | ||
151 | unsigned int chipindex, unsigned char y) | ||
152 | { | ||
153 | ks108_writeb_ctl(par, chipindex, KS_SET_DPY_START_LINE|y); | ||
154 | } | ||
155 | |||
156 | static void ks108_set_yaddr(struct arcfb_par *par, | ||
157 | unsigned int chipindex, unsigned char y) | ||
158 | { | ||
159 | ks108_writeb_ctl(par, chipindex, KS_SET_PAGE_NUM|y); | ||
160 | } | ||
161 | |||
162 | static void ks108_set_xaddr(struct arcfb_par *par, | ||
163 | unsigned int chipindex, unsigned char x) | ||
164 | { | ||
165 | ks108_writeb_ctl(par, chipindex, KS_SET_X|x); | ||
166 | } | ||
167 | |||
168 | static void ks108_clear_lcd(struct arcfb_par *par, unsigned int chipindex) | ||
169 | { | ||
170 | int i,j; | ||
171 | |||
172 | for (i = 0; i <= 8; i++) { | ||
173 | ks108_set_yaddr(par, chipindex, i); | ||
174 | ks108_set_xaddr(par, chipindex, 0); | ||
175 | for (j = 0; j < 64; j++) { | ||
176 | ks108_writeb_data(par, chipindex, | ||
177 | (unsigned char) splashval); | ||
178 | } | ||
179 | } | ||
180 | } | ||
181 | |||
182 | /* main arcfb functions */ | ||
183 | |||
184 | static int arcfb_open(struct fb_info *info, int user) | ||
185 | { | ||
186 | struct arcfb_par *par = info->par; | ||
187 | |||
188 | atomic_inc(&par->ref_count); | ||
189 | return 0; | ||
190 | } | ||
191 | |||
192 | static int arcfb_release(struct fb_info *info, int user) | ||
193 | { | ||
194 | struct arcfb_par *par = info->par; | ||
195 | int count = atomic_read(&par->ref_count); | ||
196 | |||
197 | if (!count) | ||
198 | return -EINVAL; | ||
199 | atomic_dec(&par->ref_count); | ||
200 | return 0; | ||
201 | } | ||
202 | |||
203 | static int arcfb_pan_display(struct fb_var_screeninfo *var, | ||
204 | struct fb_info *info) | ||
205 | { | ||
206 | int i; | ||
207 | struct arcfb_par *par = info->par; | ||
208 | |||
209 | if ((var->vmode & FB_VMODE_YWRAP) && (var->yoffset < 64) | ||
210 | && (info->var.yres <= 64)) { | ||
211 | for (i = 0; i < num_cols; i++) { | ||
212 | ks108_set_start_line(par, i, var->yoffset); | ||
213 | } | ||
214 | info->var.yoffset = var->yoffset; | ||
215 | return 0; | ||
216 | } | ||
217 | |||
218 | return -EINVAL; | ||
219 | } | ||
220 | |||
221 | static irqreturn_t arcfb_interrupt(int vec, void *dev_instance, | ||
222 | struct pt_regs *regs) | ||
223 | { | ||
224 | struct fb_info *info = dev_instance; | ||
225 | unsigned char ctl2status; | ||
226 | struct arcfb_par *par = info->par; | ||
227 | |||
228 | ctl2status = ks108_readb_ctl2(par); | ||
229 | |||
230 | if (!(ctl2status & KS_INTACK)) /* not arc generated interrupt */ | ||
231 | return IRQ_NONE; | ||
232 | |||
233 | ks108_writeb_mainctl(par, KS_CLRINT); | ||
234 | |||
235 | spin_lock(&par->lock); | ||
236 | if (waitqueue_active(&arcfb_waitq)) { | ||
237 | wake_up(&arcfb_waitq); | ||
238 | } | ||
239 | spin_unlock(&par->lock); | ||
240 | |||
241 | return IRQ_HANDLED; | ||
242 | } | ||
243 | |||
244 | /* | ||
245 | * here we handle a specific page on the lcd. the complexity comes from | ||
246 | * the fact that the fb is laidout in 8xX vertical columns. we extract | ||
247 | * each write of 8 vertical pixels. then we shift out as we move along | ||
248 | * X. That's what rightshift does. bitmask selects the desired input bit. | ||
249 | */ | ||
250 | static void arcfb_lcd_update_page(struct arcfb_par *par, unsigned int upper, | ||
251 | unsigned int left, unsigned int right, unsigned int distance) | ||
252 | { | ||
253 | unsigned char *src; | ||
254 | unsigned int xindex, yindex, chipindex, linesize; | ||
255 | int i, count; | ||
256 | unsigned char val; | ||
257 | unsigned char bitmask, rightshift; | ||
258 | |||
259 | xindex = left >> 6; | ||
260 | yindex = upper >> 6; | ||
261 | chipindex = (xindex + (yindex*num_cols)); | ||
262 | |||
263 | ks108_set_yaddr(par, chipindex, upper/8); | ||
264 | |||
265 | linesize = par->info->var.xres/8; | ||
266 | src = par->info->screen_base + (left/8) + (upper * linesize); | ||
267 | ks108_set_xaddr(par, chipindex, left); | ||
268 | |||
269 | bitmask=1; | ||
270 | rightshift=0; | ||
271 | while (left <= right) { | ||
272 | val = 0; | ||
273 | for (i = 0; i < 8; i++) { | ||
274 | if ( i > rightshift) { | ||
275 | val |= (*(src + (i*linesize)) & bitmask) | ||
276 | << (i - rightshift); | ||
277 | } else { | ||
278 | val |= (*(src + (i*linesize)) & bitmask) | ||
279 | >> (rightshift - i); | ||
280 | } | ||
281 | } | ||
282 | ks108_writeb_data(par, chipindex, val); | ||
283 | left++; | ||
284 | count++; | ||
285 | if (bitmask == 0x80) { | ||
286 | bitmask = 1; | ||
287 | src++; | ||
288 | rightshift=0; | ||
289 | } else { | ||
290 | bitmask <<= 1; | ||
291 | rightshift++; | ||
292 | } | ||
293 | } | ||
294 | } | ||
295 | |||
296 | /* | ||
297 | * here we handle the entire vertical page of the update. we write across | ||
298 | * lcd chips. update_page uses the upper/left values to decide which | ||
299 | * chip to select for the right. upper is needed for setting the page | ||
300 | * desired for the write. | ||
301 | */ | ||
302 | static void arcfb_lcd_update_vert(struct arcfb_par *par, unsigned int top, | ||
303 | unsigned int bottom, unsigned int left, unsigned int right) | ||
304 | { | ||
305 | unsigned int distance, upper, lower; | ||
306 | |||
307 | distance = (bottom - top) + 1; | ||
308 | upper = top; | ||
309 | lower = top + 7; | ||
310 | |||
311 | while (distance > 0) { | ||
312 | distance -= 8; | ||
313 | arcfb_lcd_update_page(par, upper, left, right, 8); | ||
314 | upper = lower + 1; | ||
315 | lower = upper + 7; | ||
316 | } | ||
317 | } | ||
318 | |||
319 | /* | ||
320 | * here we handle horizontal blocks for the update. update_vert will | ||
321 | * handle spaning multiple pages. we break out each horizontal | ||
322 | * block in to individual blocks no taller than 64 pixels. | ||
323 | */ | ||
324 | static void arcfb_lcd_update_horiz(struct arcfb_par *par, unsigned int left, | ||
325 | unsigned int right, unsigned int top, unsigned int h) | ||
326 | { | ||
327 | unsigned int distance, upper, lower; | ||
328 | |||
329 | distance = h; | ||
330 | upper = floor8(top); | ||
331 | lower = min(upper + distance - 1, ceil64(upper)); | ||
332 | |||
333 | while (distance > 0) { | ||
334 | distance -= ((lower - upper) + 1 ); | ||
335 | arcfb_lcd_update_vert(par, upper, lower, left, right); | ||
336 | upper = lower + 1; | ||
337 | lower = min(upper + distance - 1, ceil64(upper)); | ||
338 | } | ||
339 | } | ||
340 | |||
341 | /* | ||
342 | * here we start the process of spliting out the fb update into | ||
343 | * individual blocks of pixels. we end up spliting into 64x64 blocks | ||
344 | * and finally down to 64x8 pages. | ||
345 | */ | ||
346 | static void arcfb_lcd_update(struct arcfb_par *par, unsigned int dx, | ||
347 | unsigned int dy, unsigned int w, unsigned int h) | ||
348 | { | ||
349 | unsigned int left, right, distance, y; | ||
350 | |||
351 | /* align the request first */ | ||
352 | y = floor8(dy); | ||
353 | h += dy - y; | ||
354 | h = iceil8(h); | ||
355 | |||
356 | distance = w; | ||
357 | left = dx; | ||
358 | right = min(left + w - 1, ceil64(left)); | ||
359 | |||
360 | while (distance > 0) { | ||
361 | arcfb_lcd_update_horiz(par, left, right, y, h); | ||
362 | distance -= ((right - left) + 1); | ||
363 | left = right + 1; | ||
364 | right = min(left + distance - 1, ceil64(left)); | ||
365 | } | ||
366 | } | ||
367 | |||
368 | void arcfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) | ||
369 | { | ||
370 | struct arcfb_par *par = info->par; | ||
371 | |||
372 | cfb_fillrect(info, rect); | ||
373 | |||
374 | /* update the physical lcd */ | ||
375 | arcfb_lcd_update(par, rect->dx, rect->dy, rect->width, rect->height); | ||
376 | } | ||
377 | |||
378 | void arcfb_copyarea(struct fb_info *info, const struct fb_copyarea *area) | ||
379 | { | ||
380 | struct arcfb_par *par = info->par; | ||
381 | |||
382 | cfb_copyarea(info, area); | ||
383 | |||
384 | /* update the physical lcd */ | ||
385 | arcfb_lcd_update(par, area->dx, area->dy, area->width, area->height); | ||
386 | } | ||
387 | |||
388 | void arcfb_imageblit(struct fb_info *info, const struct fb_image *image) | ||
389 | { | ||
390 | struct arcfb_par *par = info->par; | ||
391 | |||
392 | cfb_imageblit(info, image); | ||
393 | |||
394 | /* update the physical lcd */ | ||
395 | arcfb_lcd_update(par, image->dx, image->dy, image->width, | ||
396 | image->height); | ||
397 | } | ||
398 | |||
399 | static int arcfb_ioctl(struct inode *inode, struct file *file, | ||
400 | unsigned int cmd, unsigned long arg, | ||
401 | struct fb_info *info) | ||
402 | { | ||
403 | void __user *argp = (void __user *)arg; | ||
404 | struct arcfb_par *par = info->par; | ||
405 | unsigned long flags; | ||
406 | |||
407 | switch (cmd) { | ||
408 | case FBIO_WAITEVENT: | ||
409 | { | ||
410 | DEFINE_WAIT(wait); | ||
411 | /* illegal to wait on arc if no irq will occur */ | ||
412 | if (!par->irq) | ||
413 | return -EINVAL; | ||
414 | |||
415 | /* wait until the Arc has generated an interrupt | ||
416 | * which will wake us up */ | ||
417 | spin_lock_irqsave(&par->lock, flags); | ||
418 | prepare_to_wait(&arcfb_waitq, &wait, | ||
419 | TASK_INTERRUPTIBLE); | ||
420 | spin_unlock_irqrestore(&par->lock, flags); | ||
421 | schedule(); | ||
422 | finish_wait(&arcfb_waitq, &wait); | ||
423 | } | ||
424 | case FBIO_GETCONTROL2: | ||
425 | { | ||
426 | unsigned char ctl2; | ||
427 | |||
428 | ctl2 = ks108_readb_ctl2(info->par); | ||
429 | if (copy_to_user(argp, &ctl2, sizeof(ctl2))) | ||
430 | return -EFAULT; | ||
431 | return 0; | ||
432 | } | ||
433 | default: | ||
434 | return -EINVAL; | ||
435 | } | ||
436 | } | ||
437 | |||
438 | /* | ||
439 | * this is the access path from userspace. they can seek and write to | ||
440 | * the fb. it's inefficient for them to do anything less than 64*8 | ||
441 | * writes since we update the lcd in each write() anyway. | ||
442 | */ | ||
443 | static ssize_t arcfb_write(struct file *file, const char *buf, size_t count, | ||
444 | loff_t *ppos) | ||
445 | { | ||
446 | /* modded from epson 1355 */ | ||
447 | |||
448 | struct inode *inode; | ||
449 | int fbidx; | ||
450 | struct fb_info *info; | ||
451 | unsigned long p; | ||
452 | int err=-EINVAL; | ||
453 | unsigned int fbmemlength,x,y,w,h, bitppos, startpos, endpos, bitcount; | ||
454 | struct arcfb_par *par; | ||
455 | unsigned int xres; | ||
456 | |||
457 | p = *ppos; | ||
458 | inode = file->f_dentry->d_inode; | ||
459 | fbidx = iminor(inode); | ||
460 | info = registered_fb[fbidx]; | ||
461 | par = info->par; | ||
462 | |||
463 | if (!info || !info->screen_base) | ||
464 | return -ENODEV; | ||
465 | |||
466 | xres = info->var.xres; | ||
467 | fbmemlength = (xres * info->var.yres)/8; | ||
468 | |||
469 | if (p > fbmemlength) | ||
470 | return -ENOSPC; | ||
471 | |||
472 | err = 0; | ||
473 | if ((count + p) > fbmemlength) { | ||
474 | count = fbmemlength - p; | ||
475 | err = -ENOSPC; | ||
476 | } | ||
477 | |||
478 | if (count) { | ||
479 | char *base_addr; | ||
480 | |||
481 | base_addr = info->screen_base; | ||
482 | count -= copy_from_user(base_addr + p, buf, count); | ||
483 | *ppos += count; | ||
484 | err = -EFAULT; | ||
485 | } | ||
486 | |||
487 | |||
488 | bitppos = p*8; | ||
489 | startpos = floorXres(bitppos, xres); | ||
490 | endpos = ceilXres((bitppos + (count*8)), xres); | ||
491 | bitcount = endpos - startpos; | ||
492 | |||
493 | x = startpos % xres; | ||
494 | y = startpos / xres; | ||
495 | w = xres; | ||
496 | h = bitcount / xres; | ||
497 | arcfb_lcd_update(par, x, y, w, h); | ||
498 | |||
499 | if (count) | ||
500 | return count; | ||
501 | return err; | ||
502 | } | ||
503 | |||
504 | static void arcfb_platform_release(struct device *device) | ||
505 | { | ||
506 | } | ||
507 | |||
508 | static struct fb_ops arcfb_ops = { | ||
509 | .owner = THIS_MODULE, | ||
510 | .fb_open = arcfb_open, | ||
511 | .fb_write = arcfb_write, | ||
512 | .fb_release = arcfb_release, | ||
513 | .fb_pan_display = arcfb_pan_display, | ||
514 | .fb_fillrect = arcfb_fillrect, | ||
515 | .fb_copyarea = arcfb_copyarea, | ||
516 | .fb_imageblit = arcfb_imageblit, | ||
517 | .fb_cursor = soft_cursor, | ||
518 | .fb_ioctl = arcfb_ioctl, | ||
519 | }; | ||
520 | |||
521 | static int __init arcfb_probe(struct device *device) | ||
522 | { | ||
523 | struct platform_device *dev = to_platform_device(device); | ||
524 | struct fb_info *info; | ||
525 | int retval = -ENOMEM; | ||
526 | int videomemorysize; | ||
527 | unsigned char *videomemory; | ||
528 | struct arcfb_par *par; | ||
529 | int i; | ||
530 | |||
531 | videomemorysize = (((64*64)*num_cols)*num_rows)/8; | ||
532 | |||
533 | /* We need a flat backing store for the Arc's | ||
534 | less-flat actual paged framebuffer */ | ||
535 | if (!(videomemory = vmalloc(videomemorysize))) | ||
536 | return retval; | ||
537 | |||
538 | memset(videomemory, 0, videomemorysize); | ||
539 | |||
540 | info = framebuffer_alloc(sizeof(struct arcfb_par), &dev->dev); | ||
541 | if (!info) | ||
542 | goto err; | ||
543 | |||
544 | info->screen_base = (char __iomem *)videomemory; | ||
545 | info->fbops = &arcfb_ops; | ||
546 | |||
547 | info->var = arcfb_var; | ||
548 | info->fix = arcfb_fix; | ||
549 | par = info->par; | ||
550 | par->info = info; | ||
551 | |||
552 | if (!dio_addr || !cio_addr || !c2io_addr) { | ||
553 | printk(KERN_WARNING "no IO addresses supplied\n"); | ||
554 | goto err1; | ||
555 | } | ||
556 | par->dio_addr = dio_addr; | ||
557 | par->cio_addr = cio_addr; | ||
558 | par->c2io_addr = c2io_addr; | ||
559 | par->cslut[0] = 0x00; | ||
560 | par->cslut[1] = 0x06; | ||
561 | info->flags = FBINFO_FLAG_DEFAULT; | ||
562 | spin_lock_init(&par->lock); | ||
563 | retval = register_framebuffer(info); | ||
564 | if (retval < 0) | ||
565 | goto err1; | ||
566 | dev_set_drvdata(&dev->dev, info); | ||
567 | if (irq) { | ||
568 | par->irq = irq; | ||
569 | if (request_irq(par->irq, &arcfb_interrupt, SA_SHIRQ, | ||
570 | "arcfb", info)) { | ||
571 | printk(KERN_INFO | ||
572 | "arcfb: Failed req IRQ %d\n", par->irq); | ||
573 | goto err1; | ||
574 | } | ||
575 | } | ||
576 | printk(KERN_INFO | ||
577 | "fb%d: Arc frame buffer device, using %dK of video memory\n", | ||
578 | info->node, videomemorysize >> 10); | ||
579 | |||
580 | /* this inits the lcd but doesn't clear dirty pixels */ | ||
581 | for (i = 0; i < num_cols * num_rows; i++) { | ||
582 | ks108_writeb_ctl(par, i, KS_DPY_OFF); | ||
583 | ks108_set_start_line(par, i, 0); | ||
584 | ks108_set_yaddr(par, i, 0); | ||
585 | ks108_set_xaddr(par, i, 0); | ||
586 | ks108_writeb_ctl(par, i, KS_DPY_ON); | ||
587 | } | ||
588 | |||
589 | /* if we were told to splash the screen, we just clear it */ | ||
590 | if (!nosplash) { | ||
591 | for (i = 0; i < num_cols * num_rows; i++) { | ||
592 | printk(KERN_INFO "fb%d: splashing lcd %d\n", | ||
593 | info->node, i); | ||
594 | ks108_set_start_line(par, i, 0); | ||
595 | ks108_clear_lcd(par, i); | ||
596 | } | ||
597 | } | ||
598 | |||
599 | return 0; | ||
600 | err1: | ||
601 | framebuffer_release(info); | ||
602 | err: | ||
603 | vfree(videomemory); | ||
604 | return retval; | ||
605 | } | ||
606 | |||
607 | static int arcfb_remove(struct device *device) | ||
608 | { | ||
609 | struct fb_info *info = dev_get_drvdata(device); | ||
610 | |||
611 | if (info) { | ||
612 | unregister_framebuffer(info); | ||
613 | vfree(info->screen_base); | ||
614 | framebuffer_release(info); | ||
615 | } | ||
616 | return 0; | ||
617 | } | ||
618 | |||
619 | static struct device_driver arcfb_driver = { | ||
620 | .name = "arcfb", | ||
621 | .bus = &platform_bus_type, | ||
622 | .probe = arcfb_probe, | ||
623 | .remove = arcfb_remove, | ||
624 | }; | ||
625 | |||
626 | static struct platform_device arcfb_device = { | ||
627 | .name = "arcfb", | ||
628 | .id = 0, | ||
629 | .dev = { | ||
630 | .release = arcfb_platform_release, | ||
631 | } | ||
632 | }; | ||
633 | |||
634 | static int __init arcfb_init(void) | ||
635 | { | ||
636 | int ret; | ||
637 | |||
638 | if (!arcfb_enable) | ||
639 | return -ENXIO; | ||
640 | |||
641 | ret = driver_register(&arcfb_driver); | ||
642 | if (!ret) { | ||
643 | ret = platform_device_register(&arcfb_device); | ||
644 | if (ret) | ||
645 | driver_unregister(&arcfb_driver); | ||
646 | } | ||
647 | return ret; | ||
648 | |||
649 | } | ||
650 | |||
651 | static void __exit arcfb_exit(void) | ||
652 | { | ||
653 | platform_device_unregister(&arcfb_device); | ||
654 | driver_unregister(&arcfb_driver); | ||
655 | } | ||
656 | |||
657 | module_param(num_cols, ulong, 0); | ||
658 | MODULE_PARM_DESC(num_cols, "Num horiz panels, eg: 2 = 128 bit wide"); | ||
659 | module_param(num_rows, ulong, 0); | ||
660 | MODULE_PARM_DESC(num_rows, "Num vert panels, eg: 1 = 64 bit high"); | ||
661 | module_param(nosplash, uint, 0); | ||
662 | MODULE_PARM_DESC(nosplash, "Disable doing the splash screen"); | ||
663 | module_param(arcfb_enable, uint, 0); | ||
664 | MODULE_PARM_DESC(arcfb_enable, "Enable communication with Arc board"); | ||
665 | module_param(dio_addr, ulong, 0); | ||
666 | MODULE_PARM_DESC(dio_addr, "IO address for data, eg: 0x480"); | ||
667 | module_param(cio_addr, ulong, 0); | ||
668 | MODULE_PARM_DESC(cio_addr, "IO address for control, eg: 0x400"); | ||
669 | module_param(c2io_addr, ulong, 0); | ||
670 | MODULE_PARM_DESC(c2io_addr, "IO address for secondary control, eg: 0x408"); | ||
671 | module_param(splashval, ulong, 0); | ||
672 | MODULE_PARM_DESC(splashval, "Splash pattern: 0xFF is black, 0x00 is green"); | ||
673 | module_param(tuhold, ulong, 0); | ||
674 | MODULE_PARM_DESC(tuhold, "Time to hold between strobing data to Arc board"); | ||
675 | module_param(irq, uint, 0); | ||
676 | MODULE_PARM_DESC(irq, "IRQ for the Arc board"); | ||
677 | |||
678 | module_init(arcfb_init); | ||
679 | module_exit(arcfb_exit); | ||
680 | |||
681 | MODULE_DESCRIPTION("fbdev driver for Arc monochrome LCD board"); | ||
682 | MODULE_AUTHOR("Jaya Kumar"); | ||
683 | MODULE_LICENSE("GPL"); | ||
684 | |||
diff --git a/drivers/video/chipsfb.c b/drivers/video/chipsfb.c index ab98f225fe3e..95e72550d43f 100644 --- a/drivers/video/chipsfb.c +++ b/drivers/video/chipsfb.c | |||
@@ -423,9 +423,6 @@ chipsfb_pci_init(struct pci_dev *dp, const struct pci_device_id *ent) | |||
423 | pmu_register_sleep_notifier(&chips_sleep_notifier); | 423 | pmu_register_sleep_notifier(&chips_sleep_notifier); |
424 | #endif /* CONFIG_PMAC_PBOOK */ | 424 | #endif /* CONFIG_PMAC_PBOOK */ |
425 | 425 | ||
426 | /* Clear the entire framebuffer */ | ||
427 | memset(p->screen_base, 0, 0x100000); | ||
428 | |||
429 | pci_set_drvdata(dp, p); | 426 | pci_set_drvdata(dp, p); |
430 | return 0; | 427 | return 0; |
431 | } | 428 | } |
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig index ccf55811d24f..e4b91a4b936c 100644 --- a/drivers/video/console/Kconfig +++ b/drivers/video/console/Kconfig | |||
@@ -153,6 +153,15 @@ config FONT_6x11 | |||
153 | Small console font with Macintosh-style high-half glyphs. Some Mac | 153 | Small console font with Macintosh-style high-half glyphs. Some Mac |
154 | framebuffer drivers don't support this one at all. | 154 | framebuffer drivers don't support this one at all. |
155 | 155 | ||
156 | config FONT_7x14 | ||
157 | bool "console 7x14 font (not supported by all drivers)" if FONTS | ||
158 | depends on FRAMEBUFFER_CONSOLE | ||
159 | default y if !SPARC32 && !SPARC64 && !FONTS | ||
160 | help | ||
161 | Console font with characters just a bit smaller than the default. | ||
162 | If the standard 8x16 font is a little too big for you, say Y. | ||
163 | Otherwise, say N. | ||
164 | |||
156 | config FONT_PEARL_8x8 | 165 | config FONT_PEARL_8x8 |
157 | bool "Pearl (old m68k) console 8x8 font" if FONTS | 166 | bool "Pearl (old m68k) console 8x8 font" if FONTS |
158 | depends on FRAMEBUFFER_CONSOLE | 167 | depends on FRAMEBUFFER_CONSOLE |
@@ -187,5 +196,13 @@ config FONT_SUN12x22 | |||
187 | big letters (like the letters used in the SPARC PROM). If the | 196 | big letters (like the letters used in the SPARC PROM). If the |
188 | standard font is unreadable for you, say Y, otherwise say N. | 197 | standard font is unreadable for you, say Y, otherwise say N. |
189 | 198 | ||
199 | config FONT_10x18 | ||
200 | bool "console 10x18 font (not supported by all drivers)" | ||
201 | depends on FONTS | ||
202 | help | ||
203 | This is a high resolution console font for machines with very | ||
204 | big letters. It fits between the sun 12x22 and the normal 8x16 font. | ||
205 | If other fonts are too big or too small for you, say Y, otherwise say N. | ||
206 | |||
190 | endmenu | 207 | endmenu |
191 | 208 | ||
diff --git a/drivers/video/console/Makefile b/drivers/video/console/Makefile index 33516447f9f2..b562f6bb9d31 100644 --- a/drivers/video/console/Makefile +++ b/drivers/video/console/Makefile | |||
@@ -10,6 +10,8 @@ font-objs-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o | |||
10 | font-objs-$(CONFIG_FONT_8x8) += font_8x8.o | 10 | font-objs-$(CONFIG_FONT_8x8) += font_8x8.o |
11 | font-objs-$(CONFIG_FONT_8x16) += font_8x16.o | 11 | font-objs-$(CONFIG_FONT_8x16) += font_8x16.o |
12 | font-objs-$(CONFIG_FONT_6x11) += font_6x11.o | 12 | font-objs-$(CONFIG_FONT_6x11) += font_6x11.o |
13 | font-objs-$(CONFIG_FONT_7x14) += font_7x14.o | ||
14 | font-objs-$(CONFIG_FONT_10x18) += font_10x18.o | ||
13 | font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o | 15 | font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o |
14 | font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o | 16 | font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o |
15 | font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o | 17 | font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o |
diff --git a/drivers/video/console/bitblit.c b/drivers/video/console/bitblit.c index b28a4b0e395e..3c731577fed6 100644 --- a/drivers/video/console/bitblit.c +++ b/drivers/video/console/bitblit.c | |||
@@ -107,13 +107,6 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info, | |||
107 | const unsigned short *s, int count, int yy, int xx, | 107 | const unsigned short *s, int count, int yy, int xx, |
108 | int fg, int bg) | 108 | int fg, int bg) |
109 | { | 109 | { |
110 | void (*move_unaligned)(struct fb_info *info, struct fb_pixmap *buf, | ||
111 | u8 *dst, u32 d_pitch, u8 *src, u32 idx, | ||
112 | u32 height, u32 shift_high, u32 shift_low, | ||
113 | u32 mod); | ||
114 | void (*move_aligned)(struct fb_info *info, struct fb_pixmap *buf, | ||
115 | u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, | ||
116 | u32 height); | ||
117 | unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; | 110 | unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; |
118 | unsigned int width = (vc->vc_font.width + 7) >> 3; | 111 | unsigned int width = (vc->vc_font.width + 7) >> 3; |
119 | unsigned int cellsize = vc->vc_font.height * width; | 112 | unsigned int cellsize = vc->vc_font.height * width; |
@@ -141,13 +134,6 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info, | |||
141 | image.height = vc->vc_font.height; | 134 | image.height = vc->vc_font.height; |
142 | image.depth = 1; | 135 | image.depth = 1; |
143 | 136 | ||
144 | if (info->pixmap.outbuf && info->pixmap.inbuf) { | ||
145 | move_aligned = fb_iomove_buf_aligned; | ||
146 | move_unaligned = fb_iomove_buf_unaligned; | ||
147 | } else { | ||
148 | move_aligned = fb_sysmove_buf_aligned; | ||
149 | move_unaligned = fb_sysmove_buf_unaligned; | ||
150 | } | ||
151 | while (count) { | 137 | while (count) { |
152 | if (count > maxcnt) | 138 | if (count > maxcnt) |
153 | cnt = k = maxcnt; | 139 | cnt = k = maxcnt; |
@@ -171,9 +157,9 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info, | |||
171 | src = buf; | 157 | src = buf; |
172 | } | 158 | } |
173 | 159 | ||
174 | move_unaligned(info, &info->pixmap, dst, pitch, | 160 | fb_pad_unaligned_buffer(dst, pitch, src, idx, |
175 | src, idx, image.height, | 161 | image.height, shift_high, |
176 | shift_high, shift_low, mod); | 162 | shift_low, mod); |
177 | shift_low += mod; | 163 | shift_low += mod; |
178 | dst += (shift_low >= 8) ? width : width - 1; | 164 | dst += (shift_low >= 8) ? width : width - 1; |
179 | shift_low &= 7; | 165 | shift_low &= 7; |
@@ -189,8 +175,7 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info, | |||
189 | src = buf; | 175 | src = buf; |
190 | } | 176 | } |
191 | 177 | ||
192 | move_aligned(info, &info->pixmap, dst, pitch, | 178 | fb_pad_aligned_buffer(dst, pitch, src, idx, image.height); |
193 | src, idx, image.height); | ||
194 | dst += width; | 179 | dst += width; |
195 | } | 180 | } |
196 | } | 181 | } |
diff --git a/drivers/video/console/font_10x18.c b/drivers/video/console/font_10x18.c new file mode 100644 index 000000000000..ff0af96e4dfc --- /dev/null +++ b/drivers/video/console/font_10x18.c | |||
@@ -0,0 +1,5146 @@ | |||
1 | /******************************** | ||
2 | * adapted from font_sun12x22.c * | ||
3 | * by Jurriaan Kalkman 06-2005 * | ||
4 | ********************************/ | ||
5 | |||
6 | #include <linux/font.h> | ||
7 | |||
8 | #define FONTDATAMAX 9216 | ||
9 | |||
10 | static unsigned char fontdata_10x18[FONTDATAMAX] = { | ||
11 | |||
12 | /* 0 0x00 '^@' */ | ||
13 | 0x00, 0x00, /* 0000000000 */ | ||
14 | 0x00, 0x00, /* 0000000000 */ | ||
15 | 0x00, 0x00, /* 0000000000 */ | ||
16 | 0x00, 0x00, /* 0000000000 */ | ||
17 | 0x00, 0x00, /* 0000000000 */ | ||
18 | 0x00, 0x00, /* 0000000000 */ | ||
19 | 0x00, 0x00, /* 0000000000 */ | ||
20 | 0x00, 0x00, /* 0000000000 */ | ||
21 | 0x00, 0x00, /* 0000000000 */ | ||
22 | 0x00, 0x00, /* 0000000000 */ | ||
23 | 0x00, 0x00, /* 0000000000 */ | ||
24 | 0x00, 0x00, /* 0000000000 */ | ||
25 | 0x00, 0x00, /* 0000000000 */ | ||
26 | 0x00, 0x00, /* 0000000000 */ | ||
27 | 0x00, 0x00, /* 0000000000 */ | ||
28 | 0x00, 0x00, /* 0000000000 */ | ||
29 | 0x00, 0x00, /* 0000000000 */ | ||
30 | 0x00, 0x00, /* 0000000000 */ | ||
31 | |||
32 | /* 1 0x01 '^A' */ | ||
33 | 0x00, 0x00, /* 0000000000 */ | ||
34 | 0x00, 0x00, /* 0000000000 */ | ||
35 | 0x00, 0x00, /* 0000000000 */ | ||
36 | 0x00, 0x00, /* 0000000000 */ | ||
37 | 0x00, 0x00, /* 0000000000 */ | ||
38 | 0x3f, 0x80, /* 0011111110 */ | ||
39 | 0x40, 0x40, /* 0100000001 */ | ||
40 | 0x5b, 0x40, /* 0101101101 */ | ||
41 | 0x40, 0x40, /* 0100000001 */ | ||
42 | 0x44, 0x40, /* 0100010001 */ | ||
43 | 0x44, 0x40, /* 0100010001 */ | ||
44 | 0x51, 0x40, /* 0101000101 */ | ||
45 | 0x4e, 0x40, /* 0100111001 */ | ||
46 | 0x40, 0x40, /* 0100000001 */ | ||
47 | 0x3f, 0x80, /* 0011111110 */ | ||
48 | 0x00, 0x00, /* 0000000000 */ | ||
49 | 0x00, 0x00, /* 0000000000 */ | ||
50 | 0x00, 0x00, /* 0000000000 */ | ||
51 | |||
52 | /* 2 0x02 '^B' */ | ||
53 | 0x00, 0x00, /* 0000000000 */ | ||
54 | 0x00, 0x00, /* 0000000000 */ | ||
55 | 0x00, 0x00, /* 0000000000 */ | ||
56 | 0x00, 0x00, /* 0000000000 */ | ||
57 | 0x00, 0x00, /* 0000000000 */ | ||
58 | 0x3f, 0x80, /* 0011111110 */ | ||
59 | 0x7f, 0xc0, /* 0111111111 */ | ||
60 | 0x64, 0xc0, /* 0110010011 */ | ||
61 | 0x7f, 0xc0, /* 0111111111 */ | ||
62 | 0x7b, 0xc0, /* 0111101111 */ | ||
63 | 0x7b, 0xc0, /* 0111101111 */ | ||
64 | 0x6e, 0xc0, /* 0110111011 */ | ||
65 | 0x71, 0xc0, /* 0111000111 */ | ||
66 | 0x7f, 0xc0, /* 0111111111 */ | ||
67 | 0x3f, 0x80, /* 0011111110 */ | ||
68 | 0x00, 0x00, /* 0000000000 */ | ||
69 | 0x00, 0x00, /* 0000000000 */ | ||
70 | 0x00, 0x00, /* 0000000000 */ | ||
71 | |||
72 | /* 3 0x03 '^C' */ | ||
73 | 0x00, 0x00, /* 0000000000 */ | ||
74 | 0x00, 0x00, /* 0000000000 */ | ||
75 | 0x00, 0x00, /* 0000000000 */ | ||
76 | 0x00, 0x00, /* 0000000000 */ | ||
77 | 0x00, 0x00, /* 0000000000 */ | ||
78 | 0x11, 0x00, /* 0001000100 */ | ||
79 | 0x3b, 0x80, /* 0011101110 */ | ||
80 | 0x7f, 0xc0, /* 0111111111 */ | ||
81 | 0x3f, 0x80, /* 0011111110 */ | ||
82 | 0x3f, 0x80, /* 0011111110 */ | ||
83 | 0x1f, 0x00, /* 0001111100 */ | ||
84 | 0x1f, 0x00, /* 0001111100 */ | ||
85 | 0x0e, 0x00, /* 0000111000 */ | ||
86 | 0x0e, 0x00, /* 0000111000 */ | ||
87 | 0x04, 0x00, /* 0000010000 */ | ||
88 | 0x00, 0x00, /* 0000000000 */ | ||
89 | 0x00, 0x00, /* 0000000000 */ | ||
90 | 0x00, 0x00, /* 0000000000 */ | ||
91 | |||
92 | /* 4 0x04 '^D' */ | ||
93 | 0x00, 0x00, /* 0000000000 */ | ||
94 | 0x00, 0x00, /* 0000000000 */ | ||
95 | 0x00, 0x00, /* 0000000000 */ | ||
96 | 0x00, 0x00, /* 0000000000 */ | ||
97 | 0x04, 0x00, /* 0000010000 */ | ||
98 | 0x0e, 0x00, /* 0000111000 */ | ||
99 | 0x0e, 0x00, /* 0000111000 */ | ||
100 | 0x1f, 0x00, /* 0001111100 */ | ||
101 | 0x1f, 0x00, /* 0001111100 */ | ||
102 | 0x3f, 0x80, /* 0011111110 */ | ||
103 | 0x1f, 0x00, /* 0001111100 */ | ||
104 | 0x1f, 0x00, /* 0001111100 */ | ||
105 | 0x0e, 0x00, /* 0000111000 */ | ||
106 | 0x0e, 0x00, /* 0000111000 */ | ||
107 | 0x04, 0x00, /* 0000010000 */ | ||
108 | 0x00, 0x00, /* 0000000000 */ | ||
109 | 0x00, 0x00, /* 0000000000 */ | ||
110 | 0x00, 0x00, /* 0000000000 */ | ||
111 | |||
112 | /* 5 0x05 '^E' */ | ||
113 | 0x00, 0x00, /* 0000000000 */ | ||
114 | 0x00, 0x00, /* 0000000000 */ | ||
115 | 0x00, 0x00, /* 0000000000 */ | ||
116 | 0x00, 0x00, /* 0000000000 */ | ||
117 | 0x00, 0x00, /* 0000000000 */ | ||
118 | 0x00, 0x00, /* 0000000000 */ | ||
119 | 0x0c, 0x00, /* 0000110000 */ | ||
120 | 0x1e, 0x00, /* 0001111000 */ | ||
121 | 0x0c, 0x00, /* 0000110000 */ | ||
122 | 0x31, 0x80, /* 0011000110 */ | ||
123 | 0x7b, 0xc0, /* 0111101111 */ | ||
124 | 0x35, 0x80, /* 0011010110 */ | ||
125 | 0x04, 0x00, /* 0000010000 */ | ||
126 | 0x0e, 0x00, /* 0000111000 */ | ||
127 | 0x1f, 0x00, /* 0001111100 */ | ||
128 | 0x00, 0x00, /* 0000000000 */ | ||
129 | 0x00, 0x00, /* 0000000000 */ | ||
130 | 0x00, 0x00, /* 0000000000 */ | ||
131 | |||
132 | /* 6 0x06 '^F' */ | ||
133 | 0x00, 0x00, /* 0000000000 */ | ||
134 | 0x00, 0x00, /* 0000000000 */ | ||
135 | 0x00, 0x00, /* 0000000000 */ | ||
136 | 0x00, 0x00, /* 0000000000 */ | ||
137 | 0x04, 0x00, /* 0000010000 */ | ||
138 | 0x0e, 0x00, /* 0000111000 */ | ||
139 | 0x1f, 0x00, /* 0001111100 */ | ||
140 | 0x1f, 0x00, /* 0001111100 */ | ||
141 | 0x3f, 0x80, /* 0011111110 */ | ||
142 | 0x7f, 0xc0, /* 0111111111 */ | ||
143 | 0x7f, 0xc0, /* 0111111111 */ | ||
144 | 0x35, 0x80, /* 0011010110 */ | ||
145 | 0x04, 0x00, /* 0000010000 */ | ||
146 | 0x0e, 0x00, /* 0000111000 */ | ||
147 | 0x1f, 0x00, /* 0001111100 */ | ||
148 | 0x00, 0x00, /* 0000000000 */ | ||
149 | 0x00, 0x00, /* 0000000000 */ | ||
150 | 0x00, 0x00, /* 0000000000 */ | ||
151 | |||
152 | /* 7 0x07 '^G' */ | ||
153 | 0x00, 0x00, /* 0000000000 */ | ||
154 | 0x00, 0x00, /* 0000000000 */ | ||
155 | 0x00, 0x00, /* 0000000000 */ | ||
156 | 0x00, 0x00, /* 0000000000 */ | ||
157 | 0x00, 0x00, /* 0000000000 */ | ||
158 | 0x0c, 0x00, /* 0000110000 */ | ||
159 | 0x1e, 0x00, /* 0001111000 */ | ||
160 | 0x1e, 0x00, /* 0001111000 */ | ||
161 | 0x3f, 0x00, /* 0011111100 */ | ||
162 | 0x3f, 0x00, /* 0011111100 */ | ||
163 | 0x1e, 0x00, /* 0001111000 */ | ||
164 | 0x1e, 0x00, /* 0001111000 */ | ||
165 | 0x0c, 0x00, /* 0000110000 */ | ||
166 | 0x00, 0x00, /* 0000000000 */ | ||
167 | 0x00, 0x00, /* 0000000000 */ | ||
168 | 0x00, 0x00, /* 0000000000 */ | ||
169 | 0x00, 0x00, /* 0000000000 */ | ||
170 | 0x00, 0x00, /* 0000000000 */ | ||
171 | |||
172 | /* 8 0x08 '^H' */ | ||
173 | 0xff, 0xc0, /* 1111111111 */ | ||
174 | 0xff, 0xc0, /* 1111111111 */ | ||
175 | 0xff, 0xc0, /* 1111111111 */ | ||
176 | 0xff, 0xc0, /* 1111111111 */ | ||
177 | 0xff, 0xc0, /* 1111111111 */ | ||
178 | 0xf3, 0xc0, /* 1111001111 */ | ||
179 | 0xe1, 0xc0, /* 1110000111 */ | ||
180 | 0xe1, 0xc0, /* 1110000111 */ | ||
181 | 0xc0, 0xc0, /* 1100000011 */ | ||
182 | 0xc0, 0xc0, /* 1100000011 */ | ||
183 | 0xe1, 0xc0, /* 1110000111 */ | ||
184 | 0xe1, 0xc0, /* 1110000111 */ | ||
185 | 0xf3, 0xc0, /* 1111001111 */ | ||
186 | 0xff, 0xc0, /* 1111111111 */ | ||
187 | 0xff, 0xc0, /* 1111111111 */ | ||
188 | 0xff, 0xc0, /* 1111111111 */ | ||
189 | 0xff, 0xc0, /* 1111111111 */ | ||
190 | 0xff, 0xc0, /* 1111111111 */ | ||
191 | |||
192 | /* 9 0x09 '^I' */ | ||
193 | 0x00, 0x00, /* 0000000000 */ | ||
194 | 0x00, 0x00, /* 0000000000 */ | ||
195 | 0x00, 0x00, /* 0000000000 */ | ||
196 | 0x00, 0x00, /* 0000000000 */ | ||
197 | 0x00, 0x00, /* 0000000000 */ | ||
198 | 0x0c, 0x00, /* 0000110000 */ | ||
199 | 0x12, 0x00, /* 0001001000 */ | ||
200 | 0x12, 0x00, /* 0001001000 */ | ||
201 | 0x21, 0x00, /* 0010000100 */ | ||
202 | 0x21, 0x00, /* 0010000100 */ | ||
203 | 0x12, 0x00, /* 0001001000 */ | ||
204 | 0x12, 0x00, /* 0001001000 */ | ||
205 | 0x0c, 0x00, /* 0000110000 */ | ||
206 | 0x00, 0x00, /* 0000000000 */ | ||
207 | 0x00, 0x00, /* 0000000000 */ | ||
208 | 0x00, 0x00, /* 0000000000 */ | ||
209 | 0x00, 0x00, /* 0000000000 */ | ||
210 | 0x00, 0x00, /* 0000000000 */ | ||
211 | |||
212 | /* 10 0x0a '^J' */ | ||
213 | 0xff, 0xc0, /* 1111111111 */ | ||
214 | 0xff, 0xc0, /* 1111111111 */ | ||
215 | 0xff, 0xc0, /* 1111111111 */ | ||
216 | 0xff, 0xc0, /* 1111111111 */ | ||
217 | 0xff, 0xc0, /* 1111111111 */ | ||
218 | 0xf3, 0xc0, /* 1111001111 */ | ||
219 | 0xed, 0xc0, /* 1110110111 */ | ||
220 | 0xed, 0xc0, /* 1110110111 */ | ||
221 | 0xde, 0xc0, /* 1101111011 */ | ||
222 | 0xde, 0xc0, /* 1101111011 */ | ||
223 | 0xed, 0xc0, /* 1110110111 */ | ||
224 | 0xed, 0xc0, /* 1110110111 */ | ||
225 | 0xf3, 0xc0, /* 1111001111 */ | ||
226 | 0xff, 0xc0, /* 1111111111 */ | ||
227 | 0xff, 0xc0, /* 1111111111 */ | ||
228 | 0xff, 0xc0, /* 1111111111 */ | ||
229 | 0xff, 0xc0, /* 1111111111 */ | ||
230 | 0xff, 0xc0, /* 1111111111 */ | ||
231 | |||
232 | /* 11 0x0b '^K' */ | ||
233 | 0x00, 0x00, /* 0000000000 */ | ||
234 | 0x00, 0x00, /* 0000000000 */ | ||
235 | 0x0f, 0xc0, /* 0000111111 */ | ||
236 | 0x0f, 0xc0, /* 0000111111 */ | ||
237 | 0x03, 0xc0, /* 0000001111 */ | ||
238 | 0x06, 0xc0, /* 0000011011 */ | ||
239 | 0x0c, 0xc0, /* 0000110011 */ | ||
240 | 0x3c, 0x00, /* 0011110000 */ | ||
241 | 0x66, 0x00, /* 0110011000 */ | ||
242 | 0xc3, 0x00, /* 1100001100 */ | ||
243 | 0xc3, 0x00, /* 1100001100 */ | ||
244 | 0xc3, 0x00, /* 1100001100 */ | ||
245 | 0x66, 0x00, /* 0110011000 */ | ||
246 | 0x3c, 0x00, /* 0011110000 */ | ||
247 | 0x00, 0x00, /* 0000000000 */ | ||
248 | 0x00, 0x00, /* 0000000000 */ | ||
249 | 0x00, 0x00, /* 0000000000 */ | ||
250 | 0x00, 0x00, /* 0000000000 */ | ||
251 | |||
252 | /* 12 0x0c '^L' */ | ||
253 | 0x00, 0x00, /* 0000000000 */ | ||
254 | 0x00, 0x00, /* 0000000000 */ | ||
255 | 0x00, 0x00, /* 0000000000 */ | ||
256 | 0x1e, 0x00, /* 0001111000 */ | ||
257 | 0x33, 0x00, /* 0011001100 */ | ||
258 | 0x61, 0x80, /* 0110000110 */ | ||
259 | 0x61, 0x80, /* 0110000110 */ | ||
260 | 0x61, 0x80, /* 0110000110 */ | ||
261 | 0x33, 0x00, /* 0011001100 */ | ||
262 | 0x1e, 0x00, /* 0001111000 */ | ||
263 | 0x0c, 0x00, /* 0000110000 */ | ||
264 | 0x0c, 0x00, /* 0000110000 */ | ||
265 | 0x3f, 0x00, /* 0011111100 */ | ||
266 | 0x0c, 0x00, /* 0000110000 */ | ||
267 | 0x0c, 0x00, /* 0000110000 */ | ||
268 | 0x00, 0x00, /* 0000000000 */ | ||
269 | 0x00, 0x00, /* 0000000000 */ | ||
270 | 0x00, 0x00, /* 0000000000 */ | ||
271 | |||
272 | /* 13 0x0d '^M' */ | ||
273 | 0x00, 0x00, /* 0000000000 */ | ||
274 | 0x00, 0x00, /* 0000000000 */ | ||
275 | 0x00, 0x00, /* 0000000000 */ | ||
276 | 0x0f, 0x80, /* 0000111110 */ | ||
277 | 0x08, 0x80, /* 0000100010 */ | ||
278 | 0x0f, 0x80, /* 0000111110 */ | ||
279 | 0x08, 0x00, /* 0000100000 */ | ||
280 | 0x08, 0x00, /* 0000100000 */ | ||
281 | 0x08, 0x00, /* 0000100000 */ | ||
282 | 0x08, 0x00, /* 0000100000 */ | ||
283 | 0x08, 0x00, /* 0000100000 */ | ||
284 | 0x08, 0x00, /* 0000100000 */ | ||
285 | 0x38, 0x00, /* 0011100000 */ | ||
286 | 0x78, 0x00, /* 0111100000 */ | ||
287 | 0x30, 0x00, /* 0011000000 */ | ||
288 | 0x00, 0x00, /* 0000000000 */ | ||
289 | 0x00, 0x00, /* 0000000000 */ | ||
290 | 0x00, 0x00, /* 0000000000 */ | ||
291 | |||
292 | /* 14 0x0e '^N' */ | ||
293 | 0x00, 0x00, /* 0000000000 */ | ||
294 | 0x00, 0x00, /* 0000000000 */ | ||
295 | 0x00, 0x00, /* 0000000000 */ | ||
296 | 0x1f, 0x80, /* 0001111110 */ | ||
297 | 0x10, 0x80, /* 0001000010 */ | ||
298 | 0x1f, 0x80, /* 0001111110 */ | ||
299 | 0x10, 0x80, /* 0001000010 */ | ||
300 | 0x10, 0x80, /* 0001000010 */ | ||
301 | 0x10, 0x80, /* 0001000010 */ | ||
302 | 0x10, 0x80, /* 0001000010 */ | ||
303 | 0x13, 0x80, /* 0001001110 */ | ||
304 | 0x17, 0x80, /* 0001011110 */ | ||
305 | 0x73, 0x00, /* 0111001100 */ | ||
306 | 0xf0, 0x00, /* 1111000000 */ | ||
307 | 0x60, 0x00, /* 0110000000 */ | ||
308 | 0x00, 0x00, /* 0000000000 */ | ||
309 | 0x00, 0x00, /* 0000000000 */ | ||
310 | 0x00, 0x00, /* 0000000000 */ | ||
311 | |||
312 | /* 15 0x0f '^O' */ | ||
313 | 0x00, 0x00, /* 0000000000 */ | ||
314 | 0x00, 0x00, /* 0000000000 */ | ||
315 | 0x00, 0x00, /* 0000000000 */ | ||
316 | 0x04, 0x00, /* 0000010000 */ | ||
317 | 0x24, 0x80, /* 0010010010 */ | ||
318 | 0x15, 0x00, /* 0001010100 */ | ||
319 | 0x55, 0x40, /* 0101010101 */ | ||
320 | 0x3f, 0x80, /* 0011111110 */ | ||
321 | 0x0e, 0x00, /* 0000111000 */ | ||
322 | 0x00, 0x00, /* 0000000000 */ | ||
323 | 0x0e, 0x00, /* 0000111000 */ | ||
324 | 0x3f, 0x80, /* 0011111110 */ | ||
325 | 0x55, 0x40, /* 0101010101 */ | ||
326 | 0x15, 0x00, /* 0001010100 */ | ||
327 | 0x24, 0x80, /* 0010010010 */ | ||
328 | 0x00, 0x00, /* 0000000000 */ | ||
329 | 0x00, 0x00, /* 0000000000 */ | ||
330 | 0x00, 0x00, /* 0000000000 */ | ||
331 | |||
332 | /* 16 0x10 '^P' */ | ||
333 | 0x00, 0x80, /* 0000000010 */ | ||
334 | 0x01, 0x80, /* 0000000110 */ | ||
335 | 0x03, 0x80, /* 0000001110 */ | ||
336 | 0x07, 0x80, /* 0000011110 */ | ||
337 | 0x0f, 0x80, /* 0000111110 */ | ||
338 | 0x1f, 0x80, /* 0001111110 */ | ||
339 | 0x3f, 0x80, /* 0011111110 */ | ||
340 | 0x7f, 0x80, /* 0111111110 */ | ||
341 | 0xff, 0x80, /* 1111111110 */ | ||
342 | 0x7f, 0x80, /* 0111111110 */ | ||
343 | 0x3f, 0x80, /* 0011111110 */ | ||
344 | 0x1f, 0x80, /* 0001111110 */ | ||
345 | 0x0f, 0x80, /* 0000111110 */ | ||
346 | 0x07, 0x80, /* 0000011110 */ | ||
347 | 0x03, 0x80, /* 0000001110 */ | ||
348 | 0x01, 0x80, /* 0000000110 */ | ||
349 | 0x00, 0x80, /* 0000000010 */ | ||
350 | 0x00, 0x00, /* 0000000000 */ | ||
351 | |||
352 | /* 17 0x11 '^Q' */ | ||
353 | 0x40, 0x00, /* 0100000000 */ | ||
354 | 0x60, 0x00, /* 0110000000 */ | ||
355 | 0x70, 0x00, /* 0111000000 */ | ||
356 | 0x78, 0x00, /* 0111100000 */ | ||
357 | 0x7c, 0x00, /* 0111110000 */ | ||
358 | 0x7e, 0x00, /* 0111111000 */ | ||
359 | 0x7f, 0x00, /* 0111111100 */ | ||
360 | 0x7f, 0x80, /* 0111111110 */ | ||
361 | 0x7f, 0xc0, /* 0111111111 */ | ||
362 | 0x7f, 0x80, /* 0111111110 */ | ||
363 | 0x7f, 0x00, /* 0111111100 */ | ||
364 | 0x7e, 0x00, /* 0111111000 */ | ||
365 | 0x7c, 0x00, /* 0111110000 */ | ||
366 | 0x78, 0x00, /* 0111100000 */ | ||
367 | 0x70, 0x00, /* 0111000000 */ | ||
368 | 0x60, 0x00, /* 0110000000 */ | ||
369 | 0x40, 0x00, /* 0100000000 */ | ||
370 | 0x00, 0x00, /* 0000000000 */ | ||
371 | |||
372 | /* 18 0x12 '^R' */ | ||
373 | 0x00, 0x00, /* 0000000000 */ | ||
374 | 0x00, 0x00, /* 0000000000 */ | ||
375 | 0x00, 0x00, /* 0000000000 */ | ||
376 | 0x00, 0x00, /* 0000000000 */ | ||
377 | 0x0c, 0x00, /* 0000110000 */ | ||
378 | 0x1e, 0x00, /* 0001111000 */ | ||
379 | 0x3f, 0x00, /* 0011111100 */ | ||
380 | 0x7f, 0x80, /* 0111111110 */ | ||
381 | 0x0c, 0x00, /* 0000110000 */ | ||
382 | 0x0c, 0x00, /* 0000110000 */ | ||
383 | 0x0c, 0x00, /* 0000110000 */ | ||
384 | 0x7f, 0x80, /* 0111111110 */ | ||
385 | 0x3f, 0x00, /* 0011111100 */ | ||
386 | 0x1e, 0x00, /* 0001111000 */ | ||
387 | 0x0c, 0x00, /* 0000110000 */ | ||
388 | 0x00, 0x00, /* 0000000000 */ | ||
389 | 0x00, 0x00, /* 0000000000 */ | ||
390 | 0x00, 0x00, /* 0000000000 */ | ||
391 | |||
392 | /* 19 0x13 '^S' */ | ||
393 | 0x00, 0x00, /* 0000000000 */ | ||
394 | 0x33, 0x00, /* 0011001100 */ | ||
395 | 0x33, 0x00, /* 0011001100 */ | ||
396 | 0x33, 0x00, /* 0011001100 */ | ||
397 | 0x33, 0x00, /* 0011001100 */ | ||
398 | 0x33, 0x00, /* 0011001100 */ | ||
399 | 0x33, 0x00, /* 0011001100 */ | ||
400 | 0x33, 0x00, /* 0011001100 */ | ||
401 | 0x33, 0x00, /* 0011001100 */ | ||
402 | 0x33, 0x00, /* 0011001100 */ | ||
403 | 0x33, 0x00, /* 0011001100 */ | ||
404 | 0x00, 0x00, /* 0000000000 */ | ||
405 | 0x00, 0x00, /* 0000000000 */ | ||
406 | 0x33, 0x00, /* 0011001100 */ | ||
407 | 0x33, 0x00, /* 0011001100 */ | ||
408 | 0x00, 0x00, /* 0000000000 */ | ||
409 | 0x00, 0x00, /* 0000000000 */ | ||
410 | 0x00, 0x00, /* 0000000000 */ | ||
411 | |||
412 | /* 20 0x14 '^T' */ | ||
413 | 0x00, 0x00, /* 0000000000 */ | ||
414 | 0x1f, 0xc0, /* 0001111111 */ | ||
415 | 0x39, 0x80, /* 0011100110 */ | ||
416 | 0x79, 0x80, /* 0111100110 */ | ||
417 | 0x79, 0x80, /* 0111100110 */ | ||
418 | 0x79, 0x80, /* 0111100110 */ | ||
419 | 0x39, 0x80, /* 0011100110 */ | ||
420 | 0x19, 0x80, /* 0001100110 */ | ||
421 | 0x19, 0x80, /* 0001100110 */ | ||
422 | 0x19, 0x80, /* 0001100110 */ | ||
423 | 0x19, 0x80, /* 0001100110 */ | ||
424 | 0x19, 0x80, /* 0001100110 */ | ||
425 | 0x19, 0x80, /* 0001100110 */ | ||
426 | 0x39, 0xc0, /* 0011100111 */ | ||
427 | 0x00, 0x00, /* 0000000000 */ | ||
428 | 0x00, 0x00, /* 0000000000 */ | ||
429 | 0x00, 0x00, /* 0000000000 */ | ||
430 | 0x00, 0x00, /* 0000000000 */ | ||
431 | |||
432 | /* 21 0x15 '^U' */ | ||
433 | 0x00, 0x00, /* 0000000000 */ | ||
434 | 0x00, 0x00, /* 0000000000 */ | ||
435 | 0x3e, 0x00, /* 0011111000 */ | ||
436 | 0x63, 0x00, /* 0110001100 */ | ||
437 | 0x63, 0x00, /* 0110001100 */ | ||
438 | 0x60, 0x00, /* 0110000000 */ | ||
439 | 0x60, 0x00, /* 0110000000 */ | ||
440 | 0x3e, 0x00, /* 0011111000 */ | ||
441 | 0x63, 0x00, /* 0110001100 */ | ||
442 | 0x63, 0x00, /* 0110001100 */ | ||
443 | 0x3e, 0x00, /* 0011111000 */ | ||
444 | 0x03, 0x00, /* 0000001100 */ | ||
445 | 0x03, 0x00, /* 0000001100 */ | ||
446 | 0x63, 0x00, /* 0110001100 */ | ||
447 | 0x63, 0x00, /* 0110001100 */ | ||
448 | 0x3e, 0x00, /* 0011111000 */ | ||
449 | 0x00, 0x00, /* 0000000000 */ | ||
450 | 0x00, 0x00, /* 0000000000 */ | ||
451 | |||
452 | /* 22 0x16 '^V' */ | ||
453 | 0x00, 0x00, /* 0000000000 */ | ||
454 | 0x00, 0x00, /* 0000000000 */ | ||
455 | 0x00, 0x00, /* 0000000000 */ | ||
456 | 0x00, 0x00, /* 0000000000 */ | ||
457 | 0x00, 0x00, /* 0000000000 */ | ||
458 | 0x00, 0x00, /* 0000000000 */ | ||
459 | 0x00, 0x00, /* 0000000000 */ | ||
460 | 0x00, 0x00, /* 0000000000 */ | ||
461 | 0x00, 0x00, /* 0000000000 */ | ||
462 | 0x00, 0x00, /* 0000000000 */ | ||
463 | 0x00, 0x00, /* 0000000000 */ | ||
464 | 0x00, 0x00, /* 0000000000 */ | ||
465 | 0x7f, 0x80, /* 0111111110 */ | ||
466 | 0x7f, 0x80, /* 0111111110 */ | ||
467 | 0x7f, 0x80, /* 0111111110 */ | ||
468 | 0x00, 0x00, /* 0000000000 */ | ||
469 | 0x00, 0x00, /* 0000000000 */ | ||
470 | 0x00, 0x00, /* 0000000000 */ | ||
471 | |||
472 | /* 23 0x17 '^W' */ | ||
473 | 0x00, 0x00, /* 0000000000 */ | ||
474 | 0x00, 0x00, /* 0000000000 */ | ||
475 | 0x0c, 0x00, /* 0000110000 */ | ||
476 | 0x1e, 0x00, /* 0001111000 */ | ||
477 | 0x3f, 0x00, /* 0011111100 */ | ||
478 | 0x7f, 0x80, /* 0111111110 */ | ||
479 | 0x0c, 0x00, /* 0000110000 */ | ||
480 | 0x0c, 0x00, /* 0000110000 */ | ||
481 | 0x0c, 0x00, /* 0000110000 */ | ||
482 | 0x7f, 0x80, /* 0111111110 */ | ||
483 | 0x3f, 0x00, /* 0011111100 */ | ||
484 | 0x1e, 0x00, /* 0001111000 */ | ||
485 | 0x0c, 0x00, /* 0000110000 */ | ||
486 | 0x7f, 0x80, /* 0111111110 */ | ||
487 | 0x7f, 0x80, /* 0111111110 */ | ||
488 | 0x00, 0x00, /* 0000000000 */ | ||
489 | 0x00, 0x00, /* 0000000000 */ | ||
490 | 0x00, 0x00, /* 0000000000 */ | ||
491 | |||
492 | /* 24 0x18 '^X' */ | ||
493 | 0x00, 0x00, /* 0000000000 */ | ||
494 | 0x00, 0x00, /* 0000000000 */ | ||
495 | 0x00, 0x00, /* 0000000000 */ | ||
496 | 0x0c, 0x00, /* 0000110000 */ | ||
497 | 0x1e, 0x00, /* 0001111000 */ | ||
498 | 0x3f, 0x00, /* 0011111100 */ | ||
499 | 0x7f, 0x80, /* 0111111110 */ | ||
500 | 0x0c, 0x00, /* 0000110000 */ | ||
501 | 0x0c, 0x00, /* 0000110000 */ | ||
502 | 0x0c, 0x00, /* 0000110000 */ | ||
503 | 0x0c, 0x00, /* 0000110000 */ | ||
504 | 0x0c, 0x00, /* 0000110000 */ | ||
505 | 0x0c, 0x00, /* 0000110000 */ | ||
506 | 0x0c, 0x00, /* 0000110000 */ | ||
507 | 0x0c, 0x00, /* 0000110000 */ | ||
508 | 0x00, 0x00, /* 0000000000 */ | ||
509 | 0x00, 0x00, /* 0000000000 */ | ||
510 | 0x00, 0x00, /* 0000000000 */ | ||
511 | |||
512 | /* 25 0x19 '^Y' */ | ||
513 | 0x00, 0x00, /* 0000000000 */ | ||
514 | 0x00, 0x00, /* 0000000000 */ | ||
515 | 0x00, 0x00, /* 0000000000 */ | ||
516 | 0x0c, 0x00, /* 0000110000 */ | ||
517 | 0x0c, 0x00, /* 0000110000 */ | ||
518 | 0x0c, 0x00, /* 0000110000 */ | ||
519 | 0x0c, 0x00, /* 0000110000 */ | ||
520 | 0x0c, 0x00, /* 0000110000 */ | ||
521 | 0x0c, 0x00, /* 0000110000 */ | ||
522 | 0x0c, 0x00, /* 0000110000 */ | ||
523 | 0x0c, 0x00, /* 0000110000 */ | ||
524 | 0x7f, 0x80, /* 0111111110 */ | ||
525 | 0x3f, 0x00, /* 0011111100 */ | ||
526 | 0x1e, 0x00, /* 0001111000 */ | ||
527 | 0x0c, 0x00, /* 0000110000 */ | ||
528 | 0x00, 0x00, /* 0000000000 */ | ||
529 | 0x00, 0x00, /* 0000000000 */ | ||
530 | 0x00, 0x00, /* 0000000000 */ | ||
531 | |||
532 | /* 26 0x1a '^Z' */ | ||
533 | 0x00, 0x00, /* 0000000000 */ | ||
534 | 0x00, 0x00, /* 0000000000 */ | ||
535 | 0x00, 0x00, /* 0000000000 */ | ||
536 | 0x00, 0x00, /* 0000000000 */ | ||
537 | 0x04, 0x00, /* 0000010000 */ | ||
538 | 0x06, 0x00, /* 0000011000 */ | ||
539 | 0x07, 0x00, /* 0000011100 */ | ||
540 | 0x7f, 0x80, /* 0111111110 */ | ||
541 | 0x7f, 0x80, /* 0111111110 */ | ||
542 | 0x07, 0x00, /* 0000011100 */ | ||
543 | 0x06, 0x00, /* 0000011000 */ | ||
544 | 0x04, 0x00, /* 0000010000 */ | ||
545 | 0x00, 0x00, /* 0000000000 */ | ||
546 | 0x00, 0x00, /* 0000000000 */ | ||
547 | 0x00, 0x00, /* 0000000000 */ | ||
548 | 0x00, 0x00, /* 0000000000 */ | ||
549 | 0x00, 0x00, /* 0000000000 */ | ||
550 | 0x00, 0x00, /* 0000000000 */ | ||
551 | |||
552 | /* 27 0x1b '^[' */ | ||
553 | 0x00, 0x00, /* 0000000000 */ | ||
554 | 0x00, 0x00, /* 0000000000 */ | ||
555 | 0x00, 0x00, /* 0000000000 */ | ||
556 | 0x00, 0x00, /* 0000000000 */ | ||
557 | 0x00, 0x00, /* 0000000000 */ | ||
558 | 0x08, 0x00, /* 0000100000 */ | ||
559 | 0x18, 0x00, /* 0001100000 */ | ||
560 | 0x38, 0x00, /* 0011100000 */ | ||
561 | 0x7f, 0x80, /* 0111111110 */ | ||
562 | 0x7f, 0x80, /* 0111111110 */ | ||
563 | 0x38, 0x00, /* 0011100000 */ | ||
564 | 0x18, 0x00, /* 0001100000 */ | ||
565 | 0x08, 0x00, /* 0000100000 */ | ||
566 | 0x00, 0x00, /* 0000000000 */ | ||
567 | 0x00, 0x00, /* 0000000000 */ | ||
568 | 0x00, 0x00, /* 0000000000 */ | ||
569 | 0x00, 0x00, /* 0000000000 */ | ||
570 | 0x00, 0x00, /* 0000000000 */ | ||
571 | |||
572 | /* 28 0x1c '^\' */ | ||
573 | 0x00, 0x00, /* 0000000000 */ | ||
574 | 0x00, 0x00, /* 0000000000 */ | ||
575 | 0x00, 0x00, /* 0000000000 */ | ||
576 | 0x00, 0x00, /* 0000000000 */ | ||
577 | 0x00, 0x00, /* 0000000000 */ | ||
578 | 0x60, 0x00, /* 0110000000 */ | ||
579 | 0x60, 0x00, /* 0110000000 */ | ||
580 | 0x60, 0x00, /* 0110000000 */ | ||
581 | 0x7f, 0x80, /* 0111111110 */ | ||
582 | 0x7f, 0x80, /* 0111111110 */ | ||
583 | 0x00, 0x00, /* 0000000000 */ | ||
584 | 0x00, 0x00, /* 0000000000 */ | ||
585 | 0x00, 0x00, /* 0000000000 */ | ||
586 | 0x00, 0x00, /* 0000000000 */ | ||
587 | 0x00, 0x00, /* 0000000000 */ | ||
588 | 0x00, 0x00, /* 0000000000 */ | ||
589 | 0x00, 0x00, /* 0000000000 */ | ||
590 | 0x00, 0x00, /* 0000000000 */ | ||
591 | |||
592 | /* 29 0x1d '^]' */ | ||
593 | 0x00, 0x00, /* 0000000000 */ | ||
594 | 0x00, 0x00, /* 0000000000 */ | ||
595 | 0x00, 0x00, /* 0000000000 */ | ||
596 | 0x00, 0x00, /* 0000000000 */ | ||
597 | 0x00, 0x00, /* 0000000000 */ | ||
598 | 0x12, 0x00, /* 0001001000 */ | ||
599 | 0x33, 0x00, /* 0011001100 */ | ||
600 | 0x73, 0x80, /* 0111001110 */ | ||
601 | 0xff, 0xc0, /* 1111111111 */ | ||
602 | 0xff, 0xc0, /* 1111111111 */ | ||
603 | 0x73, 0x80, /* 0111001110 */ | ||
604 | 0x33, 0x00, /* 0011001100 */ | ||
605 | 0x12, 0x00, /* 0001001000 */ | ||
606 | 0x00, 0x00, /* 0000000000 */ | ||
607 | 0x00, 0x00, /* 0000000000 */ | ||
608 | 0x00, 0x00, /* 0000000000 */ | ||
609 | 0x00, 0x00, /* 0000000000 */ | ||
610 | 0x00, 0x00, /* 0000000000 */ | ||
611 | |||
612 | /* 30 0x1e '^^' */ | ||
613 | 0x00, 0x00, /* 0000000000 */ | ||
614 | 0x00, 0x00, /* 0000000000 */ | ||
615 | 0x00, 0x00, /* 0000000000 */ | ||
616 | 0x00, 0x00, /* 0000000000 */ | ||
617 | 0x00, 0x00, /* 0000000000 */ | ||
618 | 0x04, 0x00, /* 0000010000 */ | ||
619 | 0x04, 0x00, /* 0000010000 */ | ||
620 | 0x0e, 0x00, /* 0000111000 */ | ||
621 | 0x0e, 0x00, /* 0000111000 */ | ||
622 | 0x1f, 0x00, /* 0001111100 */ | ||
623 | 0x1f, 0x00, /* 0001111100 */ | ||
624 | 0x3f, 0x80, /* 0011111110 */ | ||
625 | 0x3f, 0x80, /* 0011111110 */ | ||
626 | 0x7f, 0xc0, /* 0111111111 */ | ||
627 | 0x7f, 0xc0, /* 0111111111 */ | ||
628 | 0x00, 0x00, /* 0000000000 */ | ||
629 | 0x00, 0x00, /* 0000000000 */ | ||
630 | 0x00, 0x00, /* 0000000000 */ | ||
631 | |||
632 | /* 31 0x1f '^_' */ | ||
633 | 0x00, 0x00, /* 0000000000 */ | ||
634 | 0x00, 0x00, /* 0000000000 */ | ||
635 | 0x00, 0x00, /* 0000000000 */ | ||
636 | 0x00, 0x00, /* 0000000000 */ | ||
637 | 0x00, 0x00, /* 0000000000 */ | ||
638 | 0x7f, 0xc0, /* 0111111111 */ | ||
639 | 0x7f, 0xc0, /* 0111111111 */ | ||
640 | 0x3f, 0x80, /* 0011111110 */ | ||
641 | 0x3f, 0x80, /* 0011111110 */ | ||
642 | 0x1f, 0x00, /* 0001111100 */ | ||
643 | 0x1f, 0x00, /* 0001111100 */ | ||
644 | 0x0e, 0x00, /* 0000111000 */ | ||
645 | 0x0e, 0x00, /* 0000111000 */ | ||
646 | 0x04, 0x00, /* 0000010000 */ | ||
647 | 0x04, 0x00, /* 0000010000 */ | ||
648 | 0x00, 0x00, /* 0000000000 */ | ||
649 | 0x00, 0x00, /* 0000000000 */ | ||
650 | 0x00, 0x00, /* 0000000000 */ | ||
651 | |||
652 | /* 32 0x20 ' ' */ | ||
653 | 0x00, 0x00, /* 0000000000 */ | ||
654 | 0x00, 0x00, /* 0000000000 */ | ||
655 | 0x00, 0x00, /* 0000000000 */ | ||
656 | 0x00, 0x00, /* 0000000000 */ | ||
657 | 0x00, 0x00, /* 0000000000 */ | ||
658 | 0x00, 0x00, /* 0000000000 */ | ||
659 | 0x00, 0x00, /* 0000000000 */ | ||
660 | 0x00, 0x00, /* 0000000000 */ | ||
661 | 0x00, 0x00, /* 0000000000 */ | ||
662 | 0x00, 0x00, /* 0000000000 */ | ||
663 | 0x00, 0x00, /* 0000000000 */ | ||
664 | 0x00, 0x00, /* 0000000000 */ | ||
665 | 0x00, 0x00, /* 0000000000 */ | ||
666 | 0x00, 0x00, /* 0000000000 */ | ||
667 | 0x00, 0x00, /* 0000000000 */ | ||
668 | 0x00, 0x00, /* 0000000000 */ | ||
669 | 0x00, 0x00, /* 0000000000 */ | ||
670 | 0x00, 0x00, /* 0000000000 */ | ||
671 | |||
672 | /* 33 0x21 '!' */ | ||
673 | 0x00, 0x00, /* 0000000000 */ | ||
674 | 0x0c, 0x00, /* 0000110000 */ | ||
675 | 0x0c, 0x00, /* 0000110000 */ | ||
676 | 0x0c, 0x00, /* 0000110000 */ | ||
677 | 0x0c, 0x00, /* 0000110000 */ | ||
678 | 0x0c, 0x00, /* 0000110000 */ | ||
679 | 0x0c, 0x00, /* 0000110000 */ | ||
680 | 0x0c, 0x00, /* 0000110000 */ | ||
681 | 0x0c, 0x00, /* 0000110000 */ | ||
682 | 0x0c, 0x00, /* 0000110000 */ | ||
683 | 0x0c, 0x00, /* 0000110000 */ | ||
684 | 0x00, 0x00, /* 0000000000 */ | ||
685 | 0x0c, 0x00, /* 0000110000 */ | ||
686 | 0x0c, 0x00, /* 0000110000 */ | ||
687 | 0x00, 0x00, /* 0000000000 */ | ||
688 | 0x00, 0x00, /* 0000000000 */ | ||
689 | 0x00, 0x00, /* 0000000000 */ | ||
690 | 0x00, 0x00, /* 0000000000 */ | ||
691 | |||
692 | /* 34 0x22 '"' */ | ||
693 | 0x00, 0x00, /* 0000000000 */ | ||
694 | 0x63, 0x00, /* 0110001100 */ | ||
695 | 0xf7, 0x80, /* 1111011110 */ | ||
696 | 0xf7, 0x80, /* 1111011110 */ | ||
697 | 0x31, 0x80, /* 0011000110 */ | ||
698 | 0x31, 0x80, /* 0011000110 */ | ||
699 | 0x63, 0x00, /* 0110001100 */ | ||
700 | 0x42, 0x00, /* 0100001000 */ | ||
701 | 0x00, 0x00, /* 0000000000 */ | ||
702 | 0x00, 0x00, /* 0000000000 */ | ||
703 | 0x00, 0x00, /* 0000000000 */ | ||
704 | 0x00, 0x00, /* 0000000000 */ | ||
705 | 0x00, 0x00, /* 0000000000 */ | ||
706 | 0x00, 0x00, /* 0000000000 */ | ||
707 | 0x00, 0x00, /* 0000000000 */ | ||
708 | 0x00, 0x00, /* 0000000000 */ | ||
709 | 0x00, 0x00, /* 0000000000 */ | ||
710 | 0x00, 0x00, /* 0000000000 */ | ||
711 | |||
712 | /* 35 0x23 '#' */ | ||
713 | 0x00, 0x00, /* 0000000000 */ | ||
714 | 0x33, 0x00, /* 0011001100 */ | ||
715 | 0x33, 0x00, /* 0011001100 */ | ||
716 | 0x7f, 0x80, /* 0111111110 */ | ||
717 | 0x7f, 0x80, /* 0111111110 */ | ||
718 | 0x33, 0x00, /* 0011001100 */ | ||
719 | 0x33, 0x00, /* 0011001100 */ | ||
720 | 0x33, 0x00, /* 0011001100 */ | ||
721 | 0x33, 0x00, /* 0011001100 */ | ||
722 | 0x7f, 0x80, /* 0111111110 */ | ||
723 | 0x7f, 0x80, /* 0111111110 */ | ||
724 | 0x33, 0x00, /* 0011001100 */ | ||
725 | 0x33, 0x00, /* 0011001100 */ | ||
726 | 0x00, 0x00, /* 0000000000 */ | ||
727 | 0x00, 0x00, /* 0000000000 */ | ||
728 | 0x00, 0x00, /* 0000000000 */ | ||
729 | 0x00, 0x00, /* 0000000000 */ | ||
730 | 0x00, 0x00, /* 0000000000 */ | ||
731 | |||
732 | /* 36 0x24 '$' */ | ||
733 | 0x00, 0x00, /* 0000000000 */ | ||
734 | 0x0c, 0x00, /* 0000110000 */ | ||
735 | 0x3e, 0x00, /* 0011111000 */ | ||
736 | 0x3f, 0x00, /* 0011111100 */ | ||
737 | 0x6f, 0x80, /* 0110111110 */ | ||
738 | 0x6d, 0x80, /* 0110110110 */ | ||
739 | 0x6c, 0x80, /* 0110110010 */ | ||
740 | 0x3c, 0x00, /* 0011110000 */ | ||
741 | 0x0f, 0x00, /* 0000111100 */ | ||
742 | 0x0d, 0x80, /* 0000110110 */ | ||
743 | 0x4d, 0x80, /* 0100110110 */ | ||
744 | 0x6d, 0x80, /* 0110110110 */ | ||
745 | 0x7f, 0x00, /* 0111111100 */ | ||
746 | 0x3e, 0x00, /* 0011111000 */ | ||
747 | 0x0c, 0x00, /* 0000110000 */ | ||
748 | 0x00, 0x00, /* 0000000000 */ | ||
749 | 0x00, 0x00, /* 0000000000 */ | ||
750 | 0x00, 0x00, /* 0000000000 */ | ||
751 | |||
752 | /* 37 0x25 '%' */ | ||
753 | 0x00, 0x00, /* 0000000000 */ | ||
754 | 0x31, 0x80, /* 0011000110 */ | ||
755 | 0x7b, 0x00, /* 0111101100 */ | ||
756 | 0x7b, 0x00, /* 0111101100 */ | ||
757 | 0x36, 0x00, /* 0011011000 */ | ||
758 | 0x06, 0x00, /* 0000011000 */ | ||
759 | 0x0c, 0x00, /* 0000110000 */ | ||
760 | 0x0c, 0x00, /* 0000110000 */ | ||
761 | 0x18, 0x00, /* 0001100000 */ | ||
762 | 0x1b, 0x00, /* 0001101100 */ | ||
763 | 0x37, 0x80, /* 0011011110 */ | ||
764 | 0x37, 0x80, /* 0011011110 */ | ||
765 | 0x63, 0x00, /* 0110001100 */ | ||
766 | 0x00, 0x00, /* 0000000000 */ | ||
767 | 0x00, 0x00, /* 0000000000 */ | ||
768 | 0x00, 0x00, /* 0000000000 */ | ||
769 | 0x00, 0x00, /* 0000000000 */ | ||
770 | 0x00, 0x00, /* 0000000000 */ | ||
771 | |||
772 | /* 38 0x26 '&' */ | ||
773 | 0x00, 0x00, /* 0000000000 */ | ||
774 | 0x07, 0x00, /* 0000011100 */ | ||
775 | 0x0f, 0x80, /* 0000111110 */ | ||
776 | 0x19, 0x80, /* 0001100110 */ | ||
777 | 0x19, 0x80, /* 0001100110 */ | ||
778 | 0x0f, 0x80, /* 0000111110 */ | ||
779 | 0x1e, 0x00, /* 0001111000 */ | ||
780 | 0x3e, 0x00, /* 0011111000 */ | ||
781 | 0x76, 0x00, /* 0111011000 */ | ||
782 | 0x66, 0x40, /* 0110011001 */ | ||
783 | 0x63, 0xc0, /* 0110001111 */ | ||
784 | 0x63, 0x80, /* 0110001110 */ | ||
785 | 0x63, 0x00, /* 0110001100 */ | ||
786 | 0x3f, 0x80, /* 0011111110 */ | ||
787 | 0x1c, 0xc0, /* 0001110011 */ | ||
788 | 0x00, 0x00, /* 0000000000 */ | ||
789 | 0x00, 0x00, /* 0000000000 */ | ||
790 | 0x00, 0x00, /* 0000000000 */ | ||
791 | |||
792 | /* 39 0x27 ''' */ | ||
793 | 0x00, 0x00, /* 0000000000 */ | ||
794 | 0x30, 0x00, /* 0011000000 */ | ||
795 | 0x78, 0x00, /* 0111100000 */ | ||
796 | 0x78, 0x00, /* 0111100000 */ | ||
797 | 0x18, 0x00, /* 0001100000 */ | ||
798 | 0x18, 0x00, /* 0001100000 */ | ||
799 | 0x30, 0x00, /* 0011000000 */ | ||
800 | 0x20, 0x00, /* 0010000000 */ | ||
801 | 0x00, 0x00, /* 0000000000 */ | ||
802 | 0x00, 0x00, /* 0000000000 */ | ||
803 | 0x00, 0x00, /* 0000000000 */ | ||
804 | 0x00, 0x00, /* 0000000000 */ | ||
805 | 0x00, 0x00, /* 0000000000 */ | ||
806 | 0x00, 0x00, /* 0000000000 */ | ||
807 | 0x00, 0x00, /* 0000000000 */ | ||
808 | 0x00, 0x00, /* 0000000000 */ | ||
809 | 0x00, 0x00, /* 0000000000 */ | ||
810 | 0x00, 0x00, /* 0000000000 */ | ||
811 | |||
812 | /* 40 0x28 '(' */ | ||
813 | 0x00, 0x00, /* 0000000000 */ | ||
814 | 0x03, 0x00, /* 0000001100 */ | ||
815 | 0x06, 0x00, /* 0000011000 */ | ||
816 | 0x0c, 0x00, /* 0000110000 */ | ||
817 | 0x0c, 0x00, /* 0000110000 */ | ||
818 | 0x18, 0x00, /* 0001100000 */ | ||
819 | 0x18, 0x00, /* 0001100000 */ | ||
820 | 0x18, 0x00, /* 0001100000 */ | ||
821 | 0x18, 0x00, /* 0001100000 */ | ||
822 | 0x18, 0x00, /* 0001100000 */ | ||
823 | 0x18, 0x00, /* 0001100000 */ | ||
824 | 0x0c, 0x00, /* 0000110000 */ | ||
825 | 0x0c, 0x00, /* 0000110000 */ | ||
826 | 0x06, 0x00, /* 0000011000 */ | ||
827 | 0x03, 0x00, /* 0000001100 */ | ||
828 | 0x00, 0x00, /* 0000000000 */ | ||
829 | 0x00, 0x00, /* 0000000000 */ | ||
830 | 0x00, 0x00, /* 0000000000 */ | ||
831 | |||
832 | /* 41 0x29 ')' */ | ||
833 | 0x00, 0x00, /* 0000000000 */ | ||
834 | 0x30, 0x00, /* 0011000000 */ | ||
835 | 0x18, 0x00, /* 0001100000 */ | ||
836 | 0x0c, 0x00, /* 0000110000 */ | ||
837 | 0x0c, 0x00, /* 0000110000 */ | ||
838 | 0x06, 0x00, /* 0000011000 */ | ||
839 | 0x06, 0x00, /* 0000011000 */ | ||
840 | 0x06, 0x00, /* 0000011000 */ | ||
841 | 0x06, 0x00, /* 0000011000 */ | ||
842 | 0x06, 0x00, /* 0000011000 */ | ||
843 | 0x06, 0x00, /* 0000011000 */ | ||
844 | 0x0c, 0x00, /* 0000110000 */ | ||
845 | 0x0c, 0x00, /* 0000110000 */ | ||
846 | 0x18, 0x00, /* 0001100000 */ | ||
847 | 0x30, 0x00, /* 0011000000 */ | ||
848 | 0x00, 0x00, /* 0000000000 */ | ||
849 | 0x00, 0x00, /* 0000000000 */ | ||
850 | 0x00, 0x00, /* 0000000000 */ | ||
851 | |||
852 | /* 42 0x2a '*' */ | ||
853 | 0x00, 0x00, /* 0000000000 */ | ||
854 | 0x00, 0x00, /* 0000000000 */ | ||
855 | 0x00, 0x00, /* 0000000000 */ | ||
856 | 0x0c, 0x00, /* 0000110000 */ | ||
857 | 0x4c, 0x80, /* 0100110010 */ | ||
858 | 0x6d, 0x80, /* 0110110110 */ | ||
859 | 0x3f, 0x00, /* 0011111100 */ | ||
860 | 0x7f, 0x80, /* 0111111110 */ | ||
861 | 0x3f, 0x00, /* 0011111100 */ | ||
862 | 0x6d, 0x80, /* 0110110110 */ | ||
863 | 0x4c, 0x80, /* 0100110010 */ | ||
864 | 0x0c, 0x00, /* 0000110000 */ | ||
865 | 0x00, 0x00, /* 0000000000 */ | ||
866 | 0x00, 0x00, /* 0000000000 */ | ||
867 | 0x00, 0x00, /* 0000000000 */ | ||
868 | 0x00, 0x00, /* 0000000000 */ | ||
869 | 0x00, 0x00, /* 0000000000 */ | ||
870 | 0x00, 0x00, /* 0000000000 */ | ||
871 | |||
872 | /* 43 0x2b '+' */ | ||
873 | 0x00, 0x00, /* 0000000000 */ | ||
874 | 0x00, 0x00, /* 0000000000 */ | ||
875 | 0x00, 0x00, /* 0000000000 */ | ||
876 | 0x0c, 0x00, /* 0000110000 */ | ||
877 | 0x0c, 0x00, /* 0000110000 */ | ||
878 | 0x0c, 0x00, /* 0000110000 */ | ||
879 | 0x0c, 0x00, /* 0000110000 */ | ||
880 | 0x7f, 0x80, /* 0111111110 */ | ||
881 | 0x7f, 0x80, /* 0111111110 */ | ||
882 | 0x0c, 0x00, /* 0000110000 */ | ||
883 | 0x0c, 0x00, /* 0000110000 */ | ||
884 | 0x0c, 0x00, /* 0000110000 */ | ||
885 | 0x0c, 0x00, /* 0000110000 */ | ||
886 | 0x00, 0x00, /* 0000000000 */ | ||
887 | 0x00, 0x00, /* 0000000000 */ | ||
888 | 0x00, 0x00, /* 0000000000 */ | ||
889 | 0x00, 0x00, /* 0000000000 */ | ||
890 | 0x00, 0x00, /* 0000000000 */ | ||
891 | |||
892 | /* 44 0x2c ',' */ | ||
893 | 0x00, 0x00, /* 0000000000 */ | ||
894 | 0x00, 0x00, /* 0000000000 */ | ||
895 | 0x00, 0x00, /* 0000000000 */ | ||
896 | 0x00, 0x00, /* 0000000000 */ | ||
897 | 0x00, 0x00, /* 0000000000 */ | ||
898 | 0x00, 0x00, /* 0000000000 */ | ||
899 | 0x00, 0x00, /* 0000000000 */ | ||
900 | 0x00, 0x00, /* 0000000000 */ | ||
901 | 0x00, 0x00, /* 0000000000 */ | ||
902 | 0x00, 0x00, /* 0000000000 */ | ||
903 | 0x30, 0x00, /* 0011000000 */ | ||
904 | 0x78, 0x00, /* 0111100000 */ | ||
905 | 0x78, 0x00, /* 0111100000 */ | ||
906 | 0x18, 0x00, /* 0001100000 */ | ||
907 | 0x18, 0x00, /* 0001100000 */ | ||
908 | 0x30, 0x00, /* 0011000000 */ | ||
909 | 0x60, 0x00, /* 0110000000 */ | ||
910 | 0x40, 0x00, /* 0100000000 */ | ||
911 | |||
912 | /* 45 0x2d '-' */ | ||
913 | 0x00, 0x00, /* 0000000000 */ | ||
914 | 0x00, 0x00, /* 0000000000 */ | ||
915 | 0x00, 0x00, /* 0000000000 */ | ||
916 | 0x00, 0x00, /* 0000000000 */ | ||
917 | 0x00, 0x00, /* 0000000000 */ | ||
918 | 0x00, 0x00, /* 0000000000 */ | ||
919 | 0x00, 0x00, /* 0000000000 */ | ||
920 | 0x00, 0x00, /* 0000000000 */ | ||
921 | 0x7f, 0x80, /* 0111111110 */ | ||
922 | 0x7f, 0x80, /* 0111111110 */ | ||
923 | 0x00, 0x00, /* 0000000000 */ | ||
924 | 0x00, 0x00, /* 0000000000 */ | ||
925 | 0x00, 0x00, /* 0000000000 */ | ||
926 | 0x00, 0x00, /* 0000000000 */ | ||
927 | 0x00, 0x00, /* 0000000000 */ | ||
928 | 0x00, 0x00, /* 0000000000 */ | ||
929 | 0x00, 0x00, /* 0000000000 */ | ||
930 | 0x00, 0x00, /* 0000000000 */ | ||
931 | |||
932 | /* 46 0x2e '.' */ | ||
933 | 0x00, 0x00, /* 0000000000 */ | ||
934 | 0x00, 0x00, /* 0000000000 */ | ||
935 | 0x00, 0x00, /* 0000000000 */ | ||
936 | 0x00, 0x00, /* 0000000000 */ | ||
937 | 0x00, 0x00, /* 0000000000 */ | ||
938 | 0x00, 0x00, /* 0000000000 */ | ||
939 | 0x00, 0x00, /* 0000000000 */ | ||
940 | 0x00, 0x00, /* 0000000000 */ | ||
941 | 0x00, 0x00, /* 0000000000 */ | ||
942 | 0x00, 0x00, /* 0000000000 */ | ||
943 | 0x00, 0x00, /* 0000000000 */ | ||
944 | 0x18, 0x00, /* 0001100000 */ | ||
945 | 0x3c, 0x00, /* 0011110000 */ | ||
946 | 0x3c, 0x00, /* 0011110000 */ | ||
947 | 0x18, 0x00, /* 0001100000 */ | ||
948 | 0x00, 0x00, /* 0000000000 */ | ||
949 | 0x00, 0x00, /* 0000000000 */ | ||
950 | 0x00, 0x00, /* 0000000000 */ | ||
951 | |||
952 | /* 47 0x2f '/' */ | ||
953 | 0x00, 0x00, /* 0000000000 */ | ||
954 | 0x01, 0x80, /* 0000000110 */ | ||
955 | 0x01, 0x80, /* 0000000110 */ | ||
956 | 0x03, 0x00, /* 0000001100 */ | ||
957 | 0x03, 0x00, /* 0000001100 */ | ||
958 | 0x06, 0x00, /* 0000011000 */ | ||
959 | 0x06, 0x00, /* 0000011000 */ | ||
960 | 0x0c, 0x00, /* 0000110000 */ | ||
961 | 0x0c, 0x00, /* 0000110000 */ | ||
962 | 0x18, 0x00, /* 0001100000 */ | ||
963 | 0x18, 0x00, /* 0001100000 */ | ||
964 | 0x30, 0x00, /* 0011000000 */ | ||
965 | 0x30, 0x00, /* 0011000000 */ | ||
966 | 0x60, 0x00, /* 0110000000 */ | ||
967 | 0x60, 0x00, /* 0110000000 */ | ||
968 | 0x00, 0x00, /* 0000000000 */ | ||
969 | 0x00, 0x00, /* 0000000000 */ | ||
970 | 0x00, 0x00, /* 0000000000 */ | ||
971 | |||
972 | /* 48 0x30 '0' */ | ||
973 | 0x00, 0x00, /* 0000000000 */ | ||
974 | 0x0e, 0x00, /* 0000111000 */ | ||
975 | 0x1f, 0x00, /* 0001111100 */ | ||
976 | 0x23, 0x00, /* 0010001100 */ | ||
977 | 0x61, 0x80, /* 0110000110 */ | ||
978 | 0x63, 0x80, /* 0110001110 */ | ||
979 | 0x65, 0x80, /* 0110010110 */ | ||
980 | 0x65, 0x80, /* 0110010110 */ | ||
981 | 0x69, 0x80, /* 0110100110 */ | ||
982 | 0x69, 0x80, /* 0110100110 */ | ||
983 | 0x71, 0x80, /* 0111000110 */ | ||
984 | 0x61, 0x00, /* 0110000100 */ | ||
985 | 0x31, 0x00, /* 0011000100 */ | ||
986 | 0x3e, 0x00, /* 0011111000 */ | ||
987 | 0x1c, 0x00, /* 0001110000 */ | ||
988 | 0x00, 0x00, /* 0000000000 */ | ||
989 | 0x00, 0x00, /* 0000000000 */ | ||
990 | 0x00, 0x00, /* 0000000000 */ | ||
991 | |||
992 | /* 49 0x31 '1' */ | ||
993 | 0x00, 0x00, /* 0000000000 */ | ||
994 | 0x04, 0x00, /* 0000010000 */ | ||
995 | 0x0c, 0x00, /* 0000110000 */ | ||
996 | 0x1c, 0x00, /* 0001110000 */ | ||
997 | 0x3c, 0x00, /* 0011110000 */ | ||
998 | 0x6c, 0x00, /* 0110110000 */ | ||
999 | 0x0c, 0x00, /* 0000110000 */ | ||
1000 | 0x0c, 0x00, /* 0000110000 */ | ||
1001 | 0x0c, 0x00, /* 0000110000 */ | ||
1002 | 0x0c, 0x00, /* 0000110000 */ | ||
1003 | 0x0c, 0x00, /* 0000110000 */ | ||
1004 | 0x0c, 0x00, /* 0000110000 */ | ||
1005 | 0x0c, 0x00, /* 0000110000 */ | ||
1006 | 0x0c, 0x00, /* 0000110000 */ | ||
1007 | 0x7f, 0x80, /* 0111111110 */ | ||
1008 | 0x00, 0x00, /* 0000000000 */ | ||
1009 | 0x00, 0x00, /* 0000000000 */ | ||
1010 | 0x00, 0x00, /* 0000000000 */ | ||
1011 | |||
1012 | /* 50 0x32 '2' */ | ||
1013 | 0x00, 0x00, /* 0000000000 */ | ||
1014 | 0x1e, 0x00, /* 0001111000 */ | ||
1015 | 0x3f, 0x00, /* 0011111100 */ | ||
1016 | 0x63, 0x80, /* 0110001110 */ | ||
1017 | 0x41, 0x80, /* 0100000110 */ | ||
1018 | 0x01, 0x80, /* 0000000110 */ | ||
1019 | 0x01, 0x80, /* 0000000110 */ | ||
1020 | 0x03, 0x00, /* 0000001100 */ | ||
1021 | 0x06, 0x00, /* 0000011000 */ | ||
1022 | 0x06, 0x00, /* 0000011000 */ | ||
1023 | 0x0c, 0x00, /* 0000110000 */ | ||
1024 | 0x18, 0x00, /* 0001100000 */ | ||
1025 | 0x30, 0x80, /* 0011000010 */ | ||
1026 | 0x7f, 0x80, /* 0111111110 */ | ||
1027 | 0x7f, 0x80, /* 0111111110 */ | ||
1028 | 0x00, 0x00, /* 0000000000 */ | ||
1029 | 0x00, 0x00, /* 0000000000 */ | ||
1030 | 0x00, 0x00, /* 0000000000 */ | ||
1031 | |||
1032 | /* 51 0x33 '3' */ | ||
1033 | 0x00, 0x00, /* 0000000000 */ | ||
1034 | 0x1c, 0x00, /* 0001110000 */ | ||
1035 | 0x3e, 0x00, /* 0011111000 */ | ||
1036 | 0x47, 0x00, /* 0100011100 */ | ||
1037 | 0x03, 0x00, /* 0000001100 */ | ||
1038 | 0x07, 0x00, /* 0000011100 */ | ||
1039 | 0x06, 0x00, /* 0000011000 */ | ||
1040 | 0x0e, 0x00, /* 0000111000 */ | ||
1041 | 0x07, 0x00, /* 0000011100 */ | ||
1042 | 0x03, 0x00, /* 0000001100 */ | ||
1043 | 0x01, 0x80, /* 0000000110 */ | ||
1044 | 0x41, 0x80, /* 0100000110 */ | ||
1045 | 0x61, 0x80, /* 0110000110 */ | ||
1046 | 0x3f, 0x00, /* 0011111100 */ | ||
1047 | 0x1e, 0x00, /* 0001111000 */ | ||
1048 | 0x00, 0x00, /* 0000000000 */ | ||
1049 | 0x00, 0x00, /* 0000000000 */ | ||
1050 | 0x00, 0x00, /* 0000000000 */ | ||
1051 | |||
1052 | /* 52 0x34 '4' */ | ||
1053 | 0x00, 0x00, /* 0000000000 */ | ||
1054 | 0x06, 0x00, /* 0000011000 */ | ||
1055 | 0x0e, 0x00, /* 0000111000 */ | ||
1056 | 0x1e, 0x00, /* 0001111000 */ | ||
1057 | 0x36, 0x00, /* 0011011000 */ | ||
1058 | 0x36, 0x00, /* 0011011000 */ | ||
1059 | 0x66, 0x00, /* 0110011000 */ | ||
1060 | 0x66, 0x00, /* 0110011000 */ | ||
1061 | 0xc6, 0x00, /* 1100011000 */ | ||
1062 | 0xc6, 0x00, /* 1100011000 */ | ||
1063 | 0xff, 0x80, /* 1111111110 */ | ||
1064 | 0xff, 0x80, /* 1111111110 */ | ||
1065 | 0x06, 0x00, /* 0000011000 */ | ||
1066 | 0x06, 0x00, /* 0000011000 */ | ||
1067 | 0x06, 0x00, /* 0000011000 */ | ||
1068 | 0x00, 0x00, /* 0000000000 */ | ||
1069 | 0x00, 0x00, /* 0000000000 */ | ||
1070 | 0x00, 0x00, /* 0000000000 */ | ||
1071 | |||
1072 | /* 53 0x35 '5' */ | ||
1073 | 0x00, 0x00, /* 0000000000 */ | ||
1074 | 0x1f, 0x00, /* 0001111100 */ | ||
1075 | 0x1f, 0x00, /* 0001111100 */ | ||
1076 | 0x30, 0x00, /* 0011000000 */ | ||
1077 | 0x30, 0x00, /* 0011000000 */ | ||
1078 | 0x60, 0x00, /* 0110000000 */ | ||
1079 | 0x7e, 0x00, /* 0111111000 */ | ||
1080 | 0x67, 0x00, /* 0110011100 */ | ||
1081 | 0x03, 0x80, /* 0000001110 */ | ||
1082 | 0x01, 0x80, /* 0000000110 */ | ||
1083 | 0x01, 0x80, /* 0000000110 */ | ||
1084 | 0x01, 0x80, /* 0000000110 */ | ||
1085 | 0x41, 0x80, /* 0100000110 */ | ||
1086 | 0x63, 0x00, /* 0110001100 */ | ||
1087 | 0x3e, 0x00, /* 0011111000 */ | ||
1088 | 0x00, 0x00, /* 0000000000 */ | ||
1089 | 0x00, 0x00, /* 0000000000 */ | ||
1090 | 0x00, 0x00, /* 0000000000 */ | ||
1091 | |||
1092 | /* 54 0x36 '6' */ | ||
1093 | 0x00, 0x00, /* 0000000000 */ | ||
1094 | 0x06, 0x00, /* 0000011000 */ | ||
1095 | 0x0c, 0x00, /* 0000110000 */ | ||
1096 | 0x18, 0x00, /* 0001100000 */ | ||
1097 | 0x30, 0x00, /* 0011000000 */ | ||
1098 | 0x30, 0x00, /* 0011000000 */ | ||
1099 | 0x60, 0x00, /* 0110000000 */ | ||
1100 | 0x6e, 0x00, /* 0110111000 */ | ||
1101 | 0x7f, 0x00, /* 0111111100 */ | ||
1102 | 0x73, 0x80, /* 0111001110 */ | ||
1103 | 0x61, 0x80, /* 0110000110 */ | ||
1104 | 0x61, 0x80, /* 0110000110 */ | ||
1105 | 0x71, 0x00, /* 0111000100 */ | ||
1106 | 0x3e, 0x00, /* 0011111000 */ | ||
1107 | 0x1c, 0x00, /* 0001110000 */ | ||
1108 | 0x00, 0x00, /* 0000000000 */ | ||
1109 | 0x00, 0x00, /* 0000000000 */ | ||
1110 | 0x00, 0x00, /* 0000000000 */ | ||
1111 | |||
1112 | /* 55 0x37 '7' */ | ||
1113 | 0x00, 0x00, /* 0000000000 */ | ||
1114 | 0x1f, 0x80, /* 0001111110 */ | ||
1115 | 0x3f, 0x80, /* 0011111110 */ | ||
1116 | 0x61, 0x80, /* 0110000110 */ | ||
1117 | 0x01, 0x80, /* 0000000110 */ | ||
1118 | 0x03, 0x00, /* 0000001100 */ | ||
1119 | 0x03, 0x00, /* 0000001100 */ | ||
1120 | 0x06, 0x00, /* 0000011000 */ | ||
1121 | 0x06, 0x00, /* 0000011000 */ | ||
1122 | 0x0c, 0x00, /* 0000110000 */ | ||
1123 | 0x0c, 0x00, /* 0000110000 */ | ||
1124 | 0x18, 0x00, /* 0001100000 */ | ||
1125 | 0x18, 0x00, /* 0001100000 */ | ||
1126 | 0x30, 0x00, /* 0011000000 */ | ||
1127 | 0x30, 0x00, /* 0011000000 */ | ||
1128 | 0x00, 0x00, /* 0000000000 */ | ||
1129 | 0x00, 0x00, /* 0000000000 */ | ||
1130 | 0x00, 0x00, /* 0000000000 */ | ||
1131 | |||
1132 | /* 56 0x38 '8' */ | ||
1133 | 0x00, 0x00, /* 0000000000 */ | ||
1134 | 0x1e, 0x00, /* 0001111000 */ | ||
1135 | 0x23, 0x00, /* 0010001100 */ | ||
1136 | 0x61, 0x80, /* 0110000110 */ | ||
1137 | 0x61, 0x80, /* 0110000110 */ | ||
1138 | 0x31, 0x00, /* 0011000100 */ | ||
1139 | 0x1a, 0x00, /* 0001101000 */ | ||
1140 | 0x0c, 0x00, /* 0000110000 */ | ||
1141 | 0x16, 0x00, /* 0001011000 */ | ||
1142 | 0x23, 0x00, /* 0010001100 */ | ||
1143 | 0x61, 0x80, /* 0110000110 */ | ||
1144 | 0x61, 0x80, /* 0110000110 */ | ||
1145 | 0x61, 0x80, /* 0110000110 */ | ||
1146 | 0x31, 0x00, /* 0011000100 */ | ||
1147 | 0x1e, 0x00, /* 0001111000 */ | ||
1148 | 0x00, 0x00, /* 0000000000 */ | ||
1149 | 0x00, 0x00, /* 0000000000 */ | ||
1150 | 0x00, 0x00, /* 0000000000 */ | ||
1151 | |||
1152 | /* 57 0x39 '9' */ | ||
1153 | 0x00, 0x00, /* 0000000000 */ | ||
1154 | 0x0e, 0x00, /* 0000111000 */ | ||
1155 | 0x17, 0x00, /* 0001011100 */ | ||
1156 | 0x23, 0x80, /* 0010001110 */ | ||
1157 | 0x61, 0x80, /* 0110000110 */ | ||
1158 | 0x61, 0x80, /* 0110000110 */ | ||
1159 | 0x61, 0x80, /* 0110000110 */ | ||
1160 | 0x73, 0x80, /* 0111001110 */ | ||
1161 | 0x3d, 0x80, /* 0011110110 */ | ||
1162 | 0x19, 0x80, /* 0001100110 */ | ||
1163 | 0x01, 0x80, /* 0000000110 */ | ||
1164 | 0x03, 0x00, /* 0000001100 */ | ||
1165 | 0x03, 0x00, /* 0000001100 */ | ||
1166 | 0x06, 0x00, /* 0000011000 */ | ||
1167 | 0x0c, 0x00, /* 0000110000 */ | ||
1168 | 0x18, 0x00, /* 0001100000 */ | ||
1169 | 0x00, 0x00, /* 0000000000 */ | ||
1170 | 0x00, 0x00, /* 0000000000 */ | ||
1171 | |||
1172 | /* 58 0x3a ':' */ | ||
1173 | 0x00, 0x00, /* 0000000000 */ | ||
1174 | 0x00, 0x00, /* 0000000000 */ | ||
1175 | 0x00, 0x00, /* 0000000000 */ | ||
1176 | 0x00, 0x00, /* 0000000000 */ | ||
1177 | 0x18, 0x00, /* 0001100000 */ | ||
1178 | 0x3c, 0x00, /* 0011110000 */ | ||
1179 | 0x3c, 0x00, /* 0011110000 */ | ||
1180 | 0x18, 0x00, /* 0001100000 */ | ||
1181 | 0x00, 0x00, /* 0000000000 */ | ||
1182 | 0x00, 0x00, /* 0000000000 */ | ||
1183 | 0x18, 0x00, /* 0001100000 */ | ||
1184 | 0x3c, 0x00, /* 0011110000 */ | ||
1185 | 0x3c, 0x00, /* 0011110000 */ | ||
1186 | 0x18, 0x00, /* 0001100000 */ | ||
1187 | 0x00, 0x00, /* 0000000000 */ | ||
1188 | 0x00, 0x00, /* 0000000000 */ | ||
1189 | 0x00, 0x00, /* 0000000000 */ | ||
1190 | 0x00, 0x00, /* 0000000000 */ | ||
1191 | |||
1192 | /* 59 0x3b ';' */ | ||
1193 | 0x00, 0x00, /* 0000000000 */ | ||
1194 | 0x00, 0x00, /* 0000000000 */ | ||
1195 | 0x00, 0x00, /* 0000000000 */ | ||
1196 | 0x00, 0x00, /* 0000000000 */ | ||
1197 | 0x00, 0x00, /* 0000000000 */ | ||
1198 | 0x00, 0x00, /* 0000000000 */ | ||
1199 | 0x18, 0x00, /* 0001100000 */ | ||
1200 | 0x3c, 0x00, /* 0011110000 */ | ||
1201 | 0x3c, 0x00, /* 0011110000 */ | ||
1202 | 0x18, 0x00, /* 0001100000 */ | ||
1203 | 0x00, 0x00, /* 0000000000 */ | ||
1204 | 0x18, 0x00, /* 0001100000 */ | ||
1205 | 0x3c, 0x00, /* 0011110000 */ | ||
1206 | 0x3c, 0x00, /* 0011110000 */ | ||
1207 | 0x0c, 0x00, /* 0000110000 */ | ||
1208 | 0x18, 0x00, /* 0001100000 */ | ||
1209 | 0x30, 0x00, /* 0011000000 */ | ||
1210 | 0x20, 0x00, /* 0010000000 */ | ||
1211 | |||
1212 | /* 60 0x3c '<' */ | ||
1213 | 0x00, 0x00, /* 0000000000 */ | ||
1214 | 0x00, 0x00, /* 0000000000 */ | ||
1215 | 0x03, 0x00, /* 0000001100 */ | ||
1216 | 0x06, 0x00, /* 0000011000 */ | ||
1217 | 0x0c, 0x00, /* 0000110000 */ | ||
1218 | 0x18, 0x00, /* 0001100000 */ | ||
1219 | 0x30, 0x00, /* 0011000000 */ | ||
1220 | 0x60, 0x00, /* 0110000000 */ | ||
1221 | 0x60, 0x00, /* 0110000000 */ | ||
1222 | 0x30, 0x00, /* 0011000000 */ | ||
1223 | 0x18, 0x00, /* 0001100000 */ | ||
1224 | 0x0c, 0x00, /* 0000110000 */ | ||
1225 | 0x06, 0x00, /* 0000011000 */ | ||
1226 | 0x03, 0x00, /* 0000001100 */ | ||
1227 | 0x00, 0x00, /* 0000000000 */ | ||
1228 | 0x00, 0x00, /* 0000000000 */ | ||
1229 | 0x00, 0x00, /* 0000000000 */ | ||
1230 | 0x00, 0x00, /* 0000000000 */ | ||
1231 | |||
1232 | /* 61 0x3d '=' */ | ||
1233 | 0x00, 0x00, /* 0000000000 */ | ||
1234 | 0x00, 0x00, /* 0000000000 */ | ||
1235 | 0x00, 0x00, /* 0000000000 */ | ||
1236 | 0x00, 0x00, /* 0000000000 */ | ||
1237 | 0x00, 0x00, /* 0000000000 */ | ||
1238 | 0x00, 0x00, /* 0000000000 */ | ||
1239 | 0x7f, 0x80, /* 0111111110 */ | ||
1240 | 0x7f, 0x80, /* 0111111110 */ | ||
1241 | 0x00, 0x00, /* 0000000000 */ | ||
1242 | 0x00, 0x00, /* 0000000000 */ | ||
1243 | 0x7f, 0x80, /* 0111111110 */ | ||
1244 | 0x7f, 0x80, /* 0111111110 */ | ||
1245 | 0x00, 0x00, /* 0000000000 */ | ||
1246 | 0x00, 0x00, /* 0000000000 */ | ||
1247 | 0x00, 0x00, /* 0000000000 */ | ||
1248 | 0x00, 0x00, /* 0000000000 */ | ||
1249 | 0x00, 0x00, /* 0000000000 */ | ||
1250 | 0x00, 0x00, /* 0000000000 */ | ||
1251 | |||
1252 | /* 62 0x3e '>' */ | ||
1253 | 0x00, 0x00, /* 0000000000 */ | ||
1254 | 0x00, 0x00, /* 0000000000 */ | ||
1255 | 0x30, 0x00, /* 0011000000 */ | ||
1256 | 0x18, 0x00, /* 0001100000 */ | ||
1257 | 0x0c, 0x00, /* 0000110000 */ | ||
1258 | 0x06, 0x00, /* 0000011000 */ | ||
1259 | 0x03, 0x00, /* 0000001100 */ | ||
1260 | 0x01, 0x80, /* 0000000110 */ | ||
1261 | 0x01, 0x80, /* 0000000110 */ | ||
1262 | 0x03, 0x00, /* 0000001100 */ | ||
1263 | 0x06, 0x00, /* 0000011000 */ | ||
1264 | 0x0c, 0x00, /* 0000110000 */ | ||
1265 | 0x18, 0x00, /* 0001100000 */ | ||
1266 | 0x30, 0x00, /* 0011000000 */ | ||
1267 | 0x00, 0x00, /* 0000000000 */ | ||
1268 | 0x00, 0x00, /* 0000000000 */ | ||
1269 | 0x00, 0x00, /* 0000000000 */ | ||
1270 | 0x00, 0x00, /* 0000000000 */ | ||
1271 | |||
1272 | /* 63 0x3f '?' */ | ||
1273 | 0x00, 0x00, /* 0000000000 */ | ||
1274 | 0x0e, 0x00, /* 0000111000 */ | ||
1275 | 0x1f, 0x00, /* 0001111100 */ | ||
1276 | 0x3b, 0x80, /* 0011101110 */ | ||
1277 | 0x21, 0x80, /* 0010000110 */ | ||
1278 | 0x01, 0x80, /* 0000000110 */ | ||
1279 | 0x03, 0x00, /* 0000001100 */ | ||
1280 | 0x06, 0x00, /* 0000011000 */ | ||
1281 | 0x06, 0x00, /* 0000011000 */ | ||
1282 | 0x0c, 0x00, /* 0000110000 */ | ||
1283 | 0x0c, 0x00, /* 0000110000 */ | ||
1284 | 0x00, 0x00, /* 0000000000 */ | ||
1285 | 0x00, 0x00, /* 0000000000 */ | ||
1286 | 0x0c, 0x00, /* 0000110000 */ | ||
1287 | 0x0c, 0x00, /* 0000110000 */ | ||
1288 | 0x00, 0x00, /* 0000000000 */ | ||
1289 | 0x00, 0x00, /* 0000000000 */ | ||
1290 | 0x00, 0x00, /* 0000000000 */ | ||
1291 | |||
1292 | /* 64 0x40 '@' */ | ||
1293 | 0x00, 0x00, /* 0000000000 */ | ||
1294 | 0x00, 0x00, /* 0000000000 */ | ||
1295 | 0x0e, 0x00, /* 0000111000 */ | ||
1296 | 0x3f, 0x00, /* 0011111100 */ | ||
1297 | 0x31, 0x80, /* 0011000110 */ | ||
1298 | 0x65, 0x80, /* 0110010110 */ | ||
1299 | 0x6d, 0x80, /* 0110110110 */ | ||
1300 | 0x6d, 0x80, /* 0110110110 */ | ||
1301 | 0x6d, 0x80, /* 0110110110 */ | ||
1302 | 0x6d, 0x80, /* 0110110110 */ | ||
1303 | 0x6f, 0x80, /* 0110111110 */ | ||
1304 | 0x60, 0x00, /* 0110000000 */ | ||
1305 | 0x31, 0x80, /* 0011000110 */ | ||
1306 | 0x3f, 0x80, /* 0011111110 */ | ||
1307 | 0x0f, 0x00, /* 0000111100 */ | ||
1308 | 0x00, 0x00, /* 0000000000 */ | ||
1309 | 0x00, 0x00, /* 0000000000 */ | ||
1310 | 0x00, 0x00, /* 0000000000 */ | ||
1311 | |||
1312 | /* 65 0x41 'A' */ | ||
1313 | 0x00, 0x00, /* 0000000000 */ | ||
1314 | 0x04, 0x00, /* 0000010000 */ | ||
1315 | 0x04, 0x00, /* 0000010000 */ | ||
1316 | 0x0e, 0x00, /* 0000111000 */ | ||
1317 | 0x0e, 0x00, /* 0000111000 */ | ||
1318 | 0x1b, 0x00, /* 0001101100 */ | ||
1319 | 0x1b, 0x00, /* 0001101100 */ | ||
1320 | 0x19, 0x80, /* 0001100110 */ | ||
1321 | 0x31, 0x80, /* 0011000110 */ | ||
1322 | 0x3f, 0x80, /* 0011111110 */ | ||
1323 | 0x31, 0x80, /* 0011000110 */ | ||
1324 | 0x61, 0x80, /* 0110000110 */ | ||
1325 | 0x60, 0xc0, /* 0110000011 */ | ||
1326 | 0x60, 0xc0, /* 0110000011 */ | ||
1327 | 0xf1, 0xc0, /* 1111000111 */ | ||
1328 | 0x00, 0x00, /* 0000000000 */ | ||
1329 | 0x00, 0x00, /* 0000000000 */ | ||
1330 | 0x00, 0x00, /* 0000000000 */ | ||
1331 | |||
1332 | /* 66 0x42 'B' */ | ||
1333 | 0x00, 0x00, /* 0000000000 */ | ||
1334 | 0xfc, 0x00, /* 1111110000 */ | ||
1335 | 0x62, 0x00, /* 0110001000 */ | ||
1336 | 0x63, 0x00, /* 0110001100 */ | ||
1337 | 0x63, 0x00, /* 0110001100 */ | ||
1338 | 0x63, 0x00, /* 0110001100 */ | ||
1339 | 0x66, 0x00, /* 0110011000 */ | ||
1340 | 0x7e, 0x00, /* 0111111000 */ | ||
1341 | 0x63, 0x00, /* 0110001100 */ | ||
1342 | 0x61, 0x80, /* 0110000110 */ | ||
1343 | 0x61, 0x80, /* 0110000110 */ | ||
1344 | 0x61, 0x80, /* 0110000110 */ | ||
1345 | 0x61, 0x80, /* 0110000110 */ | ||
1346 | 0x63, 0x00, /* 0110001100 */ | ||
1347 | 0xfe, 0x00, /* 1111111000 */ | ||
1348 | 0x00, 0x00, /* 0000000000 */ | ||
1349 | 0x00, 0x00, /* 0000000000 */ | ||
1350 | 0x00, 0x00, /* 0000000000 */ | ||
1351 | |||
1352 | /* 67 0x43 'C' */ | ||
1353 | 0x00, 0x00, /* 0000000000 */ | ||
1354 | 0x0f, 0x00, /* 0000111100 */ | ||
1355 | 0x11, 0x80, /* 0001000110 */ | ||
1356 | 0x20, 0x80, /* 0010000010 */ | ||
1357 | 0x20, 0x00, /* 0010000000 */ | ||
1358 | 0x60, 0x00, /* 0110000000 */ | ||
1359 | 0x60, 0x00, /* 0110000000 */ | ||
1360 | 0x60, 0x00, /* 0110000000 */ | ||
1361 | 0x60, 0x00, /* 0110000000 */ | ||
1362 | 0x60, 0x00, /* 0110000000 */ | ||
1363 | 0x60, 0x00, /* 0110000000 */ | ||
1364 | 0x20, 0x00, /* 0010000000 */ | ||
1365 | 0x30, 0x80, /* 0011000010 */ | ||
1366 | 0x19, 0x00, /* 0001100100 */ | ||
1367 | 0x0e, 0x00, /* 0000111000 */ | ||
1368 | 0x00, 0x00, /* 0000000000 */ | ||
1369 | 0x00, 0x00, /* 0000000000 */ | ||
1370 | 0x00, 0x00, /* 0000000000 */ | ||
1371 | |||
1372 | /* 68 0x44 'D' */ | ||
1373 | 0x00, 0x00, /* 0000000000 */ | ||
1374 | 0xfc, 0x00, /* 1111110000 */ | ||
1375 | 0x67, 0x00, /* 0110011100 */ | ||
1376 | 0x63, 0x00, /* 0110001100 */ | ||
1377 | 0x61, 0x80, /* 0110000110 */ | ||
1378 | 0x61, 0x80, /* 0110000110 */ | ||
1379 | 0x61, 0x80, /* 0110000110 */ | ||
1380 | 0x61, 0x80, /* 0110000110 */ | ||
1381 | 0x61, 0x80, /* 0110000110 */ | ||
1382 | 0x61, 0x80, /* 0110000110 */ | ||
1383 | 0x61, 0x80, /* 0110000110 */ | ||
1384 | 0x61, 0x80, /* 0110000110 */ | ||
1385 | 0x61, 0x00, /* 0110000100 */ | ||
1386 | 0x66, 0x00, /* 0110011000 */ | ||
1387 | 0xf8, 0x00, /* 1111100000 */ | ||
1388 | 0x00, 0x00, /* 0000000000 */ | ||
1389 | 0x00, 0x00, /* 0000000000 */ | ||
1390 | 0x00, 0x00, /* 0000000000 */ | ||
1391 | |||
1392 | /* 69 0x45 'E' */ | ||
1393 | 0x00, 0x00, /* 0000000000 */ | ||
1394 | 0x7f, 0x80, /* 0111111110 */ | ||
1395 | 0x30, 0x80, /* 0011000010 */ | ||
1396 | 0x30, 0x80, /* 0011000010 */ | ||
1397 | 0x30, 0x00, /* 0011000000 */ | ||
1398 | 0x30, 0x00, /* 0011000000 */ | ||
1399 | 0x31, 0x00, /* 0011000100 */ | ||
1400 | 0x3f, 0x00, /* 0011111100 */ | ||
1401 | 0x31, 0x00, /* 0011000100 */ | ||
1402 | 0x30, 0x00, /* 0011000000 */ | ||
1403 | 0x30, 0x00, /* 0011000000 */ | ||
1404 | 0x30, 0x00, /* 0011000000 */ | ||
1405 | 0x30, 0x80, /* 0011000010 */ | ||
1406 | 0x30, 0x80, /* 0011000010 */ | ||
1407 | 0x7f, 0x80, /* 0111111110 */ | ||
1408 | 0x00, 0x00, /* 0000000000 */ | ||
1409 | 0x00, 0x00, /* 0000000000 */ | ||
1410 | 0x00, 0x00, /* 0000000000 */ | ||
1411 | |||
1412 | /* 70 0x46 'F' */ | ||
1413 | 0x00, 0x00, /* 0000000000 */ | ||
1414 | 0x7f, 0x80, /* 0111111110 */ | ||
1415 | 0x30, 0x80, /* 0011000010 */ | ||
1416 | 0x30, 0x80, /* 0011000010 */ | ||
1417 | 0x30, 0x00, /* 0011000000 */ | ||
1418 | 0x30, 0x00, /* 0011000000 */ | ||
1419 | 0x31, 0x00, /* 0011000100 */ | ||
1420 | 0x3f, 0x00, /* 0011111100 */ | ||
1421 | 0x31, 0x00, /* 0011000100 */ | ||
1422 | 0x30, 0x00, /* 0011000000 */ | ||
1423 | 0x30, 0x00, /* 0011000000 */ | ||
1424 | 0x30, 0x00, /* 0011000000 */ | ||
1425 | 0x30, 0x00, /* 0011000000 */ | ||
1426 | 0x30, 0x00, /* 0011000000 */ | ||
1427 | 0x78, 0x00, /* 0111100000 */ | ||
1428 | 0x00, 0x00, /* 0000000000 */ | ||
1429 | 0x00, 0x00, /* 0000000000 */ | ||
1430 | 0x00, 0x00, /* 0000000000 */ | ||
1431 | |||
1432 | /* 71 0x47 'G' */ | ||
1433 | 0x00, 0x00, /* 0000000000 */ | ||
1434 | 0x0f, 0x00, /* 0000111100 */ | ||
1435 | 0x11, 0x80, /* 0001000110 */ | ||
1436 | 0x20, 0x80, /* 0010000010 */ | ||
1437 | 0x20, 0x00, /* 0010000000 */ | ||
1438 | 0x60, 0x00, /* 0110000000 */ | ||
1439 | 0x60, 0x00, /* 0110000000 */ | ||
1440 | 0x60, 0x00, /* 0110000000 */ | ||
1441 | 0x60, 0x00, /* 0110000000 */ | ||
1442 | 0x67, 0xc0, /* 0110011111 */ | ||
1443 | 0x61, 0x80, /* 0110000110 */ | ||
1444 | 0x21, 0x80, /* 0010000110 */ | ||
1445 | 0x31, 0x80, /* 0011000110 */ | ||
1446 | 0x19, 0x80, /* 0001100110 */ | ||
1447 | 0x0e, 0x00, /* 0000111000 */ | ||
1448 | 0x00, 0x00, /* 0000000000 */ | ||
1449 | 0x00, 0x00, /* 0000000000 */ | ||
1450 | 0x00, 0x00, /* 0000000000 */ | ||
1451 | |||
1452 | /* 72 0x48 'H' */ | ||
1453 | 0x00, 0x00, /* 0000000000 */ | ||
1454 | 0xf3, 0xc0, /* 1111001111 */ | ||
1455 | 0x61, 0x80, /* 0110000110 */ | ||
1456 | 0x61, 0x80, /* 0110000110 */ | ||
1457 | 0x61, 0x80, /* 0110000110 */ | ||
1458 | 0x61, 0x80, /* 0110000110 */ | ||
1459 | 0x61, 0x80, /* 0110000110 */ | ||
1460 | 0x7f, 0x80, /* 0111111110 */ | ||
1461 | 0x61, 0x80, /* 0110000110 */ | ||
1462 | 0x61, 0x80, /* 0110000110 */ | ||
1463 | 0x61, 0x80, /* 0110000110 */ | ||
1464 | 0x61, 0x80, /* 0110000110 */ | ||
1465 | 0x61, 0x80, /* 0110000110 */ | ||
1466 | 0x61, 0x80, /* 0110000110 */ | ||
1467 | 0xf3, 0xc0, /* 1111001111 */ | ||
1468 | 0x00, 0x00, /* 0000000000 */ | ||
1469 | 0x00, 0x00, /* 0000000000 */ | ||
1470 | 0x00, 0x00, /* 0000000000 */ | ||
1471 | |||
1472 | /* 73 0x49 'I' */ | ||
1473 | 0x00, 0x00, /* 0000000000 */ | ||
1474 | 0x3f, 0x00, /* 0011111100 */ | ||
1475 | 0x0c, 0x00, /* 0000110000 */ | ||
1476 | 0x0c, 0x00, /* 0000110000 */ | ||
1477 | 0x0c, 0x00, /* 0000110000 */ | ||
1478 | 0x0c, 0x00, /* 0000110000 */ | ||
1479 | 0x0c, 0x00, /* 0000110000 */ | ||
1480 | 0x0c, 0x00, /* 0000110000 */ | ||
1481 | 0x0c, 0x00, /* 0000110000 */ | ||
1482 | 0x0c, 0x00, /* 0000110000 */ | ||
1483 | 0x0c, 0x00, /* 0000110000 */ | ||
1484 | 0x0c, 0x00, /* 0000110000 */ | ||
1485 | 0x0c, 0x00, /* 0000110000 */ | ||
1486 | 0x0c, 0x00, /* 0000110000 */ | ||
1487 | 0x3f, 0x00, /* 0011111100 */ | ||
1488 | 0x00, 0x00, /* 0000000000 */ | ||
1489 | 0x00, 0x00, /* 0000000000 */ | ||
1490 | 0x00, 0x00, /* 0000000000 */ | ||
1491 | |||
1492 | /* 74 0x4a 'J' */ | ||
1493 | 0x00, 0x00, /* 0000000000 */ | ||
1494 | 0x3f, 0x00, /* 0011111100 */ | ||
1495 | 0x0c, 0x00, /* 0000110000 */ | ||
1496 | 0x0c, 0x00, /* 0000110000 */ | ||
1497 | 0x0c, 0x00, /* 0000110000 */ | ||
1498 | 0x0c, 0x00, /* 0000110000 */ | ||
1499 | 0x0c, 0x00, /* 0000110000 */ | ||
1500 | 0x0c, 0x00, /* 0000110000 */ | ||
1501 | 0x0c, 0x00, /* 0000110000 */ | ||
1502 | 0x0c, 0x00, /* 0000110000 */ | ||
1503 | 0x0c, 0x00, /* 0000110000 */ | ||
1504 | 0x0c, 0x00, /* 0000110000 */ | ||
1505 | 0x0c, 0x00, /* 0000110000 */ | ||
1506 | 0x0c, 0x00, /* 0000110000 */ | ||
1507 | 0x08, 0x00, /* 0000100000 */ | ||
1508 | 0x70, 0x00, /* 0111000000 */ | ||
1509 | 0x60, 0x00, /* 0110000000 */ | ||
1510 | 0x00, 0x00, /* 0000000000 */ | ||
1511 | |||
1512 | /* 75 0x4b 'K' */ | ||
1513 | 0x00, 0x00, /* 0000000000 */ | ||
1514 | 0xf1, 0x80, /* 1111000110 */ | ||
1515 | 0x63, 0x00, /* 0110001100 */ | ||
1516 | 0x66, 0x00, /* 0110011000 */ | ||
1517 | 0x6c, 0x00, /* 0110110000 */ | ||
1518 | 0x78, 0x00, /* 0111100000 */ | ||
1519 | 0x70, 0x00, /* 0111000000 */ | ||
1520 | 0x70, 0x00, /* 0111000000 */ | ||
1521 | 0x78, 0x00, /* 0111100000 */ | ||
1522 | 0x78, 0x00, /* 0111100000 */ | ||
1523 | 0x6c, 0x00, /* 0110110000 */ | ||
1524 | 0x66, 0x00, /* 0110011000 */ | ||
1525 | 0x63, 0x00, /* 0110001100 */ | ||
1526 | 0x61, 0x80, /* 0110000110 */ | ||
1527 | 0xf0, 0xc0, /* 1111000011 */ | ||
1528 | 0x00, 0x00, /* 0000000000 */ | ||
1529 | 0x00, 0x00, /* 0000000000 */ | ||
1530 | 0x00, 0x00, /* 0000000000 */ | ||
1531 | |||
1532 | /* 76 0x4c 'L' */ | ||
1533 | 0x00, 0x00, /* 0000000000 */ | ||
1534 | 0x78, 0x00, /* 0111100000 */ | ||
1535 | 0x30, 0x00, /* 0011000000 */ | ||
1536 | 0x30, 0x00, /* 0011000000 */ | ||
1537 | 0x30, 0x00, /* 0011000000 */ | ||
1538 | 0x30, 0x00, /* 0011000000 */ | ||
1539 | 0x30, 0x00, /* 0011000000 */ | ||
1540 | 0x30, 0x00, /* 0011000000 */ | ||
1541 | 0x30, 0x00, /* 0011000000 */ | ||
1542 | 0x30, 0x00, /* 0011000000 */ | ||
1543 | 0x30, 0x00, /* 0011000000 */ | ||
1544 | 0x30, 0x00, /* 0011000000 */ | ||
1545 | 0x30, 0x80, /* 0011000010 */ | ||
1546 | 0x30, 0x80, /* 0011000010 */ | ||
1547 | 0x7f, 0x80, /* 0111111110 */ | ||
1548 | 0x00, 0x00, /* 0000000000 */ | ||
1549 | 0x00, 0x00, /* 0000000000 */ | ||
1550 | 0x00, 0x00, /* 0000000000 */ | ||
1551 | |||
1552 | /* 77 0x4d 'M' */ | ||
1553 | 0x00, 0x00, /* 0000000000 */ | ||
1554 | 0xe0, 0xc0, /* 1110000011 */ | ||
1555 | 0x61, 0x80, /* 0110000110 */ | ||
1556 | 0x73, 0x80, /* 0111001110 */ | ||
1557 | 0x73, 0x80, /* 0111001110 */ | ||
1558 | 0x6d, 0x80, /* 0110110110 */ | ||
1559 | 0x6d, 0x80, /* 0110110110 */ | ||
1560 | 0x61, 0x80, /* 0110000110 */ | ||
1561 | 0x61, 0x80, /* 0110000110 */ | ||
1562 | 0x61, 0x80, /* 0110000110 */ | ||
1563 | 0x61, 0x80, /* 0110000110 */ | ||
1564 | 0x61, 0x80, /* 0110000110 */ | ||
1565 | 0x61, 0x80, /* 0110000110 */ | ||
1566 | 0x61, 0x80, /* 0110000110 */ | ||
1567 | 0xf3, 0xc0, /* 1111001111 */ | ||
1568 | 0x00, 0x00, /* 0000000000 */ | ||
1569 | 0x00, 0x00, /* 0000000000 */ | ||
1570 | 0x00, 0x00, /* 0000000000 */ | ||
1571 | |||
1572 | /* 78 0x4e 'N' */ | ||
1573 | 0x00, 0x00, /* 0000000000 */ | ||
1574 | 0xf3, 0xc0, /* 1111001111 */ | ||
1575 | 0x61, 0x80, /* 0110000110 */ | ||
1576 | 0x61, 0x80, /* 0110000110 */ | ||
1577 | 0x71, 0x80, /* 0111000110 */ | ||
1578 | 0x79, 0x80, /* 0111100110 */ | ||
1579 | 0x79, 0x80, /* 0111100110 */ | ||
1580 | 0x6d, 0x80, /* 0110110110 */ | ||
1581 | 0x6d, 0x80, /* 0110110110 */ | ||
1582 | 0x67, 0x80, /* 0110011110 */ | ||
1583 | 0x67, 0x80, /* 0110011110 */ | ||
1584 | 0x63, 0x80, /* 0110001110 */ | ||
1585 | 0x61, 0x80, /* 0110000110 */ | ||
1586 | 0x61, 0x80, /* 0110000110 */ | ||
1587 | 0xf3, 0xc0, /* 1111001111 */ | ||
1588 | 0x00, 0x00, /* 0000000000 */ | ||
1589 | 0x00, 0x00, /* 0000000000 */ | ||
1590 | 0x00, 0x00, /* 0000000000 */ | ||
1591 | |||
1592 | /* 79 0x4f 'O' */ | ||
1593 | 0x00, 0x00, /* 0000000000 */ | ||
1594 | 0x0c, 0x00, /* 0000110000 */ | ||
1595 | 0x17, 0x00, /* 0001011100 */ | ||
1596 | 0x23, 0x00, /* 0010001100 */ | ||
1597 | 0x21, 0x80, /* 0010000110 */ | ||
1598 | 0x61, 0x80, /* 0110000110 */ | ||
1599 | 0x61, 0x80, /* 0110000110 */ | ||
1600 | 0x61, 0x80, /* 0110000110 */ | ||
1601 | 0x61, 0x80, /* 0110000110 */ | ||
1602 | 0x61, 0x80, /* 0110000110 */ | ||
1603 | 0x61, 0x80, /* 0110000110 */ | ||
1604 | 0x21, 0x00, /* 0010000100 */ | ||
1605 | 0x31, 0x00, /* 0011000100 */ | ||
1606 | 0x1a, 0x00, /* 0001101000 */ | ||
1607 | 0x0c, 0x00, /* 0000110000 */ | ||
1608 | 0x00, 0x00, /* 0000000000 */ | ||
1609 | 0x00, 0x00, /* 0000000000 */ | ||
1610 | 0x00, 0x00, /* 0000000000 */ | ||
1611 | |||
1612 | /* 80 0x50 'P' */ | ||
1613 | 0x00, 0x00, /* 0000000000 */ | ||
1614 | 0xfe, 0x00, /* 1111111000 */ | ||
1615 | 0x63, 0x00, /* 0110001100 */ | ||
1616 | 0x61, 0x80, /* 0110000110 */ | ||
1617 | 0x61, 0x80, /* 0110000110 */ | ||
1618 | 0x61, 0x80, /* 0110000110 */ | ||
1619 | 0x63, 0x00, /* 0110001100 */ | ||
1620 | 0x7e, 0x00, /* 0111111000 */ | ||
1621 | 0x60, 0x00, /* 0110000000 */ | ||
1622 | 0x60, 0x00, /* 0110000000 */ | ||
1623 | 0x60, 0x00, /* 0110000000 */ | ||
1624 | 0x60, 0x00, /* 0110000000 */ | ||
1625 | 0x60, 0x00, /* 0110000000 */ | ||
1626 | 0x60, 0x00, /* 0110000000 */ | ||
1627 | 0xf0, 0x00, /* 1111000000 */ | ||
1628 | 0x00, 0x00, /* 0000000000 */ | ||
1629 | 0x00, 0x00, /* 0000000000 */ | ||
1630 | 0x00, 0x00, /* 0000000000 */ | ||
1631 | |||
1632 | /* 81 0x51 'Q' */ | ||
1633 | 0x00, 0x00, /* 0000000000 */ | ||
1634 | 0x0e, 0x00, /* 0000111000 */ | ||
1635 | 0x13, 0x00, /* 0001001100 */ | ||
1636 | 0x23, 0x00, /* 0010001100 */ | ||
1637 | 0x21, 0x80, /* 0010000110 */ | ||
1638 | 0x61, 0x80, /* 0110000110 */ | ||
1639 | 0x61, 0x80, /* 0110000110 */ | ||
1640 | 0x61, 0x80, /* 0110000110 */ | ||
1641 | 0x61, 0x80, /* 0110000110 */ | ||
1642 | 0x61, 0x80, /* 0110000110 */ | ||
1643 | 0x31, 0x80, /* 0011000110 */ | ||
1644 | 0x3b, 0x00, /* 0011101100 */ | ||
1645 | 0x1e, 0x00, /* 0001111000 */ | ||
1646 | 0x0c, 0x00, /* 0000110000 */ | ||
1647 | 0x1e, 0x00, /* 0001111000 */ | ||
1648 | 0x26, 0x00, /* 0010011000 */ | ||
1649 | 0x03, 0x80, /* 0000001110 */ | ||
1650 | 0x00, 0x00, /* 0000000000 */ | ||
1651 | |||
1652 | /* 82 0x52 'R' */ | ||
1653 | 0x00, 0x00, /* 0000000000 */ | ||
1654 | 0xfe, 0x00, /* 1111111000 */ | ||
1655 | 0x63, 0x00, /* 0110001100 */ | ||
1656 | 0x61, 0x80, /* 0110000110 */ | ||
1657 | 0x61, 0x80, /* 0110000110 */ | ||
1658 | 0x61, 0x80, /* 0110000110 */ | ||
1659 | 0x61, 0x00, /* 0110000100 */ | ||
1660 | 0x7e, 0x00, /* 0111111000 */ | ||
1661 | 0x78, 0x00, /* 0111100000 */ | ||
1662 | 0x6c, 0x00, /* 0110110000 */ | ||
1663 | 0x6e, 0x00, /* 0110111000 */ | ||
1664 | 0x67, 0x00, /* 0110011100 */ | ||
1665 | 0x63, 0x80, /* 0110001110 */ | ||
1666 | 0x61, 0xc0, /* 0110000111 */ | ||
1667 | 0xf0, 0xc0, /* 1111000011 */ | ||
1668 | 0x00, 0x00, /* 0000000000 */ | ||
1669 | 0x00, 0x00, /* 0000000000 */ | ||
1670 | 0x00, 0x00, /* 0000000000 */ | ||
1671 | |||
1672 | /* 83 0x53 'S' */ | ||
1673 | 0x00, 0x00, /* 0000000000 */ | ||
1674 | 0x1f, 0x00, /* 0001111100 */ | ||
1675 | 0x31, 0x80, /* 0011000110 */ | ||
1676 | 0x60, 0x80, /* 0110000010 */ | ||
1677 | 0x60, 0x00, /* 0110000000 */ | ||
1678 | 0x60, 0x00, /* 0110000000 */ | ||
1679 | 0x30, 0x00, /* 0011000000 */ | ||
1680 | 0x18, 0x00, /* 0001100000 */ | ||
1681 | 0x0c, 0x00, /* 0000110000 */ | ||
1682 | 0x06, 0x00, /* 0000011000 */ | ||
1683 | 0x03, 0x00, /* 0000001100 */ | ||
1684 | 0x01, 0x80, /* 0000000110 */ | ||
1685 | 0x41, 0x80, /* 0100000110 */ | ||
1686 | 0x63, 0x00, /* 0110001100 */ | ||
1687 | 0x3e, 0x00, /* 0011111000 */ | ||
1688 | 0x00, 0x00, /* 0000000000 */ | ||
1689 | 0x00, 0x00, /* 0000000000 */ | ||
1690 | 0x00, 0x00, /* 0000000000 */ | ||
1691 | |||
1692 | /* 84 0x54 'T' */ | ||
1693 | 0x00, 0x00, /* 0000000000 */ | ||
1694 | 0x7f, 0x80, /* 0111111110 */ | ||
1695 | 0x4c, 0x80, /* 0100110010 */ | ||
1696 | 0x0c, 0x00, /* 0000110000 */ | ||
1697 | 0x0c, 0x00, /* 0000110000 */ | ||
1698 | 0x0c, 0x00, /* 0000110000 */ | ||
1699 | 0x0c, 0x00, /* 0000110000 */ | ||
1700 | 0x0c, 0x00, /* 0000110000 */ | ||
1701 | 0x0c, 0x00, /* 0000110000 */ | ||
1702 | 0x0c, 0x00, /* 0000110000 */ | ||
1703 | 0x0c, 0x00, /* 0000110000 */ | ||
1704 | 0x0c, 0x00, /* 0000110000 */ | ||
1705 | 0x0c, 0x00, /* 0000110000 */ | ||
1706 | 0x0c, 0x00, /* 0000110000 */ | ||
1707 | 0x3f, 0x00, /* 0011111100 */ | ||
1708 | 0x00, 0x00, /* 0000000000 */ | ||
1709 | 0x00, 0x00, /* 0000000000 */ | ||
1710 | 0x00, 0x00, /* 0000000000 */ | ||
1711 | |||
1712 | /* 85 0x55 'U' */ | ||
1713 | 0x00, 0x00, /* 0000000000 */ | ||
1714 | 0xf3, 0xc0, /* 1111001111 */ | ||
1715 | 0x61, 0x80, /* 0110000110 */ | ||
1716 | 0x61, 0x80, /* 0110000110 */ | ||
1717 | 0x61, 0x80, /* 0110000110 */ | ||
1718 | 0x61, 0x80, /* 0110000110 */ | ||
1719 | 0x61, 0x80, /* 0110000110 */ | ||
1720 | 0x61, 0x80, /* 0110000110 */ | ||
1721 | 0x61, 0x80, /* 0110000110 */ | ||
1722 | 0x61, 0x80, /* 0110000110 */ | ||
1723 | 0x61, 0x80, /* 0110000110 */ | ||
1724 | 0x61, 0x80, /* 0110000110 */ | ||
1725 | 0x73, 0x00, /* 0111001100 */ | ||
1726 | 0x3f, 0x00, /* 0011111100 */ | ||
1727 | 0x1e, 0x00, /* 0001111000 */ | ||
1728 | 0x00, 0x00, /* 0000000000 */ | ||
1729 | 0x00, 0x00, /* 0000000000 */ | ||
1730 | 0x00, 0x00, /* 0000000000 */ | ||
1731 | |||
1732 | /* 86 0x56 'V' */ | ||
1733 | 0x00, 0x00, /* 0000000000 */ | ||
1734 | 0xe1, 0xc0, /* 1110000111 */ | ||
1735 | 0xc0, 0xc0, /* 1100000011 */ | ||
1736 | 0x61, 0x80, /* 0110000110 */ | ||
1737 | 0x61, 0x80, /* 0110000110 */ | ||
1738 | 0x61, 0x80, /* 0110000110 */ | ||
1739 | 0x33, 0x00, /* 0011001100 */ | ||
1740 | 0x33, 0x00, /* 0011001100 */ | ||
1741 | 0x33, 0x00, /* 0011001100 */ | ||
1742 | 0x12, 0x00, /* 0001001000 */ | ||
1743 | 0x1e, 0x00, /* 0001111000 */ | ||
1744 | 0x1e, 0x00, /* 0001111000 */ | ||
1745 | 0x0c, 0x00, /* 0000110000 */ | ||
1746 | 0x0c, 0x00, /* 0000110000 */ | ||
1747 | 0x0c, 0x00, /* 0000110000 */ | ||
1748 | 0x00, 0x00, /* 0000000000 */ | ||
1749 | 0x00, 0x00, /* 0000000000 */ | ||
1750 | 0x00, 0x00, /* 0000000000 */ | ||
1751 | |||
1752 | /* 87 0x57 'W' */ | ||
1753 | 0x00, 0x00, /* 0000000000 */ | ||
1754 | 0xe1, 0xc0, /* 1110000111 */ | ||
1755 | 0xc0, 0xc0, /* 1100000011 */ | ||
1756 | 0xc0, 0xc0, /* 1100000011 */ | ||
1757 | 0xc0, 0xc0, /* 1100000011 */ | ||
1758 | 0xe0, 0xc0, /* 1110000011 */ | ||
1759 | 0x61, 0x80, /* 0110000110 */ | ||
1760 | 0x6d, 0x80, /* 0110110110 */ | ||
1761 | 0x6d, 0x80, /* 0110110110 */ | ||
1762 | 0x7f, 0x80, /* 0111111110 */ | ||
1763 | 0x77, 0x00, /* 0111011100 */ | ||
1764 | 0x33, 0x00, /* 0011001100 */ | ||
1765 | 0x33, 0x00, /* 0011001100 */ | ||
1766 | 0x33, 0x00, /* 0011001100 */ | ||
1767 | 0x33, 0x00, /* 0011001100 */ | ||
1768 | 0x00, 0x00, /* 0000000000 */ | ||
1769 | 0x00, 0x00, /* 0000000000 */ | ||
1770 | 0x00, 0x00, /* 0000000000 */ | ||
1771 | |||
1772 | /* 88 0x58 'X' */ | ||
1773 | 0x00, 0x00, /* 0000000000 */ | ||
1774 | 0xf7, 0x80, /* 1111011110 */ | ||
1775 | 0x63, 0x00, /* 0110001100 */ | ||
1776 | 0x63, 0x00, /* 0110001100 */ | ||
1777 | 0x36, 0x00, /* 0011011000 */ | ||
1778 | 0x36, 0x00, /* 0011011000 */ | ||
1779 | 0x36, 0x00, /* 0011011000 */ | ||
1780 | 0x1c, 0x00, /* 0001110000 */ | ||
1781 | 0x1c, 0x00, /* 0001110000 */ | ||
1782 | 0x36, 0x00, /* 0011011000 */ | ||
1783 | 0x36, 0x00, /* 0011011000 */ | ||
1784 | 0x36, 0x00, /* 0011011000 */ | ||
1785 | 0x63, 0x00, /* 0110001100 */ | ||
1786 | 0x63, 0x00, /* 0110001100 */ | ||
1787 | 0xf7, 0x80, /* 1111011110 */ | ||
1788 | 0x00, 0x00, /* 0000000000 */ | ||
1789 | 0x00, 0x00, /* 0000000000 */ | ||
1790 | 0x00, 0x00, /* 0000000000 */ | ||
1791 | |||
1792 | /* 89 0x59 'Y' */ | ||
1793 | 0x00, 0x00, /* 0000000000 */ | ||
1794 | 0xf3, 0xc0, /* 1111001111 */ | ||
1795 | 0x61, 0x80, /* 0110000110 */ | ||
1796 | 0x61, 0x80, /* 0110000110 */ | ||
1797 | 0x33, 0x00, /* 0011001100 */ | ||
1798 | 0x33, 0x00, /* 0011001100 */ | ||
1799 | 0x1e, 0x00, /* 0001111000 */ | ||
1800 | 0x0c, 0x00, /* 0000110000 */ | ||
1801 | 0x0c, 0x00, /* 0000110000 */ | ||
1802 | 0x0c, 0x00, /* 0000110000 */ | ||
1803 | 0x0c, 0x00, /* 0000110000 */ | ||
1804 | 0x0c, 0x00, /* 0000110000 */ | ||
1805 | 0x0c, 0x00, /* 0000110000 */ | ||
1806 | 0x0c, 0x00, /* 0000110000 */ | ||
1807 | 0x1e, 0x00, /* 0001111000 */ | ||
1808 | 0x00, 0x00, /* 0000000000 */ | ||
1809 | 0x00, 0x00, /* 0000000000 */ | ||
1810 | 0x00, 0x00, /* 0000000000 */ | ||
1811 | |||
1812 | /* 90 0x5a 'Z' */ | ||
1813 | 0x00, 0x00, /* 0000000000 */ | ||
1814 | 0x3f, 0x80, /* 0011111110 */ | ||
1815 | 0x21, 0x80, /* 0010000110 */ | ||
1816 | 0x01, 0x80, /* 0000000110 */ | ||
1817 | 0x03, 0x00, /* 0000001100 */ | ||
1818 | 0x03, 0x00, /* 0000001100 */ | ||
1819 | 0x06, 0x00, /* 0000011000 */ | ||
1820 | 0x06, 0x00, /* 0000011000 */ | ||
1821 | 0x0c, 0x00, /* 0000110000 */ | ||
1822 | 0x0c, 0x00, /* 0000110000 */ | ||
1823 | 0x18, 0x00, /* 0001100000 */ | ||
1824 | 0x18, 0x00, /* 0001100000 */ | ||
1825 | 0x30, 0x00, /* 0011000000 */ | ||
1826 | 0x30, 0x80, /* 0011000010 */ | ||
1827 | 0x3f, 0x80, /* 0011111110 */ | ||
1828 | 0x00, 0x00, /* 0000000000 */ | ||
1829 | 0x00, 0x00, /* 0000000000 */ | ||
1830 | 0x00, 0x00, /* 0000000000 */ | ||
1831 | |||
1832 | /* 91 0x5b '[' */ | ||
1833 | 0x00, 0x00, /* 0000000000 */ | ||
1834 | 0x1f, 0x00, /* 0001111100 */ | ||
1835 | 0x1f, 0x00, /* 0001111100 */ | ||
1836 | 0x18, 0x00, /* 0001100000 */ | ||
1837 | 0x18, 0x00, /* 0001100000 */ | ||
1838 | 0x18, 0x00, /* 0001100000 */ | ||
1839 | 0x18, 0x00, /* 0001100000 */ | ||
1840 | 0x18, 0x00, /* 0001100000 */ | ||
1841 | 0x18, 0x00, /* 0001100000 */ | ||
1842 | 0x18, 0x00, /* 0001100000 */ | ||
1843 | 0x18, 0x00, /* 0001100000 */ | ||
1844 | 0x18, 0x00, /* 0001100000 */ | ||
1845 | 0x18, 0x00, /* 0001100000 */ | ||
1846 | 0x18, 0x00, /* 0001100000 */ | ||
1847 | 0x1f, 0x00, /* 0001111100 */ | ||
1848 | 0x1f, 0x00, /* 0001111100 */ | ||
1849 | 0x00, 0x00, /* 0000000000 */ | ||
1850 | 0x00, 0x00, /* 0000000000 */ | ||
1851 | |||
1852 | /* 92 0x5c '\' */ | ||
1853 | 0x00, 0x00, /* 0000000000 */ | ||
1854 | 0xc0, 0x00, /* 1100000000 */ | ||
1855 | 0x60, 0x00, /* 0110000000 */ | ||
1856 | 0x60, 0x00, /* 0110000000 */ | ||
1857 | 0x30, 0x00, /* 0011000000 */ | ||
1858 | 0x30, 0x00, /* 0011000000 */ | ||
1859 | 0x18, 0x00, /* 0001100000 */ | ||
1860 | 0x18, 0x00, /* 0001100000 */ | ||
1861 | 0x0c, 0x00, /* 0000110000 */ | ||
1862 | 0x0c, 0x00, /* 0000110000 */ | ||
1863 | 0x06, 0x00, /* 0000011000 */ | ||
1864 | 0x06, 0x00, /* 0000011000 */ | ||
1865 | 0x03, 0x00, /* 0000001100 */ | ||
1866 | 0x03, 0x00, /* 0000001100 */ | ||
1867 | 0x01, 0x80, /* 0000000110 */ | ||
1868 | 0x01, 0x80, /* 0000000110 */ | ||
1869 | 0x00, 0xc0, /* 0000000011 */ | ||
1870 | 0x00, 0x00, /* 0000000000 */ | ||
1871 | |||
1872 | /* 93 0x5d ']' */ | ||
1873 | 0x00, 0x00, /* 0000000000 */ | ||
1874 | 0x3e, 0x00, /* 0011111000 */ | ||
1875 | 0x3e, 0x00, /* 0011111000 */ | ||
1876 | 0x06, 0x00, /* 0000011000 */ | ||
1877 | 0x06, 0x00, /* 0000011000 */ | ||
1878 | 0x06, 0x00, /* 0000011000 */ | ||
1879 | 0x06, 0x00, /* 0000011000 */ | ||
1880 | 0x06, 0x00, /* 0000011000 */ | ||
1881 | 0x06, 0x00, /* 0000011000 */ | ||
1882 | 0x06, 0x00, /* 0000011000 */ | ||
1883 | 0x06, 0x00, /* 0000011000 */ | ||
1884 | 0x06, 0x00, /* 0000011000 */ | ||
1885 | 0x06, 0x00, /* 0000011000 */ | ||
1886 | 0x06, 0x00, /* 0000011000 */ | ||
1887 | 0x3e, 0x00, /* 0011111000 */ | ||
1888 | 0x3e, 0x00, /* 0011111000 */ | ||
1889 | 0x00, 0x00, /* 0000000000 */ | ||
1890 | 0x00, 0x00, /* 0000000000 */ | ||
1891 | |||
1892 | /* 94 0x5e '^' */ | ||
1893 | 0x00, 0x00, /* 0000000000 */ | ||
1894 | 0x0c, 0x00, /* 0000110000 */ | ||
1895 | 0x1e, 0x00, /* 0001111000 */ | ||
1896 | 0x33, 0x00, /* 0011001100 */ | ||
1897 | 0x61, 0x80, /* 0110000110 */ | ||
1898 | 0x00, 0x00, /* 0000000000 */ | ||
1899 | 0x00, 0x00, /* 0000000000 */ | ||
1900 | 0x00, 0x00, /* 0000000000 */ | ||
1901 | 0x00, 0x00, /* 0000000000 */ | ||
1902 | 0x00, 0x00, /* 0000000000 */ | ||
1903 | 0x00, 0x00, /* 0000000000 */ | ||
1904 | 0x00, 0x00, /* 0000000000 */ | ||
1905 | 0x00, 0x00, /* 0000000000 */ | ||
1906 | 0x00, 0x00, /* 0000000000 */ | ||
1907 | 0x00, 0x00, /* 0000000000 */ | ||
1908 | 0x00, 0x00, /* 0000000000 */ | ||
1909 | 0x00, 0x00, /* 0000000000 */ | ||
1910 | 0x00, 0x00, /* 0000000000 */ | ||
1911 | |||
1912 | /* 95 0x5f '_' */ | ||
1913 | 0x00, 0x00, /* 0000000000 */ | ||
1914 | 0x00, 0x00, /* 0000000000 */ | ||
1915 | 0x00, 0x00, /* 0000000000 */ | ||
1916 | 0x00, 0x00, /* 0000000000 */ | ||
1917 | 0x00, 0x00, /* 0000000000 */ | ||
1918 | 0x00, 0x00, /* 0000000000 */ | ||
1919 | 0x00, 0x00, /* 0000000000 */ | ||
1920 | 0x00, 0x00, /* 0000000000 */ | ||
1921 | 0x00, 0x00, /* 0000000000 */ | ||
1922 | 0x00, 0x00, /* 0000000000 */ | ||
1923 | 0x00, 0x00, /* 0000000000 */ | ||
1924 | 0x00, 0x00, /* 0000000000 */ | ||
1925 | 0x00, 0x00, /* 0000000000 */ | ||
1926 | 0x00, 0x00, /* 0000000000 */ | ||
1927 | 0x00, 0x00, /* 0000000000 */ | ||
1928 | 0xff, 0xc0, /* 1111111111 */ | ||
1929 | 0xff, 0xc0, /* 1111111111 */ | ||
1930 | 0x00, 0x00, /* 0000000000 */ | ||
1931 | |||
1932 | /* 96 0x60 '`' */ | ||
1933 | 0x04, 0x00, /* 0000010000 */ | ||
1934 | 0x0c, 0x00, /* 0000110000 */ | ||
1935 | 0x18, 0x00, /* 0001100000 */ | ||
1936 | 0x18, 0x00, /* 0001100000 */ | ||
1937 | 0x1e, 0x00, /* 0001111000 */ | ||
1938 | 0x1e, 0x00, /* 0001111000 */ | ||
1939 | 0x0c, 0x00, /* 0000110000 */ | ||
1940 | 0x00, 0x00, /* 0000000000 */ | ||
1941 | 0x00, 0x00, /* 0000000000 */ | ||
1942 | 0x00, 0x00, /* 0000000000 */ | ||
1943 | 0x00, 0x00, /* 0000000000 */ | ||
1944 | 0x00, 0x00, /* 0000000000 */ | ||
1945 | 0x00, 0x00, /* 0000000000 */ | ||
1946 | 0x00, 0x00, /* 0000000000 */ | ||
1947 | 0x00, 0x00, /* 0000000000 */ | ||
1948 | 0x00, 0x00, /* 0000000000 */ | ||
1949 | 0x00, 0x00, /* 0000000000 */ | ||
1950 | 0x00, 0x00, /* 0000000000 */ | ||
1951 | |||
1952 | /* 97 0x61 'a' */ | ||
1953 | 0x00, 0x00, /* 0000000000 */ | ||
1954 | 0x00, 0x00, /* 0000000000 */ | ||
1955 | 0x00, 0x00, /* 0000000000 */ | ||
1956 | 0x00, 0x00, /* 0000000000 */ | ||
1957 | 0x00, 0x00, /* 0000000000 */ | ||
1958 | 0x1f, 0x00, /* 0001111100 */ | ||
1959 | 0x31, 0x80, /* 0011000110 */ | ||
1960 | 0x21, 0x80, /* 0010000110 */ | ||
1961 | 0x07, 0x80, /* 0000011110 */ | ||
1962 | 0x39, 0x80, /* 0011100110 */ | ||
1963 | 0x61, 0x80, /* 0110000110 */ | ||
1964 | 0x61, 0x80, /* 0110000110 */ | ||
1965 | 0x61, 0x80, /* 0110000110 */ | ||
1966 | 0x73, 0x80, /* 0111001110 */ | ||
1967 | 0x3d, 0xc0, /* 0011110111 */ | ||
1968 | 0x00, 0x00, /* 0000000000 */ | ||
1969 | 0x00, 0x00, /* 0000000000 */ | ||
1970 | 0x00, 0x00, /* 0000000000 */ | ||
1971 | |||
1972 | /* 98 0x62 'b' */ | ||
1973 | 0x20, 0x00, /* 0010000000 */ | ||
1974 | 0x60, 0x00, /* 0110000000 */ | ||
1975 | 0xe0, 0x00, /* 1110000000 */ | ||
1976 | 0x60, 0x00, /* 0110000000 */ | ||
1977 | 0x60, 0x00, /* 0110000000 */ | ||
1978 | 0x66, 0x00, /* 0110011000 */ | ||
1979 | 0x6f, 0x00, /* 0110111100 */ | ||
1980 | 0x73, 0x80, /* 0111001110 */ | ||
1981 | 0x61, 0x80, /* 0110000110 */ | ||
1982 | 0x61, 0x80, /* 0110000110 */ | ||
1983 | 0x61, 0x80, /* 0110000110 */ | ||
1984 | 0x61, 0x80, /* 0110000110 */ | ||
1985 | 0x71, 0x80, /* 0111000110 */ | ||
1986 | 0x7b, 0x00, /* 0111101100 */ | ||
1987 | 0x4e, 0x00, /* 0100111000 */ | ||
1988 | 0x00, 0x00, /* 0000000000 */ | ||
1989 | 0x00, 0x00, /* 0000000000 */ | ||
1990 | 0x00, 0x00, /* 0000000000 */ | ||
1991 | |||
1992 | /* 99 0x63 'c' */ | ||
1993 | 0x00, 0x00, /* 0000000000 */ | ||
1994 | 0x00, 0x00, /* 0000000000 */ | ||
1995 | 0x00, 0x00, /* 0000000000 */ | ||
1996 | 0x00, 0x00, /* 0000000000 */ | ||
1997 | 0x00, 0x00, /* 0000000000 */ | ||
1998 | 0x1e, 0x00, /* 0001111000 */ | ||
1999 | 0x37, 0x00, /* 0011011100 */ | ||
2000 | 0x23, 0x00, /* 0010001100 */ | ||
2001 | 0x60, 0x00, /* 0110000000 */ | ||
2002 | 0x60, 0x00, /* 0110000000 */ | ||
2003 | 0x60, 0x00, /* 0110000000 */ | ||
2004 | 0x60, 0x00, /* 0110000000 */ | ||
2005 | 0x71, 0x00, /* 0111000100 */ | ||
2006 | 0x33, 0x00, /* 0011001100 */ | ||
2007 | 0x1e, 0x00, /* 0001111000 */ | ||
2008 | 0x00, 0x00, /* 0000000000 */ | ||
2009 | 0x00, 0x00, /* 0000000000 */ | ||
2010 | 0x00, 0x00, /* 0000000000 */ | ||
2011 | |||
2012 | /* 100 0x64 'd' */ | ||
2013 | 0x01, 0x80, /* 0000000110 */ | ||
2014 | 0x03, 0x80, /* 0000001110 */ | ||
2015 | 0x01, 0x80, /* 0000000110 */ | ||
2016 | 0x01, 0x80, /* 0000000110 */ | ||
2017 | 0x01, 0x80, /* 0000000110 */ | ||
2018 | 0x0d, 0x80, /* 0000110110 */ | ||
2019 | 0x37, 0x80, /* 0011011110 */ | ||
2020 | 0x23, 0x80, /* 0010001110 */ | ||
2021 | 0x61, 0x80, /* 0110000110 */ | ||
2022 | 0x61, 0x80, /* 0110000110 */ | ||
2023 | 0x61, 0x80, /* 0110000110 */ | ||
2024 | 0x61, 0x80, /* 0110000110 */ | ||
2025 | 0x73, 0x80, /* 0111001110 */ | ||
2026 | 0x35, 0x80, /* 0011010110 */ | ||
2027 | 0x19, 0xc0, /* 0001100111 */ | ||
2028 | 0x00, 0x00, /* 0000000000 */ | ||
2029 | 0x00, 0x00, /* 0000000000 */ | ||
2030 | 0x00, 0x00, /* 0000000000 */ | ||
2031 | |||
2032 | /* 101 0x65 'e' */ | ||
2033 | 0x00, 0x00, /* 0000000000 */ | ||
2034 | 0x00, 0x00, /* 0000000000 */ | ||
2035 | 0x00, 0x00, /* 0000000000 */ | ||
2036 | 0x00, 0x00, /* 0000000000 */ | ||
2037 | 0x00, 0x00, /* 0000000000 */ | ||
2038 | 0x0c, 0x00, /* 0000110000 */ | ||
2039 | 0x33, 0x00, /* 0011001100 */ | ||
2040 | 0x61, 0x80, /* 0110000110 */ | ||
2041 | 0x61, 0x80, /* 0110000110 */ | ||
2042 | 0x7f, 0x80, /* 0111111110 */ | ||
2043 | 0x60, 0x00, /* 0110000000 */ | ||
2044 | 0x60, 0x00, /* 0110000000 */ | ||
2045 | 0x30, 0x00, /* 0011000000 */ | ||
2046 | 0x19, 0x80, /* 0001100110 */ | ||
2047 | 0x0e, 0x00, /* 0000111000 */ | ||
2048 | 0x00, 0x00, /* 0000000000 */ | ||
2049 | 0x00, 0x00, /* 0000000000 */ | ||
2050 | 0x00, 0x00, /* 0000000000 */ | ||
2051 | |||
2052 | /* 102 0x66 'f' */ | ||
2053 | 0x07, 0x00, /* 0000011100 */ | ||
2054 | 0x09, 0x80, /* 0000100110 */ | ||
2055 | 0x09, 0x80, /* 0000100110 */ | ||
2056 | 0x18, 0x00, /* 0001100000 */ | ||
2057 | 0x18, 0x00, /* 0001100000 */ | ||
2058 | 0x18, 0x00, /* 0001100000 */ | ||
2059 | 0x18, 0x00, /* 0001100000 */ | ||
2060 | 0x7f, 0x00, /* 0111111100 */ | ||
2061 | 0x18, 0x00, /* 0001100000 */ | ||
2062 | 0x18, 0x00, /* 0001100000 */ | ||
2063 | 0x18, 0x00, /* 0001100000 */ | ||
2064 | 0x18, 0x00, /* 0001100000 */ | ||
2065 | 0x18, 0x00, /* 0001100000 */ | ||
2066 | 0x18, 0x00, /* 0001100000 */ | ||
2067 | 0x3c, 0x00, /* 0011110000 */ | ||
2068 | 0x00, 0x00, /* 0000000000 */ | ||
2069 | 0x00, 0x00, /* 0000000000 */ | ||
2070 | 0x00, 0x00, /* 0000000000 */ | ||
2071 | |||
2072 | /* 103 0x67 'g' */ | ||
2073 | 0x00, 0x00, /* 0000000000 */ | ||
2074 | 0x00, 0x00, /* 0000000000 */ | ||
2075 | 0x00, 0x00, /* 0000000000 */ | ||
2076 | 0x00, 0x00, /* 0000000000 */ | ||
2077 | 0x00, 0x00, /* 0000000000 */ | ||
2078 | 0x1c, 0x80, /* 0001110010 */ | ||
2079 | 0x37, 0x80, /* 0011011110 */ | ||
2080 | 0x63, 0x00, /* 0110001100 */ | ||
2081 | 0x63, 0x00, /* 0110001100 */ | ||
2082 | 0x36, 0x00, /* 0011011000 */ | ||
2083 | 0x3c, 0x00, /* 0011110000 */ | ||
2084 | 0x60, 0x00, /* 0110000000 */ | ||
2085 | 0x7f, 0x00, /* 0111111100 */ | ||
2086 | 0x3f, 0x80, /* 0011111110 */ | ||
2087 | 0x21, 0x80, /* 0010000110 */ | ||
2088 | 0x40, 0x80, /* 0100000010 */ | ||
2089 | 0x7f, 0x00, /* 0111111100 */ | ||
2090 | 0x3e, 0x00, /* 0011111000 */ | ||
2091 | |||
2092 | /* 104 0x68 'h' */ | ||
2093 | 0x10, 0x00, /* 0001000000 */ | ||
2094 | 0x30, 0x00, /* 0011000000 */ | ||
2095 | 0x70, 0x00, /* 0111000000 */ | ||
2096 | 0x30, 0x00, /* 0011000000 */ | ||
2097 | 0x30, 0x00, /* 0011000000 */ | ||
2098 | 0x37, 0x00, /* 0011011100 */ | ||
2099 | 0x3b, 0x80, /* 0011101110 */ | ||
2100 | 0x31, 0x80, /* 0011000110 */ | ||
2101 | 0x31, 0x80, /* 0011000110 */ | ||
2102 | 0x31, 0x80, /* 0011000110 */ | ||
2103 | 0x31, 0x80, /* 0011000110 */ | ||
2104 | 0x31, 0x80, /* 0011000110 */ | ||
2105 | 0x31, 0x80, /* 0011000110 */ | ||
2106 | 0x31, 0x80, /* 0011000110 */ | ||
2107 | 0x7b, 0xc0, /* 0111101111 */ | ||
2108 | 0x00, 0x00, /* 0000000000 */ | ||
2109 | 0x00, 0x00, /* 0000000000 */ | ||
2110 | 0x00, 0x00, /* 0000000000 */ | ||
2111 | |||
2112 | /* 105 0x69 'i' */ | ||
2113 | 0x00, 0x00, /* 0000000000 */ | ||
2114 | 0x0c, 0x00, /* 0000110000 */ | ||
2115 | 0x0c, 0x00, /* 0000110000 */ | ||
2116 | 0x00, 0x00, /* 0000000000 */ | ||
2117 | 0x00, 0x00, /* 0000000000 */ | ||
2118 | 0x3c, 0x00, /* 0011110000 */ | ||
2119 | 0x0c, 0x00, /* 0000110000 */ | ||
2120 | 0x0c, 0x00, /* 0000110000 */ | ||
2121 | 0x0c, 0x00, /* 0000110000 */ | ||
2122 | 0x0c, 0x00, /* 0000110000 */ | ||
2123 | 0x0c, 0x00, /* 0000110000 */ | ||
2124 | 0x0c, 0x00, /* 0000110000 */ | ||
2125 | 0x0c, 0x00, /* 0000110000 */ | ||
2126 | 0x0c, 0x00, /* 0000110000 */ | ||
2127 | 0x3f, 0x00, /* 0011111100 */ | ||
2128 | 0x00, 0x00, /* 0000000000 */ | ||
2129 | 0x00, 0x00, /* 0000000000 */ | ||
2130 | 0x00, 0x00, /* 0000000000 */ | ||
2131 | |||
2132 | /* 106 0x6a 'j' */ | ||
2133 | 0x00, 0x00, /* 0000000000 */ | ||
2134 | 0x01, 0x80, /* 0000000110 */ | ||
2135 | 0x01, 0x80, /* 0000000110 */ | ||
2136 | 0x00, 0x00, /* 0000000000 */ | ||
2137 | 0x00, 0x00, /* 0000000000 */ | ||
2138 | 0x07, 0x80, /* 0000011110 */ | ||
2139 | 0x01, 0x80, /* 0000000110 */ | ||
2140 | 0x01, 0x80, /* 0000000110 */ | ||
2141 | 0x01, 0x80, /* 0000000110 */ | ||
2142 | 0x01, 0x80, /* 0000000110 */ | ||
2143 | 0x01, 0x80, /* 0000000110 */ | ||
2144 | 0x01, 0x80, /* 0000000110 */ | ||
2145 | 0x01, 0x80, /* 0000000110 */ | ||
2146 | 0x41, 0x80, /* 0100000110 */ | ||
2147 | 0x61, 0x80, /* 0110000110 */ | ||
2148 | 0x71, 0x80, /* 0111000110 */ | ||
2149 | 0x3f, 0x00, /* 0011111100 */ | ||
2150 | 0x1c, 0x00, /* 0001110000 */ | ||
2151 | |||
2152 | /* 107 0x6b 'k' */ | ||
2153 | 0x60, 0x00, /* 0110000000 */ | ||
2154 | 0xe0, 0x00, /* 1110000000 */ | ||
2155 | 0x60, 0x00, /* 0110000000 */ | ||
2156 | 0x60, 0x00, /* 0110000000 */ | ||
2157 | 0x60, 0x00, /* 0110000000 */ | ||
2158 | 0x63, 0x80, /* 0110001110 */ | ||
2159 | 0x66, 0x00, /* 0110011000 */ | ||
2160 | 0x6c, 0x00, /* 0110110000 */ | ||
2161 | 0x78, 0x00, /* 0111100000 */ | ||
2162 | 0x70, 0x00, /* 0111000000 */ | ||
2163 | 0x78, 0x00, /* 0111100000 */ | ||
2164 | 0x6c, 0x00, /* 0110110000 */ | ||
2165 | 0x6e, 0x00, /* 0110111000 */ | ||
2166 | 0x67, 0x00, /* 0110011100 */ | ||
2167 | 0xf3, 0x80, /* 1111001110 */ | ||
2168 | 0x00, 0x00, /* 0000000000 */ | ||
2169 | 0x00, 0x00, /* 0000000000 */ | ||
2170 | 0x00, 0x00, /* 0000000000 */ | ||
2171 | |||
2172 | /* 108 0x6c 'l' */ | ||
2173 | 0x3c, 0x00, /* 0011110000 */ | ||
2174 | 0x0c, 0x00, /* 0000110000 */ | ||
2175 | 0x0c, 0x00, /* 0000110000 */ | ||
2176 | 0x0c, 0x00, /* 0000110000 */ | ||
2177 | 0x0c, 0x00, /* 0000110000 */ | ||
2178 | 0x0c, 0x00, /* 0000110000 */ | ||
2179 | 0x0c, 0x00, /* 0000110000 */ | ||
2180 | 0x0c, 0x00, /* 0000110000 */ | ||
2181 | 0x0c, 0x00, /* 0000110000 */ | ||
2182 | 0x0c, 0x00, /* 0000110000 */ | ||
2183 | 0x0c, 0x00, /* 0000110000 */ | ||
2184 | 0x0c, 0x00, /* 0000110000 */ | ||
2185 | 0x0c, 0x00, /* 0000110000 */ | ||
2186 | 0x0c, 0x00, /* 0000110000 */ | ||
2187 | 0x3f, 0x00, /* 0011111100 */ | ||
2188 | 0x00, 0x00, /* 0000000000 */ | ||
2189 | 0x00, 0x00, /* 0000000000 */ | ||
2190 | 0x00, 0x00, /* 0000000000 */ | ||
2191 | |||
2192 | /* 109 0x6d 'm' */ | ||
2193 | 0x00, 0x00, /* 0000000000 */ | ||
2194 | 0x00, 0x00, /* 0000000000 */ | ||
2195 | 0x00, 0x00, /* 0000000000 */ | ||
2196 | 0x00, 0x00, /* 0000000000 */ | ||
2197 | 0x00, 0x00, /* 0000000000 */ | ||
2198 | 0xdb, 0x80, /* 1101101110 */ | ||
2199 | 0x6d, 0x80, /* 0110110110 */ | ||
2200 | 0x6d, 0x80, /* 0110110110 */ | ||
2201 | 0x6d, 0x80, /* 0110110110 */ | ||
2202 | 0x6d, 0x80, /* 0110110110 */ | ||
2203 | 0x6d, 0x80, /* 0110110110 */ | ||
2204 | 0x6d, 0x80, /* 0110110110 */ | ||
2205 | 0x6d, 0x80, /* 0110110110 */ | ||
2206 | 0x6d, 0x80, /* 0110110110 */ | ||
2207 | 0xed, 0xc0, /* 1110110111 */ | ||
2208 | 0x00, 0x00, /* 0000000000 */ | ||
2209 | 0x00, 0x00, /* 0000000000 */ | ||
2210 | 0x00, 0x00, /* 0000000000 */ | ||
2211 | |||
2212 | /* 110 0x6e 'n' */ | ||
2213 | 0x00, 0x00, /* 0000000000 */ | ||
2214 | 0x00, 0x00, /* 0000000000 */ | ||
2215 | 0x00, 0x00, /* 0000000000 */ | ||
2216 | 0x00, 0x00, /* 0000000000 */ | ||
2217 | 0x00, 0x00, /* 0000000000 */ | ||
2218 | 0x6f, 0x00, /* 0110111100 */ | ||
2219 | 0x7b, 0x80, /* 0111101110 */ | ||
2220 | 0x31, 0x80, /* 0011000110 */ | ||
2221 | 0x31, 0x80, /* 0011000110 */ | ||
2222 | 0x31, 0x80, /* 0011000110 */ | ||
2223 | 0x31, 0x80, /* 0011000110 */ | ||
2224 | 0x31, 0x80, /* 0011000110 */ | ||
2225 | 0x31, 0x80, /* 0011000110 */ | ||
2226 | 0x31, 0x80, /* 0011000110 */ | ||
2227 | 0x7b, 0xc0, /* 0111101111 */ | ||
2228 | 0x00, 0x00, /* 0000000000 */ | ||
2229 | 0x00, 0x00, /* 0000000000 */ | ||
2230 | 0x00, 0x00, /* 0000000000 */ | ||
2231 | |||
2232 | /* 111 0x6f 'o' */ | ||
2233 | 0x00, 0x00, /* 0000000000 */ | ||
2234 | 0x00, 0x00, /* 0000000000 */ | ||
2235 | 0x00, 0x00, /* 0000000000 */ | ||
2236 | 0x00, 0x00, /* 0000000000 */ | ||
2237 | 0x00, 0x00, /* 0000000000 */ | ||
2238 | 0x3c, 0x00, /* 0011110000 */ | ||
2239 | 0x66, 0x00, /* 0110011000 */ | ||
2240 | 0xc3, 0x00, /* 1100001100 */ | ||
2241 | 0xc1, 0x80, /* 1100000110 */ | ||
2242 | 0xc1, 0x80, /* 1100000110 */ | ||
2243 | 0xc1, 0x80, /* 1100000110 */ | ||
2244 | 0xc1, 0x80, /* 1100000110 */ | ||
2245 | 0xe1, 0x80, /* 1110000110 */ | ||
2246 | 0x73, 0x00, /* 0111001100 */ | ||
2247 | 0x3c, 0x00, /* 0011110000 */ | ||
2248 | 0x00, 0x00, /* 0000000000 */ | ||
2249 | 0x00, 0x00, /* 0000000000 */ | ||
2250 | 0x00, 0x00, /* 0000000000 */ | ||
2251 | |||
2252 | /* 112 0x70 'p' */ | ||
2253 | 0x00, 0x00, /* 0000000000 */ | ||
2254 | 0x00, 0x00, /* 0000000000 */ | ||
2255 | 0x00, 0x00, /* 0000000000 */ | ||
2256 | 0x00, 0x00, /* 0000000000 */ | ||
2257 | 0x00, 0x00, /* 0000000000 */ | ||
2258 | 0xde, 0x00, /* 1101111000 */ | ||
2259 | 0x76, 0x00, /* 0111011000 */ | ||
2260 | 0x63, 0x00, /* 0110001100 */ | ||
2261 | 0x61, 0x80, /* 0110000110 */ | ||
2262 | 0x61, 0x80, /* 0110000110 */ | ||
2263 | 0x61, 0x80, /* 0110000110 */ | ||
2264 | 0x61, 0x80, /* 0110000110 */ | ||
2265 | 0x71, 0x80, /* 0111000110 */ | ||
2266 | 0x7b, 0x00, /* 0111101100 */ | ||
2267 | 0x7e, 0x00, /* 0111111000 */ | ||
2268 | 0x60, 0x00, /* 0110000000 */ | ||
2269 | 0x60, 0x00, /* 0110000000 */ | ||
2270 | 0xf0, 0x00, /* 1111000000 */ | ||
2271 | |||
2272 | /* 113 0x71 'q' */ | ||
2273 | 0x00, 0x00, /* 0000000000 */ | ||
2274 | 0x00, 0x00, /* 0000000000 */ | ||
2275 | 0x00, 0x00, /* 0000000000 */ | ||
2276 | 0x00, 0x00, /* 0000000000 */ | ||
2277 | 0x00, 0x00, /* 0000000000 */ | ||
2278 | 0x0e, 0xc0, /* 0000111011 */ | ||
2279 | 0x1b, 0x80, /* 0001101110 */ | ||
2280 | 0x33, 0x80, /* 0011001110 */ | ||
2281 | 0x61, 0x80, /* 0110000110 */ | ||
2282 | 0x61, 0x80, /* 0110000110 */ | ||
2283 | 0x61, 0x80, /* 0110000110 */ | ||
2284 | 0x61, 0x80, /* 0110000110 */ | ||
2285 | 0x71, 0x80, /* 0111000110 */ | ||
2286 | 0x3b, 0x80, /* 0011101110 */ | ||
2287 | 0x1f, 0x80, /* 0001111110 */ | ||
2288 | 0x01, 0x80, /* 0000000110 */ | ||
2289 | 0x01, 0x80, /* 0000000110 */ | ||
2290 | 0x03, 0xc0, /* 0000001111 */ | ||
2291 | |||
2292 | /* 114 0x72 'r' */ | ||
2293 | 0x00, 0x00, /* 0000000000 */ | ||
2294 | 0x00, 0x00, /* 0000000000 */ | ||
2295 | 0x00, 0x00, /* 0000000000 */ | ||
2296 | 0x00, 0x00, /* 0000000000 */ | ||
2297 | 0x00, 0x00, /* 0000000000 */ | ||
2298 | 0x73, 0x00, /* 0111001100 */ | ||
2299 | 0x35, 0x80, /* 0011010110 */ | ||
2300 | 0x39, 0x80, /* 0011100110 */ | ||
2301 | 0x30, 0x00, /* 0011000000 */ | ||
2302 | 0x30, 0x00, /* 0011000000 */ | ||
2303 | 0x30, 0x00, /* 0011000000 */ | ||
2304 | 0x30, 0x00, /* 0011000000 */ | ||
2305 | 0x30, 0x00, /* 0011000000 */ | ||
2306 | 0x30, 0x00, /* 0011000000 */ | ||
2307 | 0x78, 0x00, /* 0111100000 */ | ||
2308 | 0x00, 0x00, /* 0000000000 */ | ||
2309 | 0x00, 0x00, /* 0000000000 */ | ||
2310 | 0x00, 0x00, /* 0000000000 */ | ||
2311 | |||
2312 | /* 115 0x73 's' */ | ||
2313 | 0x00, 0x00, /* 0000000000 */ | ||
2314 | 0x00, 0x00, /* 0000000000 */ | ||
2315 | 0x00, 0x00, /* 0000000000 */ | ||
2316 | 0x00, 0x00, /* 0000000000 */ | ||
2317 | 0x00, 0x00, /* 0000000000 */ | ||
2318 | 0x3f, 0x00, /* 0011111100 */ | ||
2319 | 0x63, 0x00, /* 0110001100 */ | ||
2320 | 0x61, 0x00, /* 0110000100 */ | ||
2321 | 0x70, 0x00, /* 0111000000 */ | ||
2322 | 0x38, 0x00, /* 0011100000 */ | ||
2323 | 0x0e, 0x00, /* 0000111000 */ | ||
2324 | 0x07, 0x00, /* 0000011100 */ | ||
2325 | 0x43, 0x00, /* 0100001100 */ | ||
2326 | 0x63, 0x00, /* 0110001100 */ | ||
2327 | 0x7e, 0x00, /* 0111111000 */ | ||
2328 | 0x00, 0x00, /* 0000000000 */ | ||
2329 | 0x00, 0x00, /* 0000000000 */ | ||
2330 | 0x00, 0x00, /* 0000000000 */ | ||
2331 | |||
2332 | /* 116 0x74 't' */ | ||
2333 | 0x00, 0x00, /* 0000000000 */ | ||
2334 | 0x00, 0x00, /* 0000000000 */ | ||
2335 | 0x08, 0x00, /* 0000100000 */ | ||
2336 | 0x08, 0x00, /* 0000100000 */ | ||
2337 | 0x18, 0x00, /* 0001100000 */ | ||
2338 | 0x7f, 0x80, /* 0111111110 */ | ||
2339 | 0x18, 0x00, /* 0001100000 */ | ||
2340 | 0x18, 0x00, /* 0001100000 */ | ||
2341 | 0x18, 0x00, /* 0001100000 */ | ||
2342 | 0x18, 0x00, /* 0001100000 */ | ||
2343 | 0x18, 0x00, /* 0001100000 */ | ||
2344 | 0x18, 0x00, /* 0001100000 */ | ||
2345 | 0x18, 0x00, /* 0001100000 */ | ||
2346 | 0x1c, 0x80, /* 0001110010 */ | ||
2347 | 0x0f, 0x00, /* 0000111100 */ | ||
2348 | 0x00, 0x00, /* 0000000000 */ | ||
2349 | 0x00, 0x00, /* 0000000000 */ | ||
2350 | 0x00, 0x00, /* 0000000000 */ | ||
2351 | |||
2352 | /* 117 0x75 'u' */ | ||
2353 | 0x00, 0x00, /* 0000000000 */ | ||
2354 | 0x00, 0x00, /* 0000000000 */ | ||
2355 | 0x00, 0x00, /* 0000000000 */ | ||
2356 | 0x00, 0x00, /* 0000000000 */ | ||
2357 | 0x00, 0x00, /* 0000000000 */ | ||
2358 | 0xf7, 0x80, /* 1111011110 */ | ||
2359 | 0x63, 0x00, /* 0110001100 */ | ||
2360 | 0x63, 0x00, /* 0110001100 */ | ||
2361 | 0x63, 0x00, /* 0110001100 */ | ||
2362 | 0x63, 0x00, /* 0110001100 */ | ||
2363 | 0x63, 0x00, /* 0110001100 */ | ||
2364 | 0x63, 0x00, /* 0110001100 */ | ||
2365 | 0x63, 0x00, /* 0110001100 */ | ||
2366 | 0x77, 0x00, /* 0111011100 */ | ||
2367 | 0x3d, 0x80, /* 0011110110 */ | ||
2368 | 0x00, 0x00, /* 0000000000 */ | ||
2369 | 0x00, 0x00, /* 0000000000 */ | ||
2370 | 0x00, 0x00, /* 0000000000 */ | ||
2371 | |||
2372 | /* 118 0x76 'v' */ | ||
2373 | 0x00, 0x00, /* 0000000000 */ | ||
2374 | 0x00, 0x00, /* 0000000000 */ | ||
2375 | 0x00, 0x00, /* 0000000000 */ | ||
2376 | 0x00, 0x00, /* 0000000000 */ | ||
2377 | 0x00, 0x00, /* 0000000000 */ | ||
2378 | 0xf1, 0xc0, /* 1111000111 */ | ||
2379 | 0x60, 0xc0, /* 0110000011 */ | ||
2380 | 0x31, 0x80, /* 0011000110 */ | ||
2381 | 0x31, 0x80, /* 0011000110 */ | ||
2382 | 0x19, 0x80, /* 0001100110 */ | ||
2383 | 0x1b, 0x00, /* 0001101100 */ | ||
2384 | 0x0f, 0x00, /* 0000111100 */ | ||
2385 | 0x0f, 0x00, /* 0000111100 */ | ||
2386 | 0x06, 0x00, /* 0000011000 */ | ||
2387 | 0x06, 0x00, /* 0000011000 */ | ||
2388 | 0x00, 0x00, /* 0000000000 */ | ||
2389 | 0x00, 0x00, /* 0000000000 */ | ||
2390 | 0x00, 0x00, /* 0000000000 */ | ||
2391 | |||
2392 | /* 119 0x77 'w' */ | ||
2393 | 0x00, 0x00, /* 0000000000 */ | ||
2394 | 0x00, 0x00, /* 0000000000 */ | ||
2395 | 0x00, 0x00, /* 0000000000 */ | ||
2396 | 0x00, 0x00, /* 0000000000 */ | ||
2397 | 0x00, 0x00, /* 0000000000 */ | ||
2398 | 0xe3, 0xc0, /* 1110001111 */ | ||
2399 | 0xc1, 0x80, /* 1100000110 */ | ||
2400 | 0xc1, 0x80, /* 1100000110 */ | ||
2401 | 0xc1, 0x80, /* 1100000110 */ | ||
2402 | 0xc1, 0x80, /* 1100000110 */ | ||
2403 | 0x6b, 0x00, /* 0110101100 */ | ||
2404 | 0x6b, 0x00, /* 0110101100 */ | ||
2405 | 0x7e, 0x00, /* 0111111000 */ | ||
2406 | 0x36, 0x00, /* 0011011000 */ | ||
2407 | 0x36, 0x00, /* 0011011000 */ | ||
2408 | 0x00, 0x00, /* 0000000000 */ | ||
2409 | 0x00, 0x00, /* 0000000000 */ | ||
2410 | 0x00, 0x00, /* 0000000000 */ | ||
2411 | |||
2412 | /* 120 0x78 'x' */ | ||
2413 | 0x00, 0x00, /* 0000000000 */ | ||
2414 | 0x00, 0x00, /* 0000000000 */ | ||
2415 | 0x00, 0x00, /* 0000000000 */ | ||
2416 | 0x00, 0x00, /* 0000000000 */ | ||
2417 | 0x00, 0x00, /* 0000000000 */ | ||
2418 | 0xf7, 0x80, /* 1111011110 */ | ||
2419 | 0x63, 0x00, /* 0110001100 */ | ||
2420 | 0x36, 0x00, /* 0011011000 */ | ||
2421 | 0x36, 0x00, /* 0011011000 */ | ||
2422 | 0x1c, 0x00, /* 0001110000 */ | ||
2423 | 0x1c, 0x00, /* 0001110000 */ | ||
2424 | 0x36, 0x00, /* 0011011000 */ | ||
2425 | 0x66, 0x00, /* 0110011000 */ | ||
2426 | 0x63, 0x00, /* 0110001100 */ | ||
2427 | 0xf7, 0x80, /* 1111011110 */ | ||
2428 | 0x00, 0x00, /* 0000000000 */ | ||
2429 | 0x00, 0x00, /* 0000000000 */ | ||
2430 | 0x00, 0x00, /* 0000000000 */ | ||
2431 | |||
2432 | /* 121 0x79 'y' */ | ||
2433 | 0x00, 0x00, /* 0000000000 */ | ||
2434 | 0x00, 0x00, /* 0000000000 */ | ||
2435 | 0x00, 0x00, /* 0000000000 */ | ||
2436 | 0x00, 0x00, /* 0000000000 */ | ||
2437 | 0x00, 0x00, /* 0000000000 */ | ||
2438 | 0xf3, 0xc0, /* 1111001111 */ | ||
2439 | 0x61, 0x80, /* 0110000110 */ | ||
2440 | 0x33, 0x00, /* 0011001100 */ | ||
2441 | 0x1b, 0x00, /* 0001101100 */ | ||
2442 | 0x1e, 0x00, /* 0001111000 */ | ||
2443 | 0x0e, 0x00, /* 0000111000 */ | ||
2444 | 0x0c, 0x00, /* 0000110000 */ | ||
2445 | 0x0c, 0x00, /* 0000110000 */ | ||
2446 | 0x0c, 0x00, /* 0000110000 */ | ||
2447 | 0x0c, 0x00, /* 0000110000 */ | ||
2448 | 0x18, 0x00, /* 0001100000 */ | ||
2449 | 0x78, 0x00, /* 0111100000 */ | ||
2450 | 0x70, 0x00, /* 0111000000 */ | ||
2451 | |||
2452 | /* 122 0x7a 'z' */ | ||
2453 | 0x00, 0x00, /* 0000000000 */ | ||
2454 | 0x00, 0x00, /* 0000000000 */ | ||
2455 | 0x00, 0x00, /* 0000000000 */ | ||
2456 | 0x00, 0x00, /* 0000000000 */ | ||
2457 | 0x00, 0x00, /* 0000000000 */ | ||
2458 | 0x7f, 0x80, /* 0111111110 */ | ||
2459 | 0x61, 0x80, /* 0110000110 */ | ||
2460 | 0x43, 0x00, /* 0100001100 */ | ||
2461 | 0x06, 0x00, /* 0000011000 */ | ||
2462 | 0x0c, 0x00, /* 0000110000 */ | ||
2463 | 0x18, 0x00, /* 0001100000 */ | ||
2464 | 0x30, 0x00, /* 0011000000 */ | ||
2465 | 0x60, 0x80, /* 0110000010 */ | ||
2466 | 0x61, 0x80, /* 0110000110 */ | ||
2467 | 0x7f, 0x80, /* 0111111110 */ | ||
2468 | 0x00, 0x00, /* 0000000000 */ | ||
2469 | 0x00, 0x00, /* 0000000000 */ | ||
2470 | 0x00, 0x00, /* 0000000000 */ | ||
2471 | |||
2472 | /* 123 0x7b '{' */ | ||
2473 | 0x07, 0x00, /* 0000011100 */ | ||
2474 | 0x0c, 0x00, /* 0000110000 */ | ||
2475 | 0x0c, 0x00, /* 0000110000 */ | ||
2476 | 0x0c, 0x00, /* 0000110000 */ | ||
2477 | 0x0c, 0x00, /* 0000110000 */ | ||
2478 | 0x0c, 0x00, /* 0000110000 */ | ||
2479 | 0x18, 0x00, /* 0001100000 */ | ||
2480 | 0x70, 0x00, /* 0111000000 */ | ||
2481 | 0x18, 0x00, /* 0001100000 */ | ||
2482 | 0x0c, 0x00, /* 0000110000 */ | ||
2483 | 0x0c, 0x00, /* 0000110000 */ | ||
2484 | 0x0c, 0x00, /* 0000110000 */ | ||
2485 | 0x0c, 0x00, /* 0000110000 */ | ||
2486 | 0x0c, 0x00, /* 0000110000 */ | ||
2487 | 0x07, 0x00, /* 0000011100 */ | ||
2488 | 0x00, 0x00, /* 0000000000 */ | ||
2489 | 0x00, 0x00, /* 0000000000 */ | ||
2490 | 0x00, 0x00, /* 0000000000 */ | ||
2491 | |||
2492 | /* 124 0x7c '|' */ | ||
2493 | 0x0c, 0x00, /* 0000110000 */ | ||
2494 | 0x0c, 0x00, /* 0000110000 */ | ||
2495 | 0x0c, 0x00, /* 0000110000 */ | ||
2496 | 0x0c, 0x00, /* 0000110000 */ | ||
2497 | 0x0c, 0x00, /* 0000110000 */ | ||
2498 | 0x0c, 0x00, /* 0000110000 */ | ||
2499 | 0x0c, 0x00, /* 0000110000 */ | ||
2500 | 0x0c, 0x00, /* 0000110000 */ | ||
2501 | 0x0c, 0x00, /* 0000110000 */ | ||
2502 | 0x0c, 0x00, /* 0000110000 */ | ||
2503 | 0x0c, 0x00, /* 0000110000 */ | ||
2504 | 0x0c, 0x00, /* 0000110000 */ | ||
2505 | 0x0c, 0x00, /* 0000110000 */ | ||
2506 | 0x0c, 0x00, /* 0000110000 */ | ||
2507 | 0x0c, 0x00, /* 0000110000 */ | ||
2508 | 0x0c, 0x00, /* 0000110000 */ | ||
2509 | 0x0c, 0x00, /* 0000110000 */ | ||
2510 | 0x00, 0x00, /* 0000000000 */ | ||
2511 | |||
2512 | /* 125 0x7d '}' */ | ||
2513 | 0x38, 0x00, /* 0011100000 */ | ||
2514 | 0x0c, 0x00, /* 0000110000 */ | ||
2515 | 0x0c, 0x00, /* 0000110000 */ | ||
2516 | 0x0c, 0x00, /* 0000110000 */ | ||
2517 | 0x0c, 0x00, /* 0000110000 */ | ||
2518 | 0x0c, 0x00, /* 0000110000 */ | ||
2519 | 0x06, 0x00, /* 0000011000 */ | ||
2520 | 0x03, 0x80, /* 0000001110 */ | ||
2521 | 0x06, 0x00, /* 0000011000 */ | ||
2522 | 0x0c, 0x00, /* 0000110000 */ | ||
2523 | 0x0c, 0x00, /* 0000110000 */ | ||
2524 | 0x0c, 0x00, /* 0000110000 */ | ||
2525 | 0x0c, 0x00, /* 0000110000 */ | ||
2526 | 0x0c, 0x00, /* 0000110000 */ | ||
2527 | 0x38, 0x00, /* 0011100000 */ | ||
2528 | 0x00, 0x00, /* 0000000000 */ | ||
2529 | 0x00, 0x00, /* 0000000000 */ | ||
2530 | 0x00, 0x00, /* 0000000000 */ | ||
2531 | |||
2532 | /* 126 0x7e '~' */ | ||
2533 | 0x00, 0x00, /* 0000000000 */ | ||
2534 | 0x18, 0x80, /* 0001100010 */ | ||
2535 | 0x3d, 0x80, /* 0011110110 */ | ||
2536 | 0x6f, 0x00, /* 0110111100 */ | ||
2537 | 0x46, 0x00, /* 0100011000 */ | ||
2538 | 0x00, 0x00, /* 0000000000 */ | ||
2539 | 0x00, 0x00, /* 0000000000 */ | ||
2540 | 0x00, 0x00, /* 0000000000 */ | ||
2541 | 0x00, 0x00, /* 0000000000 */ | ||
2542 | 0x00, 0x00, /* 0000000000 */ | ||
2543 | 0x00, 0x00, /* 0000000000 */ | ||
2544 | 0x00, 0x00, /* 0000000000 */ | ||
2545 | 0x00, 0x00, /* 0000000000 */ | ||
2546 | 0x00, 0x00, /* 0000000000 */ | ||
2547 | 0x00, 0x00, /* 0000000000 */ | ||
2548 | 0x00, 0x00, /* 0000000000 */ | ||
2549 | 0x00, 0x00, /* 0000000000 */ | ||
2550 | 0x00, 0x00, /* 0000000000 */ | ||
2551 | |||
2552 | /* 127 0x7f '.' */ | ||
2553 | 0x00, 0x00, /* 0000000000 */ | ||
2554 | 0x00, 0x00, /* 0000000000 */ | ||
2555 | 0x00, 0x00, /* 0000000000 */ | ||
2556 | 0x00, 0x00, /* 0000000000 */ | ||
2557 | 0x00, 0x00, /* 0000000000 */ | ||
2558 | 0x00, 0x00, /* 0000000000 */ | ||
2559 | 0x00, 0x00, /* 0000000000 */ | ||
2560 | 0x00, 0x00, /* 0000000000 */ | ||
2561 | 0x0c, 0x00, /* 0000110000 */ | ||
2562 | 0x12, 0x00, /* 0001001000 */ | ||
2563 | 0x21, 0x00, /* 0010000100 */ | ||
2564 | 0x40, 0x80, /* 0100000010 */ | ||
2565 | 0x40, 0x80, /* 0100000010 */ | ||
2566 | 0x40, 0x80, /* 0100000010 */ | ||
2567 | 0x7f, 0x80, /* 0111111110 */ | ||
2568 | 0x00, 0x00, /* 0000000000 */ | ||
2569 | 0x00, 0x00, /* 0000000000 */ | ||
2570 | 0x00, 0x00, /* 0000000000 */ | ||
2571 | |||
2572 | /* 128 0x80 '.' */ | ||
2573 | 0x00, 0x00, /* 0000000000 */ | ||
2574 | 0x1f, 0x00, /* 0001111100 */ | ||
2575 | 0x21, 0x80, /* 0010000110 */ | ||
2576 | 0x40, 0x80, /* 0100000010 */ | ||
2577 | 0x40, 0x00, /* 0100000000 */ | ||
2578 | 0x40, 0x00, /* 0100000000 */ | ||
2579 | 0x40, 0x00, /* 0100000000 */ | ||
2580 | 0x40, 0x00, /* 0100000000 */ | ||
2581 | 0x40, 0x00, /* 0100000000 */ | ||
2582 | 0x40, 0x00, /* 0100000000 */ | ||
2583 | 0x60, 0x80, /* 0110000010 */ | ||
2584 | 0x31, 0x00, /* 0011000100 */ | ||
2585 | 0x1e, 0x00, /* 0001111000 */ | ||
2586 | 0x08, 0x00, /* 0000100000 */ | ||
2587 | 0x04, 0x00, /* 0000010000 */ | ||
2588 | 0x02, 0x00, /* 0000001000 */ | ||
2589 | 0x02, 0x00, /* 0000001000 */ | ||
2590 | 0x1c, 0x00, /* 0001110000 */ | ||
2591 | |||
2592 | /* 129 0x81 '.' */ | ||
2593 | 0x00, 0x00, /* 0000000000 */ | ||
2594 | 0x1b, 0x00, /* 0001101100 */ | ||
2595 | 0x1b, 0x00, /* 0001101100 */ | ||
2596 | 0x00, 0x00, /* 0000000000 */ | ||
2597 | 0x00, 0x00, /* 0000000000 */ | ||
2598 | 0x7b, 0x80, /* 0111101110 */ | ||
2599 | 0x31, 0x00, /* 0011000100 */ | ||
2600 | 0x31, 0x00, /* 0011000100 */ | ||
2601 | 0x31, 0x00, /* 0011000100 */ | ||
2602 | 0x31, 0x00, /* 0011000100 */ | ||
2603 | 0x31, 0x00, /* 0011000100 */ | ||
2604 | 0x31, 0x00, /* 0011000100 */ | ||
2605 | 0x31, 0x00, /* 0011000100 */ | ||
2606 | 0x3b, 0x00, /* 0011101100 */ | ||
2607 | 0x1c, 0x80, /* 0001110010 */ | ||
2608 | 0x00, 0x00, /* 0000000000 */ | ||
2609 | 0x00, 0x00, /* 0000000000 */ | ||
2610 | 0x00, 0x00, /* 0000000000 */ | ||
2611 | |||
2612 | /* 130 0x82 '.' */ | ||
2613 | 0x00, 0x00, /* 0000000000 */ | ||
2614 | 0x01, 0x00, /* 0000000100 */ | ||
2615 | 0x02, 0x00, /* 0000001000 */ | ||
2616 | 0x04, 0x00, /* 0000010000 */ | ||
2617 | 0x00, 0x00, /* 0000000000 */ | ||
2618 | 0x0c, 0x00, /* 0000110000 */ | ||
2619 | 0x33, 0x00, /* 0011001100 */ | ||
2620 | 0x61, 0x80, /* 0110000110 */ | ||
2621 | 0x61, 0x80, /* 0110000110 */ | ||
2622 | 0x7f, 0x80, /* 0111111110 */ | ||
2623 | 0x60, 0x00, /* 0110000000 */ | ||
2624 | 0x60, 0x00, /* 0110000000 */ | ||
2625 | 0x30, 0x00, /* 0011000000 */ | ||
2626 | 0x19, 0x80, /* 0001100110 */ | ||
2627 | 0x0e, 0x00, /* 0000111000 */ | ||
2628 | 0x00, 0x00, /* 0000000000 */ | ||
2629 | 0x00, 0x00, /* 0000000000 */ | ||
2630 | 0x00, 0x00, /* 0000000000 */ | ||
2631 | |||
2632 | /* 131 0x83 '.' */ | ||
2633 | 0x04, 0x00, /* 0000010000 */ | ||
2634 | 0x0e, 0x00, /* 0000111000 */ | ||
2635 | 0x1b, 0x00, /* 0001101100 */ | ||
2636 | 0x31, 0x80, /* 0011000110 */ | ||
2637 | 0x00, 0x00, /* 0000000000 */ | ||
2638 | 0x1f, 0x00, /* 0001111100 */ | ||
2639 | 0x31, 0x80, /* 0011000110 */ | ||
2640 | 0x21, 0x80, /* 0010000110 */ | ||
2641 | 0x07, 0x80, /* 0000011110 */ | ||
2642 | 0x39, 0x80, /* 0011100110 */ | ||
2643 | 0x61, 0x80, /* 0110000110 */ | ||
2644 | 0x61, 0x80, /* 0110000110 */ | ||
2645 | 0x61, 0x80, /* 0110000110 */ | ||
2646 | 0x73, 0x80, /* 0111001110 */ | ||
2647 | 0x3d, 0xc0, /* 0011110111 */ | ||
2648 | 0x00, 0x00, /* 0000000000 */ | ||
2649 | 0x00, 0x00, /* 0000000000 */ | ||
2650 | 0x00, 0x00, /* 0000000000 */ | ||
2651 | |||
2652 | /* 132 0x84 '.' */ | ||
2653 | 0x00, 0x00, /* 0000000000 */ | ||
2654 | 0x1b, 0x00, /* 0001101100 */ | ||
2655 | 0x1b, 0x00, /* 0001101100 */ | ||
2656 | 0x00, 0x00, /* 0000000000 */ | ||
2657 | 0x00, 0x00, /* 0000000000 */ | ||
2658 | 0x1f, 0x00, /* 0001111100 */ | ||
2659 | 0x31, 0x80, /* 0011000110 */ | ||
2660 | 0x21, 0x80, /* 0010000110 */ | ||
2661 | 0x07, 0x80, /* 0000011110 */ | ||
2662 | 0x39, 0x80, /* 0011100110 */ | ||
2663 | 0x61, 0x80, /* 0110000110 */ | ||
2664 | 0x61, 0x80, /* 0110000110 */ | ||
2665 | 0x61, 0x80, /* 0110000110 */ | ||
2666 | 0x73, 0x80, /* 0111001110 */ | ||
2667 | 0x3d, 0xc0, /* 0011110111 */ | ||
2668 | 0x00, 0x00, /* 0000000000 */ | ||
2669 | 0x00, 0x00, /* 0000000000 */ | ||
2670 | 0x00, 0x00, /* 0000000000 */ | ||
2671 | |||
2672 | /* 133 0x85 '.' */ | ||
2673 | 0x00, 0x00, /* 0000000000 */ | ||
2674 | 0x18, 0x00, /* 0001100000 */ | ||
2675 | 0x0c, 0x00, /* 0000110000 */ | ||
2676 | 0x06, 0x00, /* 0000011000 */ | ||
2677 | 0x00, 0x00, /* 0000000000 */ | ||
2678 | 0x1f, 0x00, /* 0001111100 */ | ||
2679 | 0x31, 0x80, /* 0011000110 */ | ||
2680 | 0x21, 0x80, /* 0010000110 */ | ||
2681 | 0x07, 0x80, /* 0000011110 */ | ||
2682 | 0x39, 0x80, /* 0011100110 */ | ||
2683 | 0x61, 0x80, /* 0110000110 */ | ||
2684 | 0x61, 0x80, /* 0110000110 */ | ||
2685 | 0x61, 0x80, /* 0110000110 */ | ||
2686 | 0x73, 0x80, /* 0111001110 */ | ||
2687 | 0x3d, 0xc0, /* 0011110111 */ | ||
2688 | 0x00, 0x00, /* 0000000000 */ | ||
2689 | 0x00, 0x00, /* 0000000000 */ | ||
2690 | 0x00, 0x00, /* 0000000000 */ | ||
2691 | |||
2692 | /* 134 0x86 '.' */ | ||
2693 | 0x00, 0x00, /* 0000000000 */ | ||
2694 | 0x0e, 0x00, /* 0000111000 */ | ||
2695 | 0x1b, 0x00, /* 0001101100 */ | ||
2696 | 0x0e, 0x00, /* 0000111000 */ | ||
2697 | 0x00, 0x00, /* 0000000000 */ | ||
2698 | 0x1f, 0x00, /* 0001111100 */ | ||
2699 | 0x31, 0x80, /* 0011000110 */ | ||
2700 | 0x21, 0x80, /* 0010000110 */ | ||
2701 | 0x07, 0x80, /* 0000011110 */ | ||
2702 | 0x39, 0x80, /* 0011100110 */ | ||
2703 | 0x61, 0x80, /* 0110000110 */ | ||
2704 | 0x61, 0x80, /* 0110000110 */ | ||
2705 | 0x61, 0x80, /* 0110000110 */ | ||
2706 | 0x73, 0x80, /* 0111001110 */ | ||
2707 | 0x3d, 0xc0, /* 0011110111 */ | ||
2708 | 0x00, 0x00, /* 0000000000 */ | ||
2709 | 0x00, 0x00, /* 0000000000 */ | ||
2710 | 0x00, 0x00, /* 0000000000 */ | ||
2711 | |||
2712 | /* 135 0x87 '.' */ | ||
2713 | 0x00, 0x00, /* 0000000000 */ | ||
2714 | 0x00, 0x00, /* 0000000000 */ | ||
2715 | 0x00, 0x00, /* 0000000000 */ | ||
2716 | 0x00, 0x00, /* 0000000000 */ | ||
2717 | 0x00, 0x00, /* 0000000000 */ | ||
2718 | 0x1f, 0x00, /* 0001111100 */ | ||
2719 | 0x31, 0x80, /* 0011000110 */ | ||
2720 | 0x20, 0x80, /* 0010000010 */ | ||
2721 | 0x60, 0x00, /* 0110000000 */ | ||
2722 | 0x60, 0x00, /* 0110000000 */ | ||
2723 | 0x60, 0x00, /* 0110000000 */ | ||
2724 | 0x70, 0x80, /* 0111000010 */ | ||
2725 | 0x30, 0x80, /* 0011000010 */ | ||
2726 | 0x1f, 0x00, /* 0001111100 */ | ||
2727 | 0x04, 0x00, /* 0000010000 */ | ||
2728 | 0x02, 0x00, /* 0000001000 */ | ||
2729 | 0x01, 0x00, /* 0000000100 */ | ||
2730 | 0x0e, 0x00, /* 0000111000 */ | ||
2731 | |||
2732 | /* 136 0x88 '.' */ | ||
2733 | 0x04, 0x00, /* 0000010000 */ | ||
2734 | 0x0e, 0x00, /* 0000111000 */ | ||
2735 | 0x1b, 0x00, /* 0001101100 */ | ||
2736 | 0x31, 0x80, /* 0011000110 */ | ||
2737 | 0x00, 0x00, /* 0000000000 */ | ||
2738 | 0x0c, 0x00, /* 0000110000 */ | ||
2739 | 0x33, 0x00, /* 0011001100 */ | ||
2740 | 0x61, 0x80, /* 0110000110 */ | ||
2741 | 0x61, 0x80, /* 0110000110 */ | ||
2742 | 0x7f, 0x80, /* 0111111110 */ | ||
2743 | 0x60, 0x00, /* 0110000000 */ | ||
2744 | 0x60, 0x00, /* 0110000000 */ | ||
2745 | 0x30, 0x00, /* 0011000000 */ | ||
2746 | 0x19, 0x80, /* 0001100110 */ | ||
2747 | 0x0e, 0x00, /* 0000111000 */ | ||
2748 | 0x00, 0x00, /* 0000000000 */ | ||
2749 | 0x00, 0x00, /* 0000000000 */ | ||
2750 | 0x00, 0x00, /* 0000000000 */ | ||
2751 | |||
2752 | /* 137 0x89 '.' */ | ||
2753 | 0x00, 0x00, /* 0000000000 */ | ||
2754 | 0x36, 0x00, /* 0011011000 */ | ||
2755 | 0x36, 0x00, /* 0011011000 */ | ||
2756 | 0x00, 0x00, /* 0000000000 */ | ||
2757 | 0x00, 0x00, /* 0000000000 */ | ||
2758 | 0x0c, 0x00, /* 0000110000 */ | ||
2759 | 0x33, 0x00, /* 0011001100 */ | ||
2760 | 0x61, 0x80, /* 0110000110 */ | ||
2761 | 0x61, 0x80, /* 0110000110 */ | ||
2762 | 0x7f, 0x80, /* 0111111110 */ | ||
2763 | 0x60, 0x00, /* 0110000000 */ | ||
2764 | 0x60, 0x00, /* 0110000000 */ | ||
2765 | 0x30, 0x00, /* 0011000000 */ | ||
2766 | 0x19, 0x80, /* 0001100110 */ | ||
2767 | 0x0e, 0x00, /* 0000111000 */ | ||
2768 | 0x00, 0x00, /* 0000000000 */ | ||
2769 | 0x00, 0x00, /* 0000000000 */ | ||
2770 | 0x00, 0x00, /* 0000000000 */ | ||
2771 | |||
2772 | /* 138 0x8a '.' */ | ||
2773 | 0x00, 0x00, /* 0000000000 */ | ||
2774 | 0x30, 0x00, /* 0011000000 */ | ||
2775 | 0x18, 0x00, /* 0001100000 */ | ||
2776 | 0x0c, 0x00, /* 0000110000 */ | ||
2777 | 0x00, 0x00, /* 0000000000 */ | ||
2778 | 0x0c, 0x00, /* 0000110000 */ | ||
2779 | 0x33, 0x00, /* 0011001100 */ | ||
2780 | 0x61, 0x80, /* 0110000110 */ | ||
2781 | 0x61, 0x80, /* 0110000110 */ | ||
2782 | 0x7f, 0x80, /* 0111111110 */ | ||
2783 | 0x60, 0x00, /* 0110000000 */ | ||
2784 | 0x60, 0x00, /* 0110000000 */ | ||
2785 | 0x30, 0x00, /* 0011000000 */ | ||
2786 | 0x19, 0x80, /* 0001100110 */ | ||
2787 | 0x0e, 0x00, /* 0000111000 */ | ||
2788 | 0x00, 0x00, /* 0000000000 */ | ||
2789 | 0x00, 0x00, /* 0000000000 */ | ||
2790 | 0x00, 0x00, /* 0000000000 */ | ||
2791 | |||
2792 | /* 139 0x8b '.' */ | ||
2793 | 0x00, 0x00, /* 0000000000 */ | ||
2794 | 0x36, 0x00, /* 0011011000 */ | ||
2795 | 0x36, 0x00, /* 0011011000 */ | ||
2796 | 0x00, 0x00, /* 0000000000 */ | ||
2797 | 0x00, 0x00, /* 0000000000 */ | ||
2798 | 0x3c, 0x00, /* 0011110000 */ | ||
2799 | 0x0c, 0x00, /* 0000110000 */ | ||
2800 | 0x0c, 0x00, /* 0000110000 */ | ||
2801 | 0x0c, 0x00, /* 0000110000 */ | ||
2802 | 0x0c, 0x00, /* 0000110000 */ | ||
2803 | 0x0c, 0x00, /* 0000110000 */ | ||
2804 | 0x0c, 0x00, /* 0000110000 */ | ||
2805 | 0x0c, 0x00, /* 0000110000 */ | ||
2806 | 0x0c, 0x00, /* 0000110000 */ | ||
2807 | 0x3f, 0x00, /* 0011111100 */ | ||
2808 | 0x00, 0x00, /* 0000000000 */ | ||
2809 | 0x00, 0x00, /* 0000000000 */ | ||
2810 | 0x00, 0x00, /* 0000000000 */ | ||
2811 | |||
2812 | /* 140 0x8c '.' */ | ||
2813 | 0x08, 0x00, /* 0000100000 */ | ||
2814 | 0x1c, 0x00, /* 0001110000 */ | ||
2815 | 0x36, 0x00, /* 0011011000 */ | ||
2816 | 0x63, 0x00, /* 0110001100 */ | ||
2817 | 0x00, 0x00, /* 0000000000 */ | ||
2818 | 0x3c, 0x00, /* 0011110000 */ | ||
2819 | 0x0c, 0x00, /* 0000110000 */ | ||
2820 | 0x0c, 0x00, /* 0000110000 */ | ||
2821 | 0x0c, 0x00, /* 0000110000 */ | ||
2822 | 0x0c, 0x00, /* 0000110000 */ | ||
2823 | 0x0c, 0x00, /* 0000110000 */ | ||
2824 | 0x0c, 0x00, /* 0000110000 */ | ||
2825 | 0x0c, 0x00, /* 0000110000 */ | ||
2826 | 0x0c, 0x00, /* 0000110000 */ | ||
2827 | 0x3f, 0x00, /* 0011111100 */ | ||
2828 | 0x00, 0x00, /* 0000000000 */ | ||
2829 | 0x00, 0x00, /* 0000000000 */ | ||
2830 | 0x00, 0x00, /* 0000000000 */ | ||
2831 | |||
2832 | /* 141 0x8d '.' */ | ||
2833 | 0x00, 0x00, /* 0000000000 */ | ||
2834 | 0x30, 0x00, /* 0011000000 */ | ||
2835 | 0x18, 0x00, /* 0001100000 */ | ||
2836 | 0x0c, 0x00, /* 0000110000 */ | ||
2837 | 0x00, 0x00, /* 0000000000 */ | ||
2838 | 0x3c, 0x00, /* 0011110000 */ | ||
2839 | 0x0c, 0x00, /* 0000110000 */ | ||
2840 | 0x0c, 0x00, /* 0000110000 */ | ||
2841 | 0x0c, 0x00, /* 0000110000 */ | ||
2842 | 0x0c, 0x00, /* 0000110000 */ | ||
2843 | 0x0c, 0x00, /* 0000110000 */ | ||
2844 | 0x0c, 0x00, /* 0000110000 */ | ||
2845 | 0x0c, 0x00, /* 0000110000 */ | ||
2846 | 0x0c, 0x00, /* 0000110000 */ | ||
2847 | 0x3f, 0x00, /* 0011111100 */ | ||
2848 | 0x00, 0x00, /* 0000000000 */ | ||
2849 | 0x00, 0x00, /* 0000000000 */ | ||
2850 | 0x00, 0x00, /* 0000000000 */ | ||
2851 | |||
2852 | /* 142 0x8e '.' */ | ||
2853 | 0x31, 0x80, /* 0011000110 */ | ||
2854 | 0x31, 0x80, /* 0011000110 */ | ||
2855 | 0x04, 0x00, /* 0000010000 */ | ||
2856 | 0x04, 0x00, /* 0000010000 */ | ||
2857 | 0x0e, 0x00, /* 0000111000 */ | ||
2858 | 0x0e, 0x00, /* 0000111000 */ | ||
2859 | 0x0e, 0x00, /* 0000111000 */ | ||
2860 | 0x19, 0x00, /* 0001100100 */ | ||
2861 | 0x19, 0x00, /* 0001100100 */ | ||
2862 | 0x3f, 0x00, /* 0011111100 */ | ||
2863 | 0x31, 0x00, /* 0011000100 */ | ||
2864 | 0x31, 0x00, /* 0011000100 */ | ||
2865 | 0x60, 0x80, /* 0110000010 */ | ||
2866 | 0x60, 0x80, /* 0110000010 */ | ||
2867 | 0xf3, 0xc0, /* 1111001111 */ | ||
2868 | 0x00, 0x00, /* 0000000000 */ | ||
2869 | 0x00, 0x00, /* 0000000000 */ | ||
2870 | 0x00, 0x00, /* 0000000000 */ | ||
2871 | |||
2872 | /* 143 0x8f '.' */ | ||
2873 | 0x04, 0x00, /* 0000010000 */ | ||
2874 | 0x0a, 0x00, /* 0000101000 */ | ||
2875 | 0x0a, 0x00, /* 0000101000 */ | ||
2876 | 0x04, 0x00, /* 0000010000 */ | ||
2877 | 0x0e, 0x00, /* 0000111000 */ | ||
2878 | 0x0e, 0x00, /* 0000111000 */ | ||
2879 | 0x0e, 0x00, /* 0000111000 */ | ||
2880 | 0x19, 0x00, /* 0001100100 */ | ||
2881 | 0x19, 0x00, /* 0001100100 */ | ||
2882 | 0x3f, 0x00, /* 0011111100 */ | ||
2883 | 0x31, 0x00, /* 0011000100 */ | ||
2884 | 0x31, 0x00, /* 0011000100 */ | ||
2885 | 0x60, 0x80, /* 0110000010 */ | ||
2886 | 0x60, 0x80, /* 0110000010 */ | ||
2887 | 0xf3, 0xc0, /* 1111001111 */ | ||
2888 | 0x00, 0x00, /* 0000000000 */ | ||
2889 | 0x00, 0x00, /* 0000000000 */ | ||
2890 | 0x00, 0x00, /* 0000000000 */ | ||
2891 | |||
2892 | /* 144 0x90 '.' */ | ||
2893 | 0x03, 0x00, /* 0000001100 */ | ||
2894 | 0x06, 0x00, /* 0000011000 */ | ||
2895 | 0x0c, 0x00, /* 0000110000 */ | ||
2896 | 0x7f, 0x80, /* 0111111110 */ | ||
2897 | 0x30, 0x80, /* 0011000010 */ | ||
2898 | 0x30, 0x80, /* 0011000010 */ | ||
2899 | 0x30, 0x00, /* 0011000000 */ | ||
2900 | 0x31, 0x00, /* 0011000100 */ | ||
2901 | 0x3f, 0x00, /* 0011111100 */ | ||
2902 | 0x31, 0x00, /* 0011000100 */ | ||
2903 | 0x30, 0x00, /* 0011000000 */ | ||
2904 | 0x30, 0x00, /* 0011000000 */ | ||
2905 | 0x30, 0x80, /* 0011000010 */ | ||
2906 | 0x30, 0x80, /* 0011000010 */ | ||
2907 | 0x7f, 0x80, /* 0111111110 */ | ||
2908 | 0x00, 0x00, /* 0000000000 */ | ||
2909 | 0x00, 0x00, /* 0000000000 */ | ||
2910 | 0x00, 0x00, /* 0000000000 */ | ||
2911 | |||
2912 | /* 145 0x91 '.' */ | ||
2913 | 0x00, 0x00, /* 0000000000 */ | ||
2914 | 0x00, 0x00, /* 0000000000 */ | ||
2915 | 0x00, 0x00, /* 0000000000 */ | ||
2916 | 0x00, 0x00, /* 0000000000 */ | ||
2917 | 0x00, 0x00, /* 0000000000 */ | ||
2918 | 0x3b, 0x80, /* 0011101110 */ | ||
2919 | 0x6c, 0xc0, /* 0110110011 */ | ||
2920 | 0x4c, 0xc0, /* 0100110011 */ | ||
2921 | 0x0c, 0xc0, /* 0000110011 */ | ||
2922 | 0x3f, 0xc0, /* 0011111111 */ | ||
2923 | 0x6c, 0x00, /* 0110110000 */ | ||
2924 | 0xcc, 0x00, /* 1100110000 */ | ||
2925 | 0xcc, 0x00, /* 1100110000 */ | ||
2926 | 0xee, 0xc0, /* 1110111011 */ | ||
2927 | 0x7b, 0x80, /* 0111101110 */ | ||
2928 | 0x00, 0x00, /* 0000000000 */ | ||
2929 | 0x00, 0x00, /* 0000000000 */ | ||
2930 | 0x00, 0x00, /* 0000000000 */ | ||
2931 | |||
2932 | /* 146 0x92 '.' */ | ||
2933 | 0x00, 0x00, /* 0000000000 */ | ||
2934 | 0x07, 0xc0, /* 0000011111 */ | ||
2935 | 0x0e, 0x40, /* 0000111001 */ | ||
2936 | 0x0e, 0x40, /* 0000111001 */ | ||
2937 | 0x0e, 0x00, /* 0000111000 */ | ||
2938 | 0x16, 0x00, /* 0001011000 */ | ||
2939 | 0x16, 0x80, /* 0001011010 */ | ||
2940 | 0x17, 0x80, /* 0001011110 */ | ||
2941 | 0x16, 0x80, /* 0001011010 */ | ||
2942 | 0x3e, 0x00, /* 0011111000 */ | ||
2943 | 0x26, 0x00, /* 0010011000 */ | ||
2944 | 0x26, 0x00, /* 0010011000 */ | ||
2945 | 0x46, 0x40, /* 0100011001 */ | ||
2946 | 0x46, 0x40, /* 0100011001 */ | ||
2947 | 0xef, 0xc0, /* 1110111111 */ | ||
2948 | 0x00, 0x00, /* 0000000000 */ | ||
2949 | 0x00, 0x00, /* 0000000000 */ | ||
2950 | 0x00, 0x00, /* 0000000000 */ | ||
2951 | |||
2952 | /* 147 0x93 '.' */ | ||
2953 | 0x00, 0x00, /* 0000000000 */ | ||
2954 | 0x08, 0x00, /* 0000100000 */ | ||
2955 | 0x1c, 0x00, /* 0001110000 */ | ||
2956 | 0x36, 0x00, /* 0011011000 */ | ||
2957 | 0x00, 0x00, /* 0000000000 */ | ||
2958 | 0x3c, 0x00, /* 0011110000 */ | ||
2959 | 0x66, 0x00, /* 0110011000 */ | ||
2960 | 0xc3, 0x00, /* 1100001100 */ | ||
2961 | 0xc1, 0x80, /* 1100000110 */ | ||
2962 | 0xc1, 0x80, /* 1100000110 */ | ||
2963 | 0xc1, 0x80, /* 1100000110 */ | ||
2964 | 0xc1, 0x80, /* 1100000110 */ | ||
2965 | 0xe1, 0x80, /* 1110000110 */ | ||
2966 | 0x73, 0x00, /* 0111001100 */ | ||
2967 | 0x3c, 0x00, /* 0011110000 */ | ||
2968 | 0x00, 0x00, /* 0000000000 */ | ||
2969 | 0x00, 0x00, /* 0000000000 */ | ||
2970 | 0x00, 0x00, /* 0000000000 */ | ||
2971 | |||
2972 | /* 148 0x94 '.' */ | ||
2973 | 0x00, 0x00, /* 0000000000 */ | ||
2974 | 0x00, 0x00, /* 0000000000 */ | ||
2975 | 0x33, 0x00, /* 0011001100 */ | ||
2976 | 0x33, 0x00, /* 0011001100 */ | ||
2977 | 0x00, 0x00, /* 0000000000 */ | ||
2978 | 0x3c, 0x00, /* 0011110000 */ | ||
2979 | 0x66, 0x00, /* 0110011000 */ | ||
2980 | 0xc3, 0x00, /* 1100001100 */ | ||
2981 | 0xc1, 0x80, /* 1100000110 */ | ||
2982 | 0xc1, 0x80, /* 1100000110 */ | ||
2983 | 0xc1, 0x80, /* 1100000110 */ | ||
2984 | 0xc1, 0x80, /* 1100000110 */ | ||
2985 | 0xe1, 0x80, /* 1110000110 */ | ||
2986 | 0x73, 0x00, /* 0111001100 */ | ||
2987 | 0x3c, 0x00, /* 0011110000 */ | ||
2988 | 0x00, 0x00, /* 0000000000 */ | ||
2989 | 0x00, 0x00, /* 0000000000 */ | ||
2990 | 0x00, 0x00, /* 0000000000 */ | ||
2991 | |||
2992 | /* 149 0x95 '.' */ | ||
2993 | 0x00, 0x00, /* 0000000000 */ | ||
2994 | 0x18, 0x00, /* 0001100000 */ | ||
2995 | 0x0c, 0x00, /* 0000110000 */ | ||
2996 | 0x06, 0x00, /* 0000011000 */ | ||
2997 | 0x00, 0x00, /* 0000000000 */ | ||
2998 | 0x3c, 0x00, /* 0011110000 */ | ||
2999 | 0x66, 0x00, /* 0110011000 */ | ||
3000 | 0xc3, 0x00, /* 1100001100 */ | ||
3001 | 0xc1, 0x80, /* 1100000110 */ | ||
3002 | 0xc1, 0x80, /* 1100000110 */ | ||
3003 | 0xc1, 0x80, /* 1100000110 */ | ||
3004 | 0xc1, 0x80, /* 1100000110 */ | ||
3005 | 0xe1, 0x80, /* 1110000110 */ | ||
3006 | 0x73, 0x00, /* 0111001100 */ | ||
3007 | 0x3c, 0x00, /* 0011110000 */ | ||
3008 | 0x00, 0x00, /* 0000000000 */ | ||
3009 | 0x00, 0x00, /* 0000000000 */ | ||
3010 | 0x00, 0x00, /* 0000000000 */ | ||
3011 | |||
3012 | /* 150 0x96 '.' */ | ||
3013 | 0x08, 0x00, /* 0000100000 */ | ||
3014 | 0x1c, 0x00, /* 0001110000 */ | ||
3015 | 0x36, 0x00, /* 0011011000 */ | ||
3016 | 0x63, 0x00, /* 0110001100 */ | ||
3017 | 0x00, 0x00, /* 0000000000 */ | ||
3018 | 0xf7, 0x80, /* 1111011110 */ | ||
3019 | 0x63, 0x00, /* 0110001100 */ | ||
3020 | 0x63, 0x00, /* 0110001100 */ | ||
3021 | 0x63, 0x00, /* 0110001100 */ | ||
3022 | 0x63, 0x00, /* 0110001100 */ | ||
3023 | 0x63, 0x00, /* 0110001100 */ | ||
3024 | 0x63, 0x00, /* 0110001100 */ | ||
3025 | 0x63, 0x00, /* 0110001100 */ | ||
3026 | 0x77, 0x00, /* 0111011100 */ | ||
3027 | 0x3d, 0x80, /* 0011110110 */ | ||
3028 | 0x00, 0x00, /* 0000000000 */ | ||
3029 | 0x00, 0x00, /* 0000000000 */ | ||
3030 | 0x00, 0x00, /* 0000000000 */ | ||
3031 | |||
3032 | /* 151 0x97 '.' */ | ||
3033 | 0x00, 0x00, /* 0000000000 */ | ||
3034 | 0x60, 0x00, /* 0110000000 */ | ||
3035 | 0x30, 0x00, /* 0011000000 */ | ||
3036 | 0x18, 0x00, /* 0001100000 */ | ||
3037 | 0x00, 0x00, /* 0000000000 */ | ||
3038 | 0xf7, 0x80, /* 1111011110 */ | ||
3039 | 0x63, 0x00, /* 0110001100 */ | ||
3040 | 0x63, 0x00, /* 0110001100 */ | ||
3041 | 0x63, 0x00, /* 0110001100 */ | ||
3042 | 0x63, 0x00, /* 0110001100 */ | ||
3043 | 0x63, 0x00, /* 0110001100 */ | ||
3044 | 0x63, 0x00, /* 0110001100 */ | ||
3045 | 0x63, 0x00, /* 0110001100 */ | ||
3046 | 0x77, 0x00, /* 0111011100 */ | ||
3047 | 0x3d, 0x80, /* 0011110110 */ | ||
3048 | 0x00, 0x00, /* 0000000000 */ | ||
3049 | 0x00, 0x00, /* 0000000000 */ | ||
3050 | 0x00, 0x00, /* 0000000000 */ | ||
3051 | |||
3052 | /* 152 0x98 '.' */ | ||
3053 | 0x00, 0x00, /* 0000000000 */ | ||
3054 | 0x33, 0x00, /* 0011001100 */ | ||
3055 | 0x33, 0x00, /* 0011001100 */ | ||
3056 | 0x00, 0x00, /* 0000000000 */ | ||
3057 | 0x00, 0x00, /* 0000000000 */ | ||
3058 | 0xf3, 0xc0, /* 1111001111 */ | ||
3059 | 0x61, 0x80, /* 0110000110 */ | ||
3060 | 0x33, 0x00, /* 0011001100 */ | ||
3061 | 0x1b, 0x00, /* 0001101100 */ | ||
3062 | 0x1e, 0x00, /* 0001111000 */ | ||
3063 | 0x0e, 0x00, /* 0000111000 */ | ||
3064 | 0x0c, 0x00, /* 0000110000 */ | ||
3065 | 0x0c, 0x00, /* 0000110000 */ | ||
3066 | 0x0c, 0x00, /* 0000110000 */ | ||
3067 | 0x0c, 0x00, /* 0000110000 */ | ||
3068 | 0x18, 0x00, /* 0001100000 */ | ||
3069 | 0x78, 0x00, /* 0111100000 */ | ||
3070 | 0x70, 0x00, /* 0111000000 */ | ||
3071 | |||
3072 | /* 153 0x99 '.' */ | ||
3073 | 0x61, 0x80, /* 0110000110 */ | ||
3074 | 0x61, 0x80, /* 0110000110 */ | ||
3075 | 0x0c, 0x00, /* 0000110000 */ | ||
3076 | 0x17, 0x00, /* 0001011100 */ | ||
3077 | 0x23, 0x00, /* 0010001100 */ | ||
3078 | 0x21, 0x80, /* 0010000110 */ | ||
3079 | 0x61, 0x80, /* 0110000110 */ | ||
3080 | 0x61, 0x80, /* 0110000110 */ | ||
3081 | 0x61, 0x80, /* 0110000110 */ | ||
3082 | 0x61, 0x80, /* 0110000110 */ | ||
3083 | 0x61, 0x80, /* 0110000110 */ | ||
3084 | 0x21, 0x00, /* 0010000100 */ | ||
3085 | 0x31, 0x00, /* 0011000100 */ | ||
3086 | 0x1a, 0x00, /* 0001101000 */ | ||
3087 | 0x0c, 0x00, /* 0000110000 */ | ||
3088 | 0x00, 0x00, /* 0000000000 */ | ||
3089 | 0x00, 0x00, /* 0000000000 */ | ||
3090 | 0x00, 0x00, /* 0000000000 */ | ||
3091 | |||
3092 | /* 154 0x9a '.' */ | ||
3093 | 0x33, 0x00, /* 0011001100 */ | ||
3094 | 0x33, 0x00, /* 0011001100 */ | ||
3095 | 0x00, 0x00, /* 0000000000 */ | ||
3096 | 0xf1, 0xc0, /* 1111000111 */ | ||
3097 | 0x60, 0x80, /* 0110000010 */ | ||
3098 | 0x60, 0x80, /* 0110000010 */ | ||
3099 | 0x60, 0x80, /* 0110000010 */ | ||
3100 | 0x60, 0x80, /* 0110000010 */ | ||
3101 | 0x60, 0x80, /* 0110000010 */ | ||
3102 | 0x60, 0x80, /* 0110000010 */ | ||
3103 | 0x60, 0x80, /* 0110000010 */ | ||
3104 | 0x60, 0x80, /* 0110000010 */ | ||
3105 | 0x71, 0x00, /* 0111000100 */ | ||
3106 | 0x3f, 0x00, /* 0011111100 */ | ||
3107 | 0x1e, 0x00, /* 0001111000 */ | ||
3108 | 0x00, 0x00, /* 0000000000 */ | ||
3109 | 0x00, 0x00, /* 0000000000 */ | ||
3110 | 0x00, 0x00, /* 0000000000 */ | ||
3111 | |||
3112 | /* 155 0x9b '.' */ | ||
3113 | 0x00, 0x00, /* 0000000000 */ | ||
3114 | 0x00, 0x00, /* 0000000000 */ | ||
3115 | 0x00, 0x00, /* 0000000000 */ | ||
3116 | 0x06, 0x00, /* 0000011000 */ | ||
3117 | 0x06, 0x00, /* 0000011000 */ | ||
3118 | 0x1f, 0x80, /* 0001111110 */ | ||
3119 | 0x36, 0x80, /* 0011011010 */ | ||
3120 | 0x26, 0x00, /* 0010011000 */ | ||
3121 | 0x66, 0x00, /* 0110011000 */ | ||
3122 | 0x66, 0x00, /* 0110011000 */ | ||
3123 | 0x66, 0x00, /* 0110011000 */ | ||
3124 | 0x66, 0x00, /* 0110011000 */ | ||
3125 | 0x76, 0x00, /* 0111011000 */ | ||
3126 | 0x36, 0x80, /* 0011011010 */ | ||
3127 | 0x1f, 0x80, /* 0001111110 */ | ||
3128 | 0x06, 0x00, /* 0000011000 */ | ||
3129 | 0x06, 0x00, /* 0000011000 */ | ||
3130 | 0x00, 0x00, /* 0000000000 */ | ||
3131 | |||
3132 | /* 156 0x9c '.' */ | ||
3133 | 0x00, 0x00, /* 0000000000 */ | ||
3134 | 0x1e, 0x00, /* 0001111000 */ | ||
3135 | 0x3b, 0x00, /* 0011101100 */ | ||
3136 | 0x33, 0x00, /* 0011001100 */ | ||
3137 | 0x30, 0x00, /* 0011000000 */ | ||
3138 | 0x30, 0x00, /* 0011000000 */ | ||
3139 | 0x30, 0x00, /* 0011000000 */ | ||
3140 | 0x7e, 0x00, /* 0111111000 */ | ||
3141 | 0x7e, 0x00, /* 0111111000 */ | ||
3142 | 0x30, 0x00, /* 0011000000 */ | ||
3143 | 0x30, 0x00, /* 0011000000 */ | ||
3144 | 0x30, 0x00, /* 0011000000 */ | ||
3145 | 0x30, 0x00, /* 0011000000 */ | ||
3146 | 0x7c, 0x80, /* 0111110010 */ | ||
3147 | 0x7f, 0x80, /* 0111111110 */ | ||
3148 | 0x43, 0x00, /* 0100001100 */ | ||
3149 | 0x00, 0x00, /* 0000000000 */ | ||
3150 | 0x00, 0x00, /* 0000000000 */ | ||
3151 | |||
3152 | /* 157 0x9d '.' */ | ||
3153 | 0x00, 0x00, /* 0000000000 */ | ||
3154 | 0x40, 0x80, /* 0100000010 */ | ||
3155 | 0x40, 0x80, /* 0100000010 */ | ||
3156 | 0x21, 0x00, /* 0010000100 */ | ||
3157 | 0x33, 0x00, /* 0011001100 */ | ||
3158 | 0x33, 0x00, /* 0011001100 */ | ||
3159 | 0x1e, 0x00, /* 0001111000 */ | ||
3160 | 0x0c, 0x00, /* 0000110000 */ | ||
3161 | 0x3f, 0x00, /* 0011111100 */ | ||
3162 | 0x0c, 0x00, /* 0000110000 */ | ||
3163 | 0x3f, 0x00, /* 0011111100 */ | ||
3164 | 0x0c, 0x00, /* 0000110000 */ | ||
3165 | 0x0c, 0x00, /* 0000110000 */ | ||
3166 | 0x0c, 0x00, /* 0000110000 */ | ||
3167 | 0x0c, 0x00, /* 0000110000 */ | ||
3168 | 0x00, 0x00, /* 0000000000 */ | ||
3169 | 0x00, 0x00, /* 0000000000 */ | ||
3170 | 0x00, 0x00, /* 0000000000 */ | ||
3171 | |||
3172 | /* 158 0x9e '.' */ | ||
3173 | 0x00, 0x00, /* 0000000000 */ | ||
3174 | 0xbf, 0x00, /* 1011111100 */ | ||
3175 | 0x40, 0x80, /* 0100000010 */ | ||
3176 | 0x40, 0x80, /* 0100000010 */ | ||
3177 | 0x7f, 0x00, /* 0111111100 */ | ||
3178 | 0x40, 0x00, /* 0100000000 */ | ||
3179 | 0x48, 0x00, /* 0100100000 */ | ||
3180 | 0x48, 0x00, /* 0100100000 */ | ||
3181 | 0x5e, 0x00, /* 0101111000 */ | ||
3182 | 0x48, 0x00, /* 0100100000 */ | ||
3183 | 0x48, 0x00, /* 0100100000 */ | ||
3184 | 0x48, 0x00, /* 0100100000 */ | ||
3185 | 0x48, 0x80, /* 0100100010 */ | ||
3186 | 0x47, 0x00, /* 0100011100 */ | ||
3187 | 0xe0, 0x00, /* 1110000000 */ | ||
3188 | 0x00, 0x00, /* 0000000000 */ | ||
3189 | 0x00, 0x00, /* 0000000000 */ | ||
3190 | 0x00, 0x00, /* 0000000000 */ | ||
3191 | |||
3192 | /* 159 0x9f '.' */ | ||
3193 | 0x00, 0x00, /* 0000000000 */ | ||
3194 | 0x03, 0x00, /* 0000001100 */ | ||
3195 | 0x04, 0x80, /* 0000010010 */ | ||
3196 | 0x08, 0x00, /* 0000100000 */ | ||
3197 | 0x08, 0x00, /* 0000100000 */ | ||
3198 | 0x08, 0x00, /* 0000100000 */ | ||
3199 | 0x08, 0x00, /* 0000100000 */ | ||
3200 | 0x09, 0x00, /* 0000100100 */ | ||
3201 | 0x3e, 0x00, /* 0011111000 */ | ||
3202 | 0x48, 0x00, /* 0100100000 */ | ||
3203 | 0x08, 0x00, /* 0000100000 */ | ||
3204 | 0x08, 0x00, /* 0000100000 */ | ||
3205 | 0x08, 0x00, /* 0000100000 */ | ||
3206 | 0x08, 0x00, /* 0000100000 */ | ||
3207 | 0x08, 0x00, /* 0000100000 */ | ||
3208 | 0x90, 0x00, /* 1001000000 */ | ||
3209 | 0x60, 0x00, /* 0110000000 */ | ||
3210 | 0x00, 0x00, /* 0000000000 */ | ||
3211 | |||
3212 | /* 160 0xa0 '.' */ | ||
3213 | 0x00, 0x00, /* 0000000000 */ | ||
3214 | 0x03, 0x00, /* 0000001100 */ | ||
3215 | 0x06, 0x00, /* 0000011000 */ | ||
3216 | 0x0c, 0x00, /* 0000110000 */ | ||
3217 | 0x00, 0x00, /* 0000000000 */ | ||
3218 | 0x1f, 0x00, /* 0001111100 */ | ||
3219 | 0x31, 0x80, /* 0011000110 */ | ||
3220 | 0x21, 0x80, /* 0010000110 */ | ||
3221 | 0x07, 0x80, /* 0000011110 */ | ||
3222 | 0x39, 0x80, /* 0011100110 */ | ||
3223 | 0x61, 0x80, /* 0110000110 */ | ||
3224 | 0x61, 0x80, /* 0110000110 */ | ||
3225 | 0x61, 0x80, /* 0110000110 */ | ||
3226 | 0x73, 0x80, /* 0111001110 */ | ||
3227 | 0x3d, 0xc0, /* 0011110111 */ | ||
3228 | 0x00, 0x00, /* 0000000000 */ | ||
3229 | 0x00, 0x00, /* 0000000000 */ | ||
3230 | 0x00, 0x00, /* 0000000000 */ | ||
3231 | |||
3232 | /* 161 0xa1 '.' */ | ||
3233 | 0x00, 0x00, /* 0000000000 */ | ||
3234 | 0x03, 0x00, /* 0000001100 */ | ||
3235 | 0x06, 0x00, /* 0000011000 */ | ||
3236 | 0x0c, 0x00, /* 0000110000 */ | ||
3237 | 0x00, 0x00, /* 0000000000 */ | ||
3238 | 0x3c, 0x00, /* 0011110000 */ | ||
3239 | 0x0c, 0x00, /* 0000110000 */ | ||
3240 | 0x0c, 0x00, /* 0000110000 */ | ||
3241 | 0x0c, 0x00, /* 0000110000 */ | ||
3242 | 0x0c, 0x00, /* 0000110000 */ | ||
3243 | 0x0c, 0x00, /* 0000110000 */ | ||
3244 | 0x0c, 0x00, /* 0000110000 */ | ||
3245 | 0x0c, 0x00, /* 0000110000 */ | ||
3246 | 0x0c, 0x00, /* 0000110000 */ | ||
3247 | 0x3f, 0x00, /* 0011111100 */ | ||
3248 | 0x00, 0x00, /* 0000000000 */ | ||
3249 | 0x00, 0x00, /* 0000000000 */ | ||
3250 | 0x00, 0x00, /* 0000000000 */ | ||
3251 | |||
3252 | /* 162 0xa2 '.' */ | ||
3253 | 0x00, 0x00, /* 0000000000 */ | ||
3254 | 0x06, 0x00, /* 0000011000 */ | ||
3255 | 0x0c, 0x00, /* 0000110000 */ | ||
3256 | 0x18, 0x00, /* 0001100000 */ | ||
3257 | 0x00, 0x00, /* 0000000000 */ | ||
3258 | 0x3c, 0x00, /* 0011110000 */ | ||
3259 | 0x66, 0x00, /* 0110011000 */ | ||
3260 | 0xc3, 0x00, /* 1100001100 */ | ||
3261 | 0xc1, 0x80, /* 1100000110 */ | ||
3262 | 0xc1, 0x80, /* 1100000110 */ | ||
3263 | 0xc1, 0x80, /* 1100000110 */ | ||
3264 | 0xc1, 0x80, /* 1100000110 */ | ||
3265 | 0xe1, 0x80, /* 1110000110 */ | ||
3266 | 0x73, 0x00, /* 0111001100 */ | ||
3267 | 0x3c, 0x00, /* 0011110000 */ | ||
3268 | 0x00, 0x00, /* 0000000000 */ | ||
3269 | 0x00, 0x00, /* 0000000000 */ | ||
3270 | 0x00, 0x00, /* 0000000000 */ | ||
3271 | |||
3272 | /* 163 0xa3 '.' */ | ||
3273 | 0x00, 0x00, /* 0000000000 */ | ||
3274 | 0x06, 0x00, /* 0000011000 */ | ||
3275 | 0x0c, 0x00, /* 0000110000 */ | ||
3276 | 0x18, 0x00, /* 0001100000 */ | ||
3277 | 0x00, 0x00, /* 0000000000 */ | ||
3278 | 0xf7, 0x80, /* 1111011110 */ | ||
3279 | 0x63, 0x00, /* 0110001100 */ | ||
3280 | 0x63, 0x00, /* 0110001100 */ | ||
3281 | 0x63, 0x00, /* 0110001100 */ | ||
3282 | 0x63, 0x00, /* 0110001100 */ | ||
3283 | 0x63, 0x00, /* 0110001100 */ | ||
3284 | 0x63, 0x00, /* 0110001100 */ | ||
3285 | 0x63, 0x00, /* 0110001100 */ | ||
3286 | 0x77, 0x00, /* 0111011100 */ | ||
3287 | 0x3d, 0x80, /* 0011110110 */ | ||
3288 | 0x00, 0x00, /* 0000000000 */ | ||
3289 | 0x00, 0x00, /* 0000000000 */ | ||
3290 | 0x00, 0x00, /* 0000000000 */ | ||
3291 | |||
3292 | /* 164 0xa4 '.' */ | ||
3293 | 0x00, 0x00, /* 0000000000 */ | ||
3294 | 0x38, 0x80, /* 0011100010 */ | ||
3295 | 0x7f, 0x80, /* 0111111110 */ | ||
3296 | 0x47, 0x00, /* 0100011100 */ | ||
3297 | 0x00, 0x00, /* 0000000000 */ | ||
3298 | 0x6f, 0x00, /* 0110111100 */ | ||
3299 | 0x7b, 0x80, /* 0111101110 */ | ||
3300 | 0x31, 0x80, /* 0011000110 */ | ||
3301 | 0x31, 0x80, /* 0011000110 */ | ||
3302 | 0x31, 0x80, /* 0011000110 */ | ||
3303 | 0x31, 0x80, /* 0011000110 */ | ||
3304 | 0x31, 0x80, /* 0011000110 */ | ||
3305 | 0x31, 0x80, /* 0011000110 */ | ||
3306 | 0x31, 0x80, /* 0011000110 */ | ||
3307 | 0x7b, 0xc0, /* 0111101111 */ | ||
3308 | 0x00, 0x00, /* 0000000000 */ | ||
3309 | 0x00, 0x00, /* 0000000000 */ | ||
3310 | 0x00, 0x00, /* 0000000000 */ | ||
3311 | |||
3312 | /* 165 0xa5 '.' */ | ||
3313 | 0x00, 0x00, /* 0000000000 */ | ||
3314 | 0x38, 0x80, /* 0011100010 */ | ||
3315 | 0x7f, 0x80, /* 0111111110 */ | ||
3316 | 0x47, 0x00, /* 0100011100 */ | ||
3317 | 0x00, 0x00, /* 0000000000 */ | ||
3318 | 0xe3, 0xc0, /* 1110001111 */ | ||
3319 | 0x71, 0x80, /* 0111000110 */ | ||
3320 | 0x79, 0x80, /* 0111100110 */ | ||
3321 | 0x79, 0x80, /* 0111100110 */ | ||
3322 | 0x6d, 0x80, /* 0110110110 */ | ||
3323 | 0x6d, 0x80, /* 0110110110 */ | ||
3324 | 0x67, 0x80, /* 0110011110 */ | ||
3325 | 0x63, 0x80, /* 0110001110 */ | ||
3326 | 0x61, 0x80, /* 0110000110 */ | ||
3327 | 0xf0, 0xc0, /* 1111000011 */ | ||
3328 | 0x00, 0x00, /* 0000000000 */ | ||
3329 | 0x00, 0x00, /* 0000000000 */ | ||
3330 | 0x00, 0x00, /* 0000000000 */ | ||
3331 | |||
3332 | /* 166 0xa6 '.' */ | ||
3333 | 0x00, 0x00, /* 0000000000 */ | ||
3334 | 0x3e, 0x00, /* 0011111000 */ | ||
3335 | 0x63, 0x00, /* 0110001100 */ | ||
3336 | 0x03, 0x00, /* 0000001100 */ | ||
3337 | 0x0f, 0x00, /* 0000111100 */ | ||
3338 | 0x33, 0x00, /* 0011001100 */ | ||
3339 | 0x63, 0x00, /* 0110001100 */ | ||
3340 | 0x63, 0x00, /* 0110001100 */ | ||
3341 | 0x67, 0x00, /* 0110011100 */ | ||
3342 | 0x3b, 0x80, /* 0011101110 */ | ||
3343 | 0x00, 0x00, /* 0000000000 */ | ||
3344 | 0x7f, 0x80, /* 0111111110 */ | ||
3345 | 0x00, 0x00, /* 0000000000 */ | ||
3346 | 0x00, 0x00, /* 0000000000 */ | ||
3347 | 0x00, 0x00, /* 0000000000 */ | ||
3348 | 0x00, 0x00, /* 0000000000 */ | ||
3349 | 0x00, 0x00, /* 0000000000 */ | ||
3350 | 0x00, 0x00, /* 0000000000 */ | ||
3351 | |||
3352 | /* 167 0xa7 '.' */ | ||
3353 | 0x00, 0x00, /* 0000000000 */ | ||
3354 | 0x0e, 0x00, /* 0000111000 */ | ||
3355 | 0x33, 0x00, /* 0011001100 */ | ||
3356 | 0x21, 0x80, /* 0010000110 */ | ||
3357 | 0x61, 0x80, /* 0110000110 */ | ||
3358 | 0x61, 0x80, /* 0110000110 */ | ||
3359 | 0x61, 0x80, /* 0110000110 */ | ||
3360 | 0x61, 0x00, /* 0110000100 */ | ||
3361 | 0x33, 0x00, /* 0011001100 */ | ||
3362 | 0x1c, 0x00, /* 0001110000 */ | ||
3363 | 0x00, 0x00, /* 0000000000 */ | ||
3364 | 0x7f, 0x80, /* 0111111110 */ | ||
3365 | 0x00, 0x00, /* 0000000000 */ | ||
3366 | 0x00, 0x00, /* 0000000000 */ | ||
3367 | 0x00, 0x00, /* 0000000000 */ | ||
3368 | 0x00, 0x00, /* 0000000000 */ | ||
3369 | 0x00, 0x00, /* 0000000000 */ | ||
3370 | 0x00, 0x00, /* 0000000000 */ | ||
3371 | |||
3372 | /* 168 0xa8 '.' */ | ||
3373 | 0x00, 0x00, /* 0000000000 */ | ||
3374 | 0x06, 0x00, /* 0000011000 */ | ||
3375 | 0x06, 0x00, /* 0000011000 */ | ||
3376 | 0x00, 0x00, /* 0000000000 */ | ||
3377 | 0x06, 0x00, /* 0000011000 */ | ||
3378 | 0x06, 0x00, /* 0000011000 */ | ||
3379 | 0x0c, 0x00, /* 0000110000 */ | ||
3380 | 0x18, 0x00, /* 0001100000 */ | ||
3381 | 0x30, 0x00, /* 0011000000 */ | ||
3382 | 0x60, 0x00, /* 0110000000 */ | ||
3383 | 0x60, 0x00, /* 0110000000 */ | ||
3384 | 0x60, 0x80, /* 0110000010 */ | ||
3385 | 0x73, 0x80, /* 0111001110 */ | ||
3386 | 0x3f, 0x00, /* 0011111100 */ | ||
3387 | 0x1e, 0x00, /* 0001111000 */ | ||
3388 | 0x00, 0x00, /* 0000000000 */ | ||
3389 | 0x00, 0x00, /* 0000000000 */ | ||
3390 | 0x00, 0x00, /* 0000000000 */ | ||
3391 | |||
3392 | /* 169 0xa9 '.' */ | ||
3393 | 0x00, 0x00, /* 0000000000 */ | ||
3394 | 0x00, 0x00, /* 0000000000 */ | ||
3395 | 0x00, 0x00, /* 0000000000 */ | ||
3396 | 0x00, 0x00, /* 0000000000 */ | ||
3397 | 0x00, 0x00, /* 0000000000 */ | ||
3398 | 0x00, 0x00, /* 0000000000 */ | ||
3399 | 0x00, 0x00, /* 0000000000 */ | ||
3400 | 0x00, 0x00, /* 0000000000 */ | ||
3401 | 0x7f, 0x80, /* 0111111110 */ | ||
3402 | 0x7f, 0x80, /* 0111111110 */ | ||
3403 | 0x60, 0x00, /* 0110000000 */ | ||
3404 | 0x60, 0x00, /* 0110000000 */ | ||
3405 | 0x60, 0x00, /* 0110000000 */ | ||
3406 | 0x00, 0x00, /* 0000000000 */ | ||
3407 | 0x00, 0x00, /* 0000000000 */ | ||
3408 | 0x00, 0x00, /* 0000000000 */ | ||
3409 | 0x00, 0x00, /* 0000000000 */ | ||
3410 | 0x00, 0x00, /* 0000000000 */ | ||
3411 | |||
3412 | /* 170 0xaa '.' */ | ||
3413 | 0x00, 0x00, /* 0000000000 */ | ||
3414 | 0x00, 0x00, /* 0000000000 */ | ||
3415 | 0x00, 0x00, /* 0000000000 */ | ||
3416 | 0x00, 0x00, /* 0000000000 */ | ||
3417 | 0x00, 0x00, /* 0000000000 */ | ||
3418 | 0x00, 0x00, /* 0000000000 */ | ||
3419 | 0x00, 0x00, /* 0000000000 */ | ||
3420 | 0x00, 0x00, /* 0000000000 */ | ||
3421 | 0x7f, 0x80, /* 0111111110 */ | ||
3422 | 0x7f, 0x80, /* 0111111110 */ | ||
3423 | 0x01, 0x80, /* 0000000110 */ | ||
3424 | 0x01, 0x80, /* 0000000110 */ | ||
3425 | 0x01, 0x80, /* 0000000110 */ | ||
3426 | 0x00, 0x00, /* 0000000000 */ | ||
3427 | 0x00, 0x00, /* 0000000000 */ | ||
3428 | 0x00, 0x00, /* 0000000000 */ | ||
3429 | 0x00, 0x00, /* 0000000000 */ | ||
3430 | 0x00, 0x00, /* 0000000000 */ | ||
3431 | |||
3432 | /* 171 0xab '.' */ | ||
3433 | 0x00, 0x00, /* 0000000000 */ | ||
3434 | 0x20, 0x00, /* 0010000000 */ | ||
3435 | 0x60, 0x00, /* 0110000000 */ | ||
3436 | 0x20, 0x00, /* 0010000000 */ | ||
3437 | 0x20, 0x80, /* 0010000010 */ | ||
3438 | 0x21, 0x00, /* 0010000100 */ | ||
3439 | 0x22, 0x00, /* 0010001000 */ | ||
3440 | 0x74, 0x00, /* 0111010000 */ | ||
3441 | 0x08, 0x00, /* 0000100000 */ | ||
3442 | 0x17, 0x00, /* 0001011100 */ | ||
3443 | 0x28, 0x80, /* 0010100010 */ | ||
3444 | 0x43, 0x00, /* 0100001100 */ | ||
3445 | 0x04, 0x00, /* 0000010000 */ | ||
3446 | 0x08, 0x00, /* 0000100000 */ | ||
3447 | 0x0f, 0x80, /* 0000111110 */ | ||
3448 | 0x00, 0x00, /* 0000000000 */ | ||
3449 | 0x00, 0x00, /* 0000000000 */ | ||
3450 | 0x00, 0x00, /* 0000000000 */ | ||
3451 | |||
3452 | /* 172 0xac '.' */ | ||
3453 | 0x00, 0x00, /* 0000000000 */ | ||
3454 | 0x20, 0x00, /* 0010000000 */ | ||
3455 | 0x60, 0x00, /* 0110000000 */ | ||
3456 | 0x20, 0x00, /* 0010000000 */ | ||
3457 | 0x20, 0x80, /* 0010000010 */ | ||
3458 | 0x21, 0x00, /* 0010000100 */ | ||
3459 | 0x22, 0x00, /* 0010001000 */ | ||
3460 | 0x74, 0x00, /* 0111010000 */ | ||
3461 | 0x09, 0x00, /* 0000100100 */ | ||
3462 | 0x13, 0x00, /* 0001001100 */ | ||
3463 | 0x25, 0x00, /* 0010010100 */ | ||
3464 | 0x49, 0x00, /* 0100100100 */ | ||
3465 | 0x1f, 0x80, /* 0001111110 */ | ||
3466 | 0x01, 0x00, /* 0000000100 */ | ||
3467 | 0x01, 0x00, /* 0000000100 */ | ||
3468 | 0x00, 0x00, /* 0000000000 */ | ||
3469 | 0x00, 0x00, /* 0000000000 */ | ||
3470 | 0x00, 0x00, /* 0000000000 */ | ||
3471 | |||
3472 | /* 173 0xad '.' */ | ||
3473 | 0x00, 0x00, /* 0000000000 */ | ||
3474 | 0x0c, 0x00, /* 0000110000 */ | ||
3475 | 0x0c, 0x00, /* 0000110000 */ | ||
3476 | 0x00, 0x00, /* 0000000000 */ | ||
3477 | 0x0c, 0x00, /* 0000110000 */ | ||
3478 | 0x0c, 0x00, /* 0000110000 */ | ||
3479 | 0x0c, 0x00, /* 0000110000 */ | ||
3480 | 0x0c, 0x00, /* 0000110000 */ | ||
3481 | 0x0c, 0x00, /* 0000110000 */ | ||
3482 | 0x0c, 0x00, /* 0000110000 */ | ||
3483 | 0x0c, 0x00, /* 0000110000 */ | ||
3484 | 0x0c, 0x00, /* 0000110000 */ | ||
3485 | 0x0c, 0x00, /* 0000110000 */ | ||
3486 | 0x0c, 0x00, /* 0000110000 */ | ||
3487 | 0x0c, 0x00, /* 0000110000 */ | ||
3488 | 0x00, 0x00, /* 0000000000 */ | ||
3489 | 0x00, 0x00, /* 0000000000 */ | ||
3490 | 0x00, 0x00, /* 0000000000 */ | ||
3491 | |||
3492 | /* 174 0xae '.' */ | ||
3493 | 0x00, 0x00, /* 0000000000 */ | ||
3494 | 0x00, 0x00, /* 0000000000 */ | ||
3495 | 0x00, 0x00, /* 0000000000 */ | ||
3496 | 0x00, 0x00, /* 0000000000 */ | ||
3497 | 0x00, 0x00, /* 0000000000 */ | ||
3498 | 0x0d, 0x80, /* 0000110110 */ | ||
3499 | 0x1b, 0x00, /* 0001101100 */ | ||
3500 | 0x36, 0x00, /* 0011011000 */ | ||
3501 | 0x6c, 0x00, /* 0110110000 */ | ||
3502 | 0xd8, 0x00, /* 1101100000 */ | ||
3503 | 0x6c, 0x00, /* 0110110000 */ | ||
3504 | 0x36, 0x00, /* 0011011000 */ | ||
3505 | 0x1b, 0x00, /* 0001101100 */ | ||
3506 | 0x0d, 0x80, /* 0000110110 */ | ||
3507 | 0x00, 0x00, /* 0000000000 */ | ||
3508 | 0x00, 0x00, /* 0000000000 */ | ||
3509 | 0x00, 0x00, /* 0000000000 */ | ||
3510 | 0x00, 0x00, /* 0000000000 */ | ||
3511 | |||
3512 | /* 175 0xaf '.' */ | ||
3513 | 0x00, 0x00, /* 0000000000 */ | ||
3514 | 0x00, 0x00, /* 0000000000 */ | ||
3515 | 0x00, 0x00, /* 0000000000 */ | ||
3516 | 0x00, 0x00, /* 0000000000 */ | ||
3517 | 0x00, 0x00, /* 0000000000 */ | ||
3518 | 0x6c, 0x00, /* 0110110000 */ | ||
3519 | 0x36, 0x00, /* 0011011000 */ | ||
3520 | 0x1b, 0x00, /* 0001101100 */ | ||
3521 | 0x0d, 0x80, /* 0000110110 */ | ||
3522 | 0x06, 0xc0, /* 0000011011 */ | ||
3523 | 0x0d, 0x80, /* 0000110110 */ | ||
3524 | 0x1b, 0x00, /* 0001101100 */ | ||
3525 | 0x36, 0x00, /* 0011011000 */ | ||
3526 | 0x6c, 0x00, /* 0110110000 */ | ||
3527 | 0x00, 0x00, /* 0000000000 */ | ||
3528 | 0x00, 0x00, /* 0000000000 */ | ||
3529 | 0x00, 0x00, /* 0000000000 */ | ||
3530 | 0x00, 0x00, /* 0000000000 */ | ||
3531 | |||
3532 | /* 176 0xb0 '.' */ | ||
3533 | 0xc3, 0x00, /* 1100001100 */ | ||
3534 | 0x41, 0x00, /* 0100000100 */ | ||
3535 | 0x18, 0x40, /* 0001100001 */ | ||
3536 | 0x10, 0x40, /* 0001000001 */ | ||
3537 | 0xc3, 0x00, /* 1100001100 */ | ||
3538 | 0x41, 0x00, /* 0100000100 */ | ||
3539 | 0x18, 0x40, /* 0001100001 */ | ||
3540 | 0x10, 0x40, /* 0001000001 */ | ||
3541 | 0xc3, 0x00, /* 1100001100 */ | ||
3542 | 0x41, 0x00, /* 0100000100 */ | ||
3543 | 0x18, 0x40, /* 0001100001 */ | ||
3544 | 0x10, 0x40, /* 0001000001 */ | ||
3545 | 0xc3, 0x00, /* 1100001100 */ | ||
3546 | 0x41, 0x00, /* 0100000100 */ | ||
3547 | 0x18, 0x40, /* 0001100001 */ | ||
3548 | 0x10, 0x40, /* 0001000001 */ | ||
3549 | 0xc3, 0x00, /* 1100001100 */ | ||
3550 | 0x41, 0x00, /* 0100000100 */ | ||
3551 | |||
3552 | /* 177 0xb1 '.' */ | ||
3553 | 0x11, 0x00, /* 0001000100 */ | ||
3554 | 0xbb, 0x80, /* 1011101110 */ | ||
3555 | 0x11, 0x00, /* 0001000100 */ | ||
3556 | 0x44, 0x40, /* 0100010001 */ | ||
3557 | 0xee, 0xc0, /* 1110111011 */ | ||
3558 | 0x44, 0x40, /* 0100010001 */ | ||
3559 | 0x11, 0x00, /* 0001000100 */ | ||
3560 | 0xbb, 0x80, /* 1011101110 */ | ||
3561 | 0x11, 0x00, /* 0001000100 */ | ||
3562 | 0x44, 0x40, /* 0100010001 */ | ||
3563 | 0xee, 0xc0, /* 1110111011 */ | ||
3564 | 0x44, 0x40, /* 0100010001 */ | ||
3565 | 0x11, 0x00, /* 0001000100 */ | ||
3566 | 0xbb, 0x80, /* 1011101110 */ | ||
3567 | 0x11, 0x00, /* 0001000100 */ | ||
3568 | 0x44, 0x40, /* 0100010001 */ | ||
3569 | 0xee, 0xc0, /* 1110111011 */ | ||
3570 | 0x44, 0x40, /* 0100010001 */ | ||
3571 | |||
3572 | /* 178 0xb2 '.' */ | ||
3573 | 0x3c, 0xc0, /* 0011110011 */ | ||
3574 | 0xbe, 0xc0, /* 1011111011 */ | ||
3575 | 0xe7, 0x80, /* 1110011110 */ | ||
3576 | 0xef, 0x80, /* 1110111110 */ | ||
3577 | 0x3c, 0xc0, /* 0011110011 */ | ||
3578 | 0xbe, 0xc0, /* 1011111011 */ | ||
3579 | 0xe7, 0x80, /* 1110011110 */ | ||
3580 | 0xef, 0x80, /* 1110111110 */ | ||
3581 | 0x3c, 0xc0, /* 0011110011 */ | ||
3582 | 0xbe, 0xc0, /* 1011111011 */ | ||
3583 | 0xe7, 0x80, /* 1110011110 */ | ||
3584 | 0xef, 0x80, /* 1110111110 */ | ||
3585 | 0x3c, 0xc0, /* 0011110011 */ | ||
3586 | 0xbe, 0xc0, /* 1011111011 */ | ||
3587 | 0xe7, 0x80, /* 1110011110 */ | ||
3588 | 0xef, 0x80, /* 1110111110 */ | ||
3589 | 0x3c, 0xc0, /* 0011110011 */ | ||
3590 | 0xbe, 0xc0, /* 1011111011 */ | ||
3591 | |||
3592 | /* 179 0xb3 '.' */ | ||
3593 | 0x0c, 0x00, /* 0000110000 */ | ||
3594 | 0x0c, 0x00, /* 0000110000 */ | ||
3595 | 0x0c, 0x00, /* 0000110000 */ | ||
3596 | 0x0c, 0x00, /* 0000110000 */ | ||
3597 | 0x0c, 0x00, /* 0000110000 */ | ||
3598 | 0x0c, 0x00, /* 0000110000 */ | ||
3599 | 0x0c, 0x00, /* 0000110000 */ | ||
3600 | 0x0c, 0x00, /* 0000110000 */ | ||
3601 | 0x0c, 0x00, /* 0000110000 */ | ||
3602 | 0x0c, 0x00, /* 0000110000 */ | ||
3603 | 0x0c, 0x00, /* 0000110000 */ | ||
3604 | 0x0c, 0x00, /* 0000110000 */ | ||
3605 | 0x0c, 0x00, /* 0000110000 */ | ||
3606 | 0x0c, 0x00, /* 0000110000 */ | ||
3607 | 0x0c, 0x00, /* 0000110000 */ | ||
3608 | 0x0c, 0x00, /* 0000110000 */ | ||
3609 | 0x0c, 0x00, /* 0000110000 */ | ||
3610 | 0x0c, 0x00, /* 0000110000 */ | ||
3611 | |||
3612 | /* 180 0xb4 '.' */ | ||
3613 | 0x0c, 0x00, /* 0000110000 */ | ||
3614 | 0x0c, 0x00, /* 0000110000 */ | ||
3615 | 0x0c, 0x00, /* 0000110000 */ | ||
3616 | 0x0c, 0x00, /* 0000110000 */ | ||
3617 | 0x0c, 0x00, /* 0000110000 */ | ||
3618 | 0x0c, 0x00, /* 0000110000 */ | ||
3619 | 0x0c, 0x00, /* 0000110000 */ | ||
3620 | 0x0c, 0x00, /* 0000110000 */ | ||
3621 | 0xfc, 0x00, /* 1111110000 */ | ||
3622 | 0xfc, 0x00, /* 1111110000 */ | ||
3623 | 0x0c, 0x00, /* 0000110000 */ | ||
3624 | 0x0c, 0x00, /* 0000110000 */ | ||
3625 | 0x0c, 0x00, /* 0000110000 */ | ||
3626 | 0x0c, 0x00, /* 0000110000 */ | ||
3627 | 0x0c, 0x00, /* 0000110000 */ | ||
3628 | 0x0c, 0x00, /* 0000110000 */ | ||
3629 | 0x0c, 0x00, /* 0000110000 */ | ||
3630 | 0x0c, 0x00, /* 0000110000 */ | ||
3631 | |||
3632 | /* 181 0xb5 '.' */ | ||
3633 | 0x0c, 0x00, /* 0000110000 */ | ||
3634 | 0x0c, 0x00, /* 0000110000 */ | ||
3635 | 0x0c, 0x00, /* 0000110000 */ | ||
3636 | 0x0c, 0x00, /* 0000110000 */ | ||
3637 | 0x0c, 0x00, /* 0000110000 */ | ||
3638 | 0xfc, 0x00, /* 1111110000 */ | ||
3639 | 0xfc, 0x00, /* 1111110000 */ | ||
3640 | 0x0c, 0x00, /* 0000110000 */ | ||
3641 | 0xfc, 0x00, /* 1111110000 */ | ||
3642 | 0xfc, 0x00, /* 1111110000 */ | ||
3643 | 0x0c, 0x00, /* 0000110000 */ | ||
3644 | 0x0c, 0x00, /* 0000110000 */ | ||
3645 | 0x0c, 0x00, /* 0000110000 */ | ||
3646 | 0x0c, 0x00, /* 0000110000 */ | ||
3647 | 0x0c, 0x00, /* 0000110000 */ | ||
3648 | 0x0c, 0x00, /* 0000110000 */ | ||
3649 | 0x0c, 0x00, /* 0000110000 */ | ||
3650 | 0x0c, 0x00, /* 0000110000 */ | ||
3651 | |||
3652 | /* 182 0xb6 '.' */ | ||
3653 | 0x1b, 0x00, /* 0001101100 */ | ||
3654 | 0x1b, 0x00, /* 0001101100 */ | ||
3655 | 0x1b, 0x00, /* 0001101100 */ | ||
3656 | 0x1b, 0x00, /* 0001101100 */ | ||
3657 | 0x1b, 0x00, /* 0001101100 */ | ||
3658 | 0x1b, 0x00, /* 0001101100 */ | ||
3659 | 0x1b, 0x00, /* 0001101100 */ | ||
3660 | 0x1b, 0x00, /* 0001101100 */ | ||
3661 | 0xfb, 0x00, /* 1111101100 */ | ||
3662 | 0xfb, 0x00, /* 1111101100 */ | ||
3663 | 0x1b, 0x00, /* 0001101100 */ | ||
3664 | 0x1b, 0x00, /* 0001101100 */ | ||
3665 | 0x1b, 0x00, /* 0001101100 */ | ||
3666 | 0x1b, 0x00, /* 0001101100 */ | ||
3667 | 0x1b, 0x00, /* 0001101100 */ | ||
3668 | 0x1b, 0x00, /* 0001101100 */ | ||
3669 | 0x1b, 0x00, /* 0001101100 */ | ||
3670 | 0x1b, 0x00, /* 0001101100 */ | ||
3671 | |||
3672 | /* 183 0xb7 '.' */ | ||
3673 | 0x00, 0x00, /* 0000000000 */ | ||
3674 | 0x00, 0x00, /* 0000000000 */ | ||
3675 | 0x00, 0x00, /* 0000000000 */ | ||
3676 | 0x00, 0x00, /* 0000000000 */ | ||
3677 | 0x00, 0x00, /* 0000000000 */ | ||
3678 | 0x00, 0x00, /* 0000000000 */ | ||
3679 | 0x00, 0x00, /* 0000000000 */ | ||
3680 | 0x00, 0x00, /* 0000000000 */ | ||
3681 | 0xff, 0x00, /* 1111111100 */ | ||
3682 | 0xff, 0x00, /* 1111111100 */ | ||
3683 | 0x1b, 0x00, /* 0001101100 */ | ||
3684 | 0x1b, 0x00, /* 0001101100 */ | ||
3685 | 0x1b, 0x00, /* 0001101100 */ | ||
3686 | 0x1b, 0x00, /* 0001101100 */ | ||
3687 | 0x1b, 0x00, /* 0001101100 */ | ||
3688 | 0x1b, 0x00, /* 0001101100 */ | ||
3689 | 0x1b, 0x00, /* 0001101100 */ | ||
3690 | 0x1b, 0x00, /* 0001101100 */ | ||
3691 | |||
3692 | /* 184 0xb8 '.' */ | ||
3693 | 0x00, 0x00, /* 0000000000 */ | ||
3694 | 0x00, 0x00, /* 0000000000 */ | ||
3695 | 0x00, 0x00, /* 0000000000 */ | ||
3696 | 0x00, 0x00, /* 0000000000 */ | ||
3697 | 0x00, 0x00, /* 0000000000 */ | ||
3698 | 0xfc, 0x00, /* 1111110000 */ | ||
3699 | 0xfc, 0x00, /* 1111110000 */ | ||
3700 | 0x0c, 0x00, /* 0000110000 */ | ||
3701 | 0xfc, 0x00, /* 1111110000 */ | ||
3702 | 0xfc, 0x00, /* 1111110000 */ | ||
3703 | 0x0c, 0x00, /* 0000110000 */ | ||
3704 | 0x0c, 0x00, /* 0000110000 */ | ||
3705 | 0x0c, 0x00, /* 0000110000 */ | ||
3706 | 0x0c, 0x00, /* 0000110000 */ | ||
3707 | 0x0c, 0x00, /* 0000110000 */ | ||
3708 | 0x0c, 0x00, /* 0000110000 */ | ||
3709 | 0x0c, 0x00, /* 0000110000 */ | ||
3710 | 0x0c, 0x00, /* 0000110000 */ | ||
3711 | |||
3712 | /* 185 0xb9 '.' */ | ||
3713 | 0x1b, 0x00, /* 0001101100 */ | ||
3714 | 0x1b, 0x00, /* 0001101100 */ | ||
3715 | 0x1b, 0x00, /* 0001101100 */ | ||
3716 | 0x1b, 0x00, /* 0001101100 */ | ||
3717 | 0x1b, 0x00, /* 0001101100 */ | ||
3718 | 0xfb, 0x00, /* 1111101100 */ | ||
3719 | 0xfb, 0x00, /* 1111101100 */ | ||
3720 | 0x03, 0x00, /* 0000001100 */ | ||
3721 | 0xfb, 0x00, /* 1111101100 */ | ||
3722 | 0xfb, 0x00, /* 1111101100 */ | ||
3723 | 0x1b, 0x00, /* 0001101100 */ | ||
3724 | 0x1b, 0x00, /* 0001101100 */ | ||
3725 | 0x1b, 0x00, /* 0001101100 */ | ||
3726 | 0x1b, 0x00, /* 0001101100 */ | ||
3727 | 0x1b, 0x00, /* 0001101100 */ | ||
3728 | 0x1b, 0x00, /* 0001101100 */ | ||
3729 | 0x1b, 0x00, /* 0001101100 */ | ||
3730 | 0x1b, 0x00, /* 0001101100 */ | ||
3731 | |||
3732 | /* 186 0xba '.' */ | ||
3733 | 0x1b, 0x00, /* 0001101100 */ | ||
3734 | 0x1b, 0x00, /* 0001101100 */ | ||
3735 | 0x1b, 0x00, /* 0001101100 */ | ||
3736 | 0x1b, 0x00, /* 0001101100 */ | ||
3737 | 0x1b, 0x00, /* 0001101100 */ | ||
3738 | 0x1b, 0x00, /* 0001101100 */ | ||
3739 | 0x1b, 0x00, /* 0001101100 */ | ||
3740 | 0x1b, 0x00, /* 0001101100 */ | ||
3741 | 0x1b, 0x00, /* 0001101100 */ | ||
3742 | 0x1b, 0x00, /* 0001101100 */ | ||
3743 | 0x1b, 0x00, /* 0001101100 */ | ||
3744 | 0x1b, 0x00, /* 0001101100 */ | ||
3745 | 0x1b, 0x00, /* 0001101100 */ | ||
3746 | 0x1b, 0x00, /* 0001101100 */ | ||
3747 | 0x1b, 0x00, /* 0001101100 */ | ||
3748 | 0x1b, 0x00, /* 0001101100 */ | ||
3749 | 0x1b, 0x00, /* 0001101100 */ | ||
3750 | 0x1b, 0x00, /* 0001101100 */ | ||
3751 | |||
3752 | /* 187 0xbb '.' */ | ||
3753 | 0x00, 0x00, /* 0000000000 */ | ||
3754 | 0x00, 0x00, /* 0000000000 */ | ||
3755 | 0x00, 0x00, /* 0000000000 */ | ||
3756 | 0x00, 0x00, /* 0000000000 */ | ||
3757 | 0x00, 0x00, /* 0000000000 */ | ||
3758 | 0xff, 0x00, /* 1111111100 */ | ||
3759 | 0xff, 0x00, /* 1111111100 */ | ||
3760 | 0x03, 0x00, /* 0000001100 */ | ||
3761 | 0xfb, 0x00, /* 1111101100 */ | ||
3762 | 0xfb, 0x00, /* 1111101100 */ | ||
3763 | 0x1b, 0x00, /* 0001101100 */ | ||
3764 | 0x1b, 0x00, /* 0001101100 */ | ||
3765 | 0x1b, 0x00, /* 0001101100 */ | ||
3766 | 0x1b, 0x00, /* 0001101100 */ | ||
3767 | 0x1b, 0x00, /* 0001101100 */ | ||
3768 | 0x1b, 0x00, /* 0001101100 */ | ||
3769 | 0x1b, 0x00, /* 0001101100 */ | ||
3770 | 0x1b, 0x00, /* 0001101100 */ | ||
3771 | |||
3772 | /* 188 0xbc '.' */ | ||
3773 | 0x1b, 0x00, /* 0001101100 */ | ||
3774 | 0x1b, 0x00, /* 0001101100 */ | ||
3775 | 0x1b, 0x00, /* 0001101100 */ | ||
3776 | 0x1b, 0x00, /* 0001101100 */ | ||
3777 | 0x1b, 0x00, /* 0001101100 */ | ||
3778 | 0xfb, 0x00, /* 1111101100 */ | ||
3779 | 0xfb, 0x00, /* 1111101100 */ | ||
3780 | 0x03, 0x00, /* 0000001100 */ | ||
3781 | 0xff, 0x00, /* 1111111100 */ | ||
3782 | 0xff, 0x00, /* 1111111100 */ | ||
3783 | 0x00, 0x00, /* 0000000000 */ | ||
3784 | 0x00, 0x00, /* 0000000000 */ | ||
3785 | 0x00, 0x00, /* 0000000000 */ | ||
3786 | 0x00, 0x00, /* 0000000000 */ | ||
3787 | 0x00, 0x00, /* 0000000000 */ | ||
3788 | 0x00, 0x00, /* 0000000000 */ | ||
3789 | 0x00, 0x00, /* 0000000000 */ | ||
3790 | 0x00, 0x00, /* 0000000000 */ | ||
3791 | |||
3792 | /* 189 0xbd '.' */ | ||
3793 | 0x1b, 0x00, /* 0001101100 */ | ||
3794 | 0x1b, 0x00, /* 0001101100 */ | ||
3795 | 0x1b, 0x00, /* 0001101100 */ | ||
3796 | 0x1b, 0x00, /* 0001101100 */ | ||
3797 | 0x1b, 0x00, /* 0001101100 */ | ||
3798 | 0x1b, 0x00, /* 0001101100 */ | ||
3799 | 0x1b, 0x00, /* 0001101100 */ | ||
3800 | 0x1b, 0x00, /* 0001101100 */ | ||
3801 | 0xff, 0x00, /* 1111111100 */ | ||
3802 | 0xff, 0x00, /* 1111111100 */ | ||
3803 | 0x00, 0x00, /* 0000000000 */ | ||
3804 | 0x00, 0x00, /* 0000000000 */ | ||
3805 | 0x00, 0x00, /* 0000000000 */ | ||
3806 | 0x00, 0x00, /* 0000000000 */ | ||
3807 | 0x00, 0x00, /* 0000000000 */ | ||
3808 | 0x00, 0x00, /* 0000000000 */ | ||
3809 | 0x00, 0x00, /* 0000000000 */ | ||
3810 | 0x00, 0x00, /* 0000000000 */ | ||
3811 | |||
3812 | /* 190 0xbe '.' */ | ||
3813 | 0x0c, 0x00, /* 0000110000 */ | ||
3814 | 0x0c, 0x00, /* 0000110000 */ | ||
3815 | 0x0c, 0x00, /* 0000110000 */ | ||
3816 | 0x0c, 0x00, /* 0000110000 */ | ||
3817 | 0x0c, 0x00, /* 0000110000 */ | ||
3818 | 0xfc, 0x00, /* 1111110000 */ | ||
3819 | 0xfc, 0x00, /* 1111110000 */ | ||
3820 | 0x0c, 0x00, /* 0000110000 */ | ||
3821 | 0xfc, 0x00, /* 1111110000 */ | ||
3822 | 0xfc, 0x00, /* 1111110000 */ | ||
3823 | 0x00, 0x00, /* 0000000000 */ | ||
3824 | 0x00, 0x00, /* 0000000000 */ | ||
3825 | 0x00, 0x00, /* 0000000000 */ | ||
3826 | 0x00, 0x00, /* 0000000000 */ | ||
3827 | 0x00, 0x00, /* 0000000000 */ | ||
3828 | 0x00, 0x00, /* 0000000000 */ | ||
3829 | 0x00, 0x00, /* 0000000000 */ | ||
3830 | 0x00, 0x00, /* 0000000000 */ | ||
3831 | |||
3832 | /* 191 0xbf '.' */ | ||
3833 | 0x00, 0x00, /* 0000000000 */ | ||
3834 | 0x00, 0x00, /* 0000000000 */ | ||
3835 | 0x00, 0x00, /* 0000000000 */ | ||
3836 | 0x00, 0x00, /* 0000000000 */ | ||
3837 | 0x00, 0x00, /* 0000000000 */ | ||
3838 | 0x00, 0x00, /* 0000000000 */ | ||
3839 | 0x00, 0x00, /* 0000000000 */ | ||
3840 | 0x00, 0x00, /* 0000000000 */ | ||
3841 | 0xfc, 0x00, /* 1111110000 */ | ||
3842 | 0xfc, 0x00, /* 1111110000 */ | ||
3843 | 0x0c, 0x00, /* 0000110000 */ | ||
3844 | 0x0c, 0x00, /* 0000110000 */ | ||
3845 | 0x0c, 0x00, /* 0000110000 */ | ||
3846 | 0x0c, 0x00, /* 0000110000 */ | ||
3847 | 0x0c, 0x00, /* 0000110000 */ | ||
3848 | 0x0c, 0x00, /* 0000110000 */ | ||
3849 | 0x0c, 0x00, /* 0000110000 */ | ||
3850 | 0x0c, 0x00, /* 0000110000 */ | ||
3851 | |||
3852 | /* 192 0xc0 '.' */ | ||
3853 | 0x0c, 0x00, /* 0000110000 */ | ||
3854 | 0x0c, 0x00, /* 0000110000 */ | ||
3855 | 0x0c, 0x00, /* 0000110000 */ | ||
3856 | 0x0c, 0x00, /* 0000110000 */ | ||
3857 | 0x0c, 0x00, /* 0000110000 */ | ||
3858 | 0x0c, 0x00, /* 0000110000 */ | ||
3859 | 0x0c, 0x00, /* 0000110000 */ | ||
3860 | 0x0c, 0x00, /* 0000110000 */ | ||
3861 | 0x0f, 0xc0, /* 0000111111 */ | ||
3862 | 0x0f, 0xc0, /* 0000111111 */ | ||
3863 | 0x00, 0x00, /* 0000000000 */ | ||
3864 | 0x00, 0x00, /* 0000000000 */ | ||
3865 | 0x00, 0x00, /* 0000000000 */ | ||
3866 | 0x00, 0x00, /* 0000000000 */ | ||
3867 | 0x00, 0x00, /* 0000000000 */ | ||
3868 | 0x00, 0x00, /* 0000000000 */ | ||
3869 | 0x00, 0x00, /* 0000000000 */ | ||
3870 | 0x00, 0x00, /* 0000000000 */ | ||
3871 | |||
3872 | /* 193 0xc1 '.' */ | ||
3873 | 0x0c, 0x00, /* 0000110000 */ | ||
3874 | 0x0c, 0x00, /* 0000110000 */ | ||
3875 | 0x0c, 0x00, /* 0000110000 */ | ||
3876 | 0x0c, 0x00, /* 0000110000 */ | ||
3877 | 0x0c, 0x00, /* 0000110000 */ | ||
3878 | 0x0c, 0x00, /* 0000110000 */ | ||
3879 | 0x0c, 0x00, /* 0000110000 */ | ||
3880 | 0x0c, 0x00, /* 0000110000 */ | ||
3881 | 0xff, 0xc0, /* 1111111111 */ | ||
3882 | 0xff, 0xc0, /* 1111111111 */ | ||
3883 | 0x00, 0x00, /* 0000000000 */ | ||
3884 | 0x00, 0x00, /* 0000000000 */ | ||
3885 | 0x00, 0x00, /* 0000000000 */ | ||
3886 | 0x00, 0x00, /* 0000000000 */ | ||
3887 | 0x00, 0x00, /* 0000000000 */ | ||
3888 | 0x00, 0x00, /* 0000000000 */ | ||
3889 | 0x00, 0x00, /* 0000000000 */ | ||
3890 | 0x00, 0x00, /* 0000000000 */ | ||
3891 | |||
3892 | /* 194 0xc2 '.' */ | ||
3893 | 0x00, 0x00, /* 0000000000 */ | ||
3894 | 0x00, 0x00, /* 0000000000 */ | ||
3895 | 0x00, 0x00, /* 0000000000 */ | ||
3896 | 0x00, 0x00, /* 0000000000 */ | ||
3897 | 0x00, 0x00, /* 0000000000 */ | ||
3898 | 0x00, 0x00, /* 0000000000 */ | ||
3899 | 0x00, 0x00, /* 0000000000 */ | ||
3900 | 0x00, 0x00, /* 0000000000 */ | ||
3901 | 0xff, 0xc0, /* 1111111111 */ | ||
3902 | 0xff, 0xc0, /* 1111111111 */ | ||
3903 | 0x0c, 0x00, /* 0000110000 */ | ||
3904 | 0x0c, 0x00, /* 0000110000 */ | ||
3905 | 0x0c, 0x00, /* 0000110000 */ | ||
3906 | 0x0c, 0x00, /* 0000110000 */ | ||
3907 | 0x0c, 0x00, /* 0000110000 */ | ||
3908 | 0x0c, 0x00, /* 0000110000 */ | ||
3909 | 0x0c, 0x00, /* 0000110000 */ | ||
3910 | 0x0c, 0x00, /* 0000110000 */ | ||
3911 | |||
3912 | /* 195 0xc3 '.' */ | ||
3913 | 0x0c, 0x00, /* 0000110000 */ | ||
3914 | 0x0c, 0x00, /* 0000110000 */ | ||
3915 | 0x0c, 0x00, /* 0000110000 */ | ||
3916 | 0x0c, 0x00, /* 0000110000 */ | ||
3917 | 0x0c, 0x00, /* 0000110000 */ | ||
3918 | 0x0c, 0x00, /* 0000110000 */ | ||
3919 | 0x0c, 0x00, /* 0000110000 */ | ||
3920 | 0x0c, 0x00, /* 0000110000 */ | ||
3921 | 0x0f, 0xc0, /* 0000111111 */ | ||
3922 | 0x0f, 0xc0, /* 0000111111 */ | ||
3923 | 0x0c, 0x00, /* 0000110000 */ | ||
3924 | 0x0c, 0x00, /* 0000110000 */ | ||
3925 | 0x0c, 0x00, /* 0000110000 */ | ||
3926 | 0x0c, 0x00, /* 0000110000 */ | ||
3927 | 0x0c, 0x00, /* 0000110000 */ | ||
3928 | 0x0c, 0x00, /* 0000110000 */ | ||
3929 | 0x0c, 0x00, /* 0000110000 */ | ||
3930 | 0x0c, 0x00, /* 0000110000 */ | ||
3931 | |||
3932 | /* 196 0xc4 '.' */ | ||
3933 | 0x00, 0x00, /* 0000000000 */ | ||
3934 | 0x00, 0x00, /* 0000000000 */ | ||
3935 | 0x00, 0x00, /* 0000000000 */ | ||
3936 | 0x00, 0x00, /* 0000000000 */ | ||
3937 | 0x00, 0x00, /* 0000000000 */ | ||
3938 | 0x00, 0x00, /* 0000000000 */ | ||
3939 | 0x00, 0x00, /* 0000000000 */ | ||
3940 | 0x00, 0x00, /* 0000000000 */ | ||
3941 | 0xff, 0xc0, /* 1111111111 */ | ||
3942 | 0xff, 0xc0, /* 1111111111 */ | ||
3943 | 0x00, 0x00, /* 0000000000 */ | ||
3944 | 0x00, 0x00, /* 0000000000 */ | ||
3945 | 0x00, 0x00, /* 0000000000 */ | ||
3946 | 0x00, 0x00, /* 0000000000 */ | ||
3947 | 0x00, 0x00, /* 0000000000 */ | ||
3948 | 0x00, 0x00, /* 0000000000 */ | ||
3949 | 0x00, 0x00, /* 0000000000 */ | ||
3950 | 0x00, 0x00, /* 0000000000 */ | ||
3951 | |||
3952 | /* 197 0xc5 '.' */ | ||
3953 | 0x0c, 0x00, /* 0000110000 */ | ||
3954 | 0x0c, 0x00, /* 0000110000 */ | ||
3955 | 0x0c, 0x00, /* 0000110000 */ | ||
3956 | 0x0c, 0x00, /* 0000110000 */ | ||
3957 | 0x0c, 0x00, /* 0000110000 */ | ||
3958 | 0x0c, 0x00, /* 0000110000 */ | ||
3959 | 0x0c, 0x00, /* 0000110000 */ | ||
3960 | 0x0c, 0x00, /* 0000110000 */ | ||
3961 | 0xff, 0xc0, /* 1111111111 */ | ||
3962 | 0xff, 0xc0, /* 1111111111 */ | ||
3963 | 0x0c, 0x00, /* 0000110000 */ | ||
3964 | 0x0c, 0x00, /* 0000110000 */ | ||
3965 | 0x0c, 0x00, /* 0000110000 */ | ||
3966 | 0x0c, 0x00, /* 0000110000 */ | ||
3967 | 0x0c, 0x00, /* 0000110000 */ | ||
3968 | 0x0c, 0x00, /* 0000110000 */ | ||
3969 | 0x0c, 0x00, /* 0000110000 */ | ||
3970 | 0x0c, 0x00, /* 0000110000 */ | ||
3971 | |||
3972 | /* 198 0xc6 '.' */ | ||
3973 | 0x0c, 0x00, /* 0000110000 */ | ||
3974 | 0x0c, 0x00, /* 0000110000 */ | ||
3975 | 0x0c, 0x00, /* 0000110000 */ | ||
3976 | 0x0c, 0x00, /* 0000110000 */ | ||
3977 | 0x0c, 0x00, /* 0000110000 */ | ||
3978 | 0x0f, 0xc0, /* 0000111111 */ | ||
3979 | 0x0f, 0xc0, /* 0000111111 */ | ||
3980 | 0x0c, 0x00, /* 0000110000 */ | ||
3981 | 0x0f, 0xc0, /* 0000111111 */ | ||
3982 | 0x0f, 0xc0, /* 0000111111 */ | ||
3983 | 0x0c, 0x00, /* 0000110000 */ | ||
3984 | 0x0c, 0x00, /* 0000110000 */ | ||
3985 | 0x0c, 0x00, /* 0000110000 */ | ||
3986 | 0x0c, 0x00, /* 0000110000 */ | ||
3987 | 0x0c, 0x00, /* 0000110000 */ | ||
3988 | 0x0c, 0x00, /* 0000110000 */ | ||
3989 | 0x0c, 0x00, /* 0000110000 */ | ||
3990 | 0x0c, 0x00, /* 0000110000 */ | ||
3991 | |||
3992 | /* 199 0xc7 '.' */ | ||
3993 | 0x1b, 0x00, /* 0001101100 */ | ||
3994 | 0x1b, 0x00, /* 0001101100 */ | ||
3995 | 0x1b, 0x00, /* 0001101100 */ | ||
3996 | 0x1b, 0x00, /* 0001101100 */ | ||
3997 | 0x1b, 0x00, /* 0001101100 */ | ||
3998 | 0x1b, 0x00, /* 0001101100 */ | ||
3999 | 0x1b, 0x00, /* 0001101100 */ | ||
4000 | 0x1b, 0x00, /* 0001101100 */ | ||
4001 | 0x1b, 0xc0, /* 0001101111 */ | ||
4002 | 0x1b, 0xc0, /* 0001101111 */ | ||
4003 | 0x1b, 0x00, /* 0001101100 */ | ||
4004 | 0x1b, 0x00, /* 0001101100 */ | ||
4005 | 0x1b, 0x00, /* 0001101100 */ | ||
4006 | 0x1b, 0x00, /* 0001101100 */ | ||
4007 | 0x1b, 0x00, /* 0001101100 */ | ||
4008 | 0x1b, 0x00, /* 0001101100 */ | ||
4009 | 0x1b, 0x00, /* 0001101100 */ | ||
4010 | 0x1b, 0x00, /* 0001101100 */ | ||
4011 | |||
4012 | /* 200 0xc8 '.' */ | ||
4013 | 0x1b, 0x00, /* 0001101100 */ | ||
4014 | 0x1b, 0x00, /* 0001101100 */ | ||
4015 | 0x1b, 0x00, /* 0001101100 */ | ||
4016 | 0x1b, 0x00, /* 0001101100 */ | ||
4017 | 0x1b, 0x00, /* 0001101100 */ | ||
4018 | 0x1b, 0xc0, /* 0001101111 */ | ||
4019 | 0x1b, 0xc0, /* 0001101111 */ | ||
4020 | 0x18, 0x00, /* 0001100000 */ | ||
4021 | 0x1f, 0xc0, /* 0001111111 */ | ||
4022 | 0x1f, 0xc0, /* 0001111111 */ | ||
4023 | 0x00, 0x00, /* 0000000000 */ | ||
4024 | 0x00, 0x00, /* 0000000000 */ | ||
4025 | 0x00, 0x00, /* 0000000000 */ | ||
4026 | 0x00, 0x00, /* 0000000000 */ | ||
4027 | 0x00, 0x00, /* 0000000000 */ | ||
4028 | 0x00, 0x00, /* 0000000000 */ | ||
4029 | 0x00, 0x00, /* 0000000000 */ | ||
4030 | 0x00, 0x00, /* 0000000000 */ | ||
4031 | |||
4032 | /* 201 0xc9 '.' */ | ||
4033 | 0x00, 0x00, /* 0000000000 */ | ||
4034 | 0x00, 0x00, /* 0000000000 */ | ||
4035 | 0x00, 0x00, /* 0000000000 */ | ||
4036 | 0x00, 0x00, /* 0000000000 */ | ||
4037 | 0x00, 0x00, /* 0000000000 */ | ||
4038 | 0x1f, 0xc0, /* 0001111111 */ | ||
4039 | 0x1f, 0xc0, /* 0001111111 */ | ||
4040 | 0x18, 0x00, /* 0001100000 */ | ||
4041 | 0x1b, 0xc0, /* 0001101111 */ | ||
4042 | 0x1b, 0xc0, /* 0001101111 */ | ||
4043 | 0x1b, 0x00, /* 0001101100 */ | ||
4044 | 0x1b, 0x00, /* 0001101100 */ | ||
4045 | 0x1b, 0x00, /* 0001101100 */ | ||
4046 | 0x1b, 0x00, /* 0001101100 */ | ||
4047 | 0x1b, 0x00, /* 0001101100 */ | ||
4048 | 0x1b, 0x00, /* 0001101100 */ | ||
4049 | 0x1b, 0x00, /* 0001101100 */ | ||
4050 | 0x1b, 0x00, /* 0001101100 */ | ||
4051 | |||
4052 | /* 202 0xca '.' */ | ||
4053 | 0x1b, 0x00, /* 0001101100 */ | ||
4054 | 0x1b, 0x00, /* 0001101100 */ | ||
4055 | 0x1b, 0x00, /* 0001101100 */ | ||
4056 | 0x1b, 0x00, /* 0001101100 */ | ||
4057 | 0x1b, 0x00, /* 0001101100 */ | ||
4058 | 0xfb, 0xc0, /* 1111101111 */ | ||
4059 | 0xfb, 0xc0, /* 1111101111 */ | ||
4060 | 0x00, 0x00, /* 0000000000 */ | ||
4061 | 0xff, 0xc0, /* 1111111111 */ | ||
4062 | 0xff, 0xc0, /* 1111111111 */ | ||
4063 | 0x00, 0x00, /* 0000000000 */ | ||
4064 | 0x00, 0x00, /* 0000000000 */ | ||
4065 | 0x00, 0x00, /* 0000000000 */ | ||
4066 | 0x00, 0x00, /* 0000000000 */ | ||
4067 | 0x00, 0x00, /* 0000000000 */ | ||
4068 | 0x00, 0x00, /* 0000000000 */ | ||
4069 | 0x00, 0x00, /* 0000000000 */ | ||
4070 | 0x00, 0x00, /* 0000000000 */ | ||
4071 | |||
4072 | /* 203 0xcb '.' */ | ||
4073 | 0x00, 0x00, /* 0000000000 */ | ||
4074 | 0x00, 0x00, /* 0000000000 */ | ||
4075 | 0x00, 0x00, /* 0000000000 */ | ||
4076 | 0x00, 0x00, /* 0000000000 */ | ||
4077 | 0x00, 0x00, /* 0000000000 */ | ||
4078 | 0xff, 0xc0, /* 1111111111 */ | ||
4079 | 0xff, 0xc0, /* 1111111111 */ | ||
4080 | 0x00, 0x00, /* 0000000000 */ | ||
4081 | 0xfb, 0xc0, /* 1111101111 */ | ||
4082 | 0xfb, 0xc0, /* 1111101111 */ | ||
4083 | 0x1b, 0x00, /* 0001101100 */ | ||
4084 | 0x1b, 0x00, /* 0001101100 */ | ||
4085 | 0x1b, 0x00, /* 0001101100 */ | ||
4086 | 0x1b, 0x00, /* 0001101100 */ | ||
4087 | 0x1b, 0x00, /* 0001101100 */ | ||
4088 | 0x1b, 0x00, /* 0001101100 */ | ||
4089 | 0x1b, 0x00, /* 0001101100 */ | ||
4090 | 0x1b, 0x00, /* 0001101100 */ | ||
4091 | |||
4092 | /* 204 0xcc '.' */ | ||
4093 | 0x1b, 0x00, /* 0001101100 */ | ||
4094 | 0x1b, 0x00, /* 0001101100 */ | ||
4095 | 0x1b, 0x00, /* 0001101100 */ | ||
4096 | 0x1b, 0x00, /* 0001101100 */ | ||
4097 | 0x1b, 0x00, /* 0001101100 */ | ||
4098 | 0x1b, 0xc0, /* 0001101111 */ | ||
4099 | 0x1b, 0xc0, /* 0001101111 */ | ||
4100 | 0x18, 0x00, /* 0001100000 */ | ||
4101 | 0x1b, 0xc0, /* 0001101111 */ | ||
4102 | 0x1b, 0xc0, /* 0001101111 */ | ||
4103 | 0x1b, 0x00, /* 0001101100 */ | ||
4104 | 0x1b, 0x00, /* 0001101100 */ | ||
4105 | 0x1b, 0x00, /* 0001101100 */ | ||
4106 | 0x1b, 0x00, /* 0001101100 */ | ||
4107 | 0x1b, 0x00, /* 0001101100 */ | ||
4108 | 0x1b, 0x00, /* 0001101100 */ | ||
4109 | 0x1b, 0x00, /* 0001101100 */ | ||
4110 | 0x1b, 0x00, /* 0001101100 */ | ||
4111 | |||
4112 | /* 205 0xcd '.' */ | ||
4113 | 0x00, 0x00, /* 0000000000 */ | ||
4114 | 0x00, 0x00, /* 0000000000 */ | ||
4115 | 0x00, 0x00, /* 0000000000 */ | ||
4116 | 0x00, 0x00, /* 0000000000 */ | ||
4117 | 0x00, 0x00, /* 0000000000 */ | ||
4118 | 0xff, 0xc0, /* 1111111111 */ | ||
4119 | 0xff, 0xc0, /* 1111111111 */ | ||
4120 | 0x00, 0x00, /* 0000000000 */ | ||
4121 | 0xff, 0xc0, /* 1111111111 */ | ||
4122 | 0xff, 0xc0, /* 1111111111 */ | ||
4123 | 0x00, 0x00, /* 0000000000 */ | ||
4124 | 0x00, 0x00, /* 0000000000 */ | ||
4125 | 0x00, 0x00, /* 0000000000 */ | ||
4126 | 0x00, 0x00, /* 0000000000 */ | ||
4127 | 0x00, 0x00, /* 0000000000 */ | ||
4128 | 0x00, 0x00, /* 0000000000 */ | ||
4129 | 0x00, 0x00, /* 0000000000 */ | ||
4130 | 0x00, 0x00, /* 0000000000 */ | ||
4131 | |||
4132 | /* 206 0xce '.' */ | ||
4133 | 0x1b, 0x00, /* 0001101100 */ | ||
4134 | 0x1b, 0x00, /* 0001101100 */ | ||
4135 | 0x1b, 0x00, /* 0001101100 */ | ||
4136 | 0x1b, 0x00, /* 0001101100 */ | ||
4137 | 0x1b, 0x00, /* 0001101100 */ | ||
4138 | 0xfb, 0xc0, /* 1111101111 */ | ||
4139 | 0xfb, 0xc0, /* 1111101111 */ | ||
4140 | 0x00, 0x00, /* 0000000000 */ | ||
4141 | 0xfb, 0xc0, /* 1111101111 */ | ||
4142 | 0xfb, 0xc0, /* 1111101111 */ | ||
4143 | 0x1b, 0x00, /* 0001101100 */ | ||
4144 | 0x1b, 0x00, /* 0001101100 */ | ||
4145 | 0x1b, 0x00, /* 0001101100 */ | ||
4146 | 0x1b, 0x00, /* 0001101100 */ | ||
4147 | 0x1b, 0x00, /* 0001101100 */ | ||
4148 | 0x1b, 0x00, /* 0001101100 */ | ||
4149 | 0x1b, 0x00, /* 0001101100 */ | ||
4150 | 0x1b, 0x00, /* 0001101100 */ | ||
4151 | |||
4152 | /* 207 0xcf '.' */ | ||
4153 | 0x0c, 0x00, /* 0000110000 */ | ||
4154 | 0x0c, 0x00, /* 0000110000 */ | ||
4155 | 0x0c, 0x00, /* 0000110000 */ | ||
4156 | 0x0c, 0x00, /* 0000110000 */ | ||
4157 | 0x0c, 0x00, /* 0000110000 */ | ||
4158 | 0xff, 0xc0, /* 1111111111 */ | ||
4159 | 0xff, 0xc0, /* 1111111111 */ | ||
4160 | 0x00, 0x00, /* 0000000000 */ | ||
4161 | 0xff, 0xc0, /* 1111111111 */ | ||
4162 | 0xff, 0xc0, /* 1111111111 */ | ||
4163 | 0x00, 0x00, /* 0000000000 */ | ||
4164 | 0x00, 0x00, /* 0000000000 */ | ||
4165 | 0x00, 0x00, /* 0000000000 */ | ||
4166 | 0x00, 0x00, /* 0000000000 */ | ||
4167 | 0x00, 0x00, /* 0000000000 */ | ||
4168 | 0x00, 0x00, /* 0000000000 */ | ||
4169 | 0x00, 0x00, /* 0000000000 */ | ||
4170 | 0x00, 0x00, /* 0000000000 */ | ||
4171 | |||
4172 | /* 208 0xd0 '.' */ | ||
4173 | 0x1b, 0x00, /* 0001101100 */ | ||
4174 | 0x1b, 0x00, /* 0001101100 */ | ||
4175 | 0x1b, 0x00, /* 0001101100 */ | ||
4176 | 0x1b, 0x00, /* 0001101100 */ | ||
4177 | 0x1b, 0x00, /* 0001101100 */ | ||
4178 | 0x1b, 0x00, /* 0001101100 */ | ||
4179 | 0x1b, 0x00, /* 0001101100 */ | ||
4180 | 0x1b, 0x00, /* 0001101100 */ | ||
4181 | 0xff, 0xc0, /* 1111111111 */ | ||
4182 | 0xff, 0xc0, /* 1111111111 */ | ||
4183 | 0x00, 0x00, /* 0000000000 */ | ||
4184 | 0x00, 0x00, /* 0000000000 */ | ||
4185 | 0x00, 0x00, /* 0000000000 */ | ||
4186 | 0x00, 0x00, /* 0000000000 */ | ||
4187 | 0x00, 0x00, /* 0000000000 */ | ||
4188 | 0x00, 0x00, /* 0000000000 */ | ||
4189 | 0x00, 0x00, /* 0000000000 */ | ||
4190 | 0x00, 0x00, /* 0000000000 */ | ||
4191 | |||
4192 | /* 209 0xd1 '.' */ | ||
4193 | 0x00, 0x00, /* 0000000000 */ | ||
4194 | 0x00, 0x00, /* 0000000000 */ | ||
4195 | 0x00, 0x00, /* 0000000000 */ | ||
4196 | 0x00, 0x00, /* 0000000000 */ | ||
4197 | 0x00, 0x00, /* 0000000000 */ | ||
4198 | 0xff, 0xc0, /* 1111111111 */ | ||
4199 | 0xff, 0xc0, /* 1111111111 */ | ||
4200 | 0x00, 0x00, /* 0000000000 */ | ||
4201 | 0xff, 0xc0, /* 1111111111 */ | ||
4202 | 0xff, 0xc0, /* 1111111111 */ | ||
4203 | 0x0c, 0x00, /* 0000110000 */ | ||
4204 | 0x0c, 0x00, /* 0000110000 */ | ||
4205 | 0x0c, 0x00, /* 0000110000 */ | ||
4206 | 0x0c, 0x00, /* 0000110000 */ | ||
4207 | 0x0c, 0x00, /* 0000110000 */ | ||
4208 | 0x0c, 0x00, /* 0000110000 */ | ||
4209 | 0x0c, 0x00, /* 0000110000 */ | ||
4210 | 0x0c, 0x00, /* 0000110000 */ | ||
4211 | |||
4212 | /* 210 0xd2 '.' */ | ||
4213 | 0x00, 0x00, /* 0000000000 */ | ||
4214 | 0x00, 0x00, /* 0000000000 */ | ||
4215 | 0x00, 0x00, /* 0000000000 */ | ||
4216 | 0x00, 0x00, /* 0000000000 */ | ||
4217 | 0x00, 0x00, /* 0000000000 */ | ||
4218 | 0x00, 0x00, /* 0000000000 */ | ||
4219 | 0x00, 0x00, /* 0000000000 */ | ||
4220 | 0x00, 0x00, /* 0000000000 */ | ||
4221 | 0xff, 0xc0, /* 1111111111 */ | ||
4222 | 0xff, 0xc0, /* 1111111111 */ | ||
4223 | 0x1b, 0x00, /* 0001101100 */ | ||
4224 | 0x1b, 0x00, /* 0001101100 */ | ||
4225 | 0x1b, 0x00, /* 0001101100 */ | ||
4226 | 0x1b, 0x00, /* 0001101100 */ | ||
4227 | 0x1b, 0x00, /* 0001101100 */ | ||
4228 | 0x1b, 0x00, /* 0001101100 */ | ||
4229 | 0x1b, 0x00, /* 0001101100 */ | ||
4230 | 0x1b, 0x00, /* 0001101100 */ | ||
4231 | |||
4232 | /* 211 0xd3 '.' */ | ||
4233 | 0x1b, 0x00, /* 0001101100 */ | ||
4234 | 0x1b, 0x00, /* 0001101100 */ | ||
4235 | 0x1b, 0x00, /* 0001101100 */ | ||
4236 | 0x1b, 0x00, /* 0001101100 */ | ||
4237 | 0x1b, 0x00, /* 0001101100 */ | ||
4238 | 0x1b, 0x00, /* 0001101100 */ | ||
4239 | 0x1b, 0x00, /* 0001101100 */ | ||
4240 | 0x1b, 0x00, /* 0001101100 */ | ||
4241 | 0x1f, 0xc0, /* 0001111111 */ | ||
4242 | 0x1f, 0xc0, /* 0001111111 */ | ||
4243 | 0x00, 0x00, /* 0000000000 */ | ||
4244 | 0x00, 0x00, /* 0000000000 */ | ||
4245 | 0x00, 0x00, /* 0000000000 */ | ||
4246 | 0x00, 0x00, /* 0000000000 */ | ||
4247 | 0x00, 0x00, /* 0000000000 */ | ||
4248 | 0x00, 0x00, /* 0000000000 */ | ||
4249 | 0x00, 0x00, /* 0000000000 */ | ||
4250 | 0x00, 0x00, /* 0000000000 */ | ||
4251 | |||
4252 | /* 212 0xd4 '.' */ | ||
4253 | 0x0c, 0x00, /* 0000110000 */ | ||
4254 | 0x0c, 0x00, /* 0000110000 */ | ||
4255 | 0x0c, 0x00, /* 0000110000 */ | ||
4256 | 0x0c, 0x00, /* 0000110000 */ | ||
4257 | 0x0c, 0x00, /* 0000110000 */ | ||
4258 | 0x0f, 0xc0, /* 0000111111 */ | ||
4259 | 0x0f, 0xc0, /* 0000111111 */ | ||
4260 | 0x0c, 0x00, /* 0000110000 */ | ||
4261 | 0x0f, 0xc0, /* 0000111111 */ | ||
4262 | 0x0f, 0xc0, /* 0000111111 */ | ||
4263 | 0x00, 0x00, /* 0000000000 */ | ||
4264 | 0x00, 0x00, /* 0000000000 */ | ||
4265 | 0x00, 0x00, /* 0000000000 */ | ||
4266 | 0x00, 0x00, /* 0000000000 */ | ||
4267 | 0x00, 0x00, /* 0000000000 */ | ||
4268 | 0x00, 0x00, /* 0000000000 */ | ||
4269 | 0x00, 0x00, /* 0000000000 */ | ||
4270 | 0x00, 0x00, /* 0000000000 */ | ||
4271 | |||
4272 | /* 213 0xd5 '.' */ | ||
4273 | 0x00, 0x00, /* 0000000000 */ | ||
4274 | 0x00, 0x00, /* 0000000000 */ | ||
4275 | 0x00, 0x00, /* 0000000000 */ | ||
4276 | 0x00, 0x00, /* 0000000000 */ | ||
4277 | 0x00, 0x00, /* 0000000000 */ | ||
4278 | 0x0f, 0xc0, /* 0000111111 */ | ||
4279 | 0x0f, 0xc0, /* 0000111111 */ | ||
4280 | 0x0c, 0x00, /* 0000110000 */ | ||
4281 | 0x0f, 0xc0, /* 0000111111 */ | ||
4282 | 0x0f, 0xc0, /* 0000111111 */ | ||
4283 | 0x0c, 0x00, /* 0000110000 */ | ||
4284 | 0x0c, 0x00, /* 0000110000 */ | ||
4285 | 0x0c, 0x00, /* 0000110000 */ | ||
4286 | 0x0c, 0x00, /* 0000110000 */ | ||
4287 | 0x0c, 0x00, /* 0000110000 */ | ||
4288 | 0x0c, 0x00, /* 0000110000 */ | ||
4289 | 0x0c, 0x00, /* 0000110000 */ | ||
4290 | 0x0c, 0x00, /* 0000110000 */ | ||
4291 | |||
4292 | /* 214 0xd6 '.' */ | ||
4293 | 0x00, 0x00, /* 0000000000 */ | ||
4294 | 0x00, 0x00, /* 0000000000 */ | ||
4295 | 0x00, 0x00, /* 0000000000 */ | ||
4296 | 0x00, 0x00, /* 0000000000 */ | ||
4297 | 0x00, 0x00, /* 0000000000 */ | ||
4298 | 0x00, 0x00, /* 0000000000 */ | ||
4299 | 0x00, 0x00, /* 0000000000 */ | ||
4300 | 0x00, 0x00, /* 0000000000 */ | ||
4301 | 0x1f, 0xc0, /* 0001111111 */ | ||
4302 | 0x1f, 0xc0, /* 0001111111 */ | ||
4303 | 0x1b, 0x00, /* 0001101100 */ | ||
4304 | 0x1b, 0x00, /* 0001101100 */ | ||
4305 | 0x1b, 0x00, /* 0001101100 */ | ||
4306 | 0x1b, 0x00, /* 0001101100 */ | ||
4307 | 0x1b, 0x00, /* 0001101100 */ | ||
4308 | 0x1b, 0x00, /* 0001101100 */ | ||
4309 | 0x1b, 0x00, /* 0001101100 */ | ||
4310 | 0x1b, 0x00, /* 0001101100 */ | ||
4311 | |||
4312 | /* 215 0xd7 '.' */ | ||
4313 | 0x1b, 0x00, /* 0001101100 */ | ||
4314 | 0x1b, 0x00, /* 0001101100 */ | ||
4315 | 0x1b, 0x00, /* 0001101100 */ | ||
4316 | 0x1b, 0x00, /* 0001101100 */ | ||
4317 | 0x1b, 0x00, /* 0001101100 */ | ||
4318 | 0x1b, 0x00, /* 0001101100 */ | ||
4319 | 0x1b, 0x00, /* 0001101100 */ | ||
4320 | 0x1b, 0x00, /* 0001101100 */ | ||
4321 | 0xff, 0xc0, /* 1111111111 */ | ||
4322 | 0xff, 0xc0, /* 1111111111 */ | ||
4323 | 0x1b, 0x00, /* 0001101100 */ | ||
4324 | 0x1b, 0x00, /* 0001101100 */ | ||
4325 | 0x1b, 0x00, /* 0001101100 */ | ||
4326 | 0x1b, 0x00, /* 0001101100 */ | ||
4327 | 0x1b, 0x00, /* 0001101100 */ | ||
4328 | 0x1b, 0x00, /* 0001101100 */ | ||
4329 | 0x1b, 0x00, /* 0001101100 */ | ||
4330 | 0x1b, 0x00, /* 0001101100 */ | ||
4331 | |||
4332 | /* 216 0xd8 '.' */ | ||
4333 | 0x0c, 0x00, /* 0000110000 */ | ||
4334 | 0x0c, 0x00, /* 0000110000 */ | ||
4335 | 0x0c, 0x00, /* 0000110000 */ | ||
4336 | 0x0c, 0x00, /* 0000110000 */ | ||
4337 | 0x0c, 0x00, /* 0000110000 */ | ||
4338 | 0xff, 0xc0, /* 1111111111 */ | ||
4339 | 0xff, 0xc0, /* 1111111111 */ | ||
4340 | 0x0c, 0x00, /* 0000110000 */ | ||
4341 | 0xff, 0xc0, /* 1111111111 */ | ||
4342 | 0xff, 0xc0, /* 1111111111 */ | ||
4343 | 0x0c, 0x00, /* 0000110000 */ | ||
4344 | 0x0c, 0x00, /* 0000110000 */ | ||
4345 | 0x0c, 0x00, /* 0000110000 */ | ||
4346 | 0x0c, 0x00, /* 0000110000 */ | ||
4347 | 0x0c, 0x00, /* 0000110000 */ | ||
4348 | 0x0c, 0x00, /* 0000110000 */ | ||
4349 | 0x0c, 0x00, /* 0000110000 */ | ||
4350 | 0x0c, 0x00, /* 0000110000 */ | ||
4351 | |||
4352 | /* 217 0xd9 '.' */ | ||
4353 | 0x0c, 0x00, /* 0000110000 */ | ||
4354 | 0x0c, 0x00, /* 0000110000 */ | ||
4355 | 0x0c, 0x00, /* 0000110000 */ | ||
4356 | 0x0c, 0x00, /* 0000110000 */ | ||
4357 | 0x0c, 0x00, /* 0000110000 */ | ||
4358 | 0x0c, 0x00, /* 0000110000 */ | ||
4359 | 0x0c, 0x00, /* 0000110000 */ | ||
4360 | 0x0c, 0x00, /* 0000110000 */ | ||
4361 | 0xfc, 0x00, /* 1111110000 */ | ||
4362 | 0xfc, 0x00, /* 1111110000 */ | ||
4363 | 0x00, 0x00, /* 0000000000 */ | ||
4364 | 0x00, 0x00, /* 0000000000 */ | ||
4365 | 0x00, 0x00, /* 0000000000 */ | ||
4366 | 0x00, 0x00, /* 0000000000 */ | ||
4367 | 0x00, 0x00, /* 0000000000 */ | ||
4368 | 0x00, 0x00, /* 0000000000 */ | ||
4369 | 0x00, 0x00, /* 0000000000 */ | ||
4370 | 0x00, 0x00, /* 0000000000 */ | ||
4371 | |||
4372 | /* 218 0xda '.' */ | ||
4373 | 0x00, 0x00, /* 0000000000 */ | ||
4374 | 0x00, 0x00, /* 0000000000 */ | ||
4375 | 0x00, 0x00, /* 0000000000 */ | ||
4376 | 0x00, 0x00, /* 0000000000 */ | ||
4377 | 0x00, 0x00, /* 0000000000 */ | ||
4378 | 0x00, 0x00, /* 0000000000 */ | ||
4379 | 0x00, 0x00, /* 0000000000 */ | ||
4380 | 0x00, 0x00, /* 0000000000 */ | ||
4381 | 0x0f, 0xc0, /* 0000111111 */ | ||
4382 | 0x0f, 0xc0, /* 0000111111 */ | ||
4383 | 0x0c, 0x00, /* 0000110000 */ | ||
4384 | 0x0c, 0x00, /* 0000110000 */ | ||
4385 | 0x0c, 0x00, /* 0000110000 */ | ||
4386 | 0x0c, 0x00, /* 0000110000 */ | ||
4387 | 0x0c, 0x00, /* 0000110000 */ | ||
4388 | 0x0c, 0x00, /* 0000110000 */ | ||
4389 | 0x0c, 0x00, /* 0000110000 */ | ||
4390 | 0x0c, 0x00, /* 0000110000 */ | ||
4391 | |||
4392 | /* 219 0xdb '.' */ | ||
4393 | 0xff, 0xc0, /* 1111111111 */ | ||
4394 | 0xff, 0xc0, /* 1111111111 */ | ||
4395 | 0xff, 0xc0, /* 1111111111 */ | ||
4396 | 0xff, 0xc0, /* 1111111111 */ | ||
4397 | 0xff, 0xc0, /* 1111111111 */ | ||
4398 | 0xff, 0xc0, /* 1111111111 */ | ||
4399 | 0xff, 0xc0, /* 1111111111 */ | ||
4400 | 0xff, 0xc0, /* 1111111111 */ | ||
4401 | 0xff, 0xc0, /* 1111111111 */ | ||
4402 | 0xff, 0xc0, /* 1111111111 */ | ||
4403 | 0xff, 0xc0, /* 1111111111 */ | ||
4404 | 0xff, 0xc0, /* 1111111111 */ | ||
4405 | 0xff, 0xc0, /* 1111111111 */ | ||
4406 | 0xff, 0xc0, /* 1111111111 */ | ||
4407 | 0xff, 0xc0, /* 1111111111 */ | ||
4408 | 0xff, 0xc0, /* 1111111111 */ | ||
4409 | 0xff, 0xc0, /* 1111111111 */ | ||
4410 | 0xff, 0xc0, /* 1111111111 */ | ||
4411 | |||
4412 | /* 220 0xdc '.' */ | ||
4413 | 0x00, 0x00, /* 0000000000 */ | ||
4414 | 0x00, 0x00, /* 0000000000 */ | ||
4415 | 0x00, 0x00, /* 0000000000 */ | ||
4416 | 0x00, 0x00, /* 0000000000 */ | ||
4417 | 0x00, 0x00, /* 0000000000 */ | ||
4418 | 0x00, 0x00, /* 0000000000 */ | ||
4419 | 0x00, 0x00, /* 0000000000 */ | ||
4420 | 0x00, 0x00, /* 0000000000 */ | ||
4421 | 0xff, 0xc0, /* 1111111111 */ | ||
4422 | 0xff, 0xc0, /* 1111111111 */ | ||
4423 | 0xff, 0xc0, /* 1111111111 */ | ||
4424 | 0xff, 0xc0, /* 1111111111 */ | ||
4425 | 0xff, 0xc0, /* 1111111111 */ | ||
4426 | 0xff, 0xc0, /* 1111111111 */ | ||
4427 | 0xff, 0xc0, /* 1111111111 */ | ||
4428 | 0xff, 0xc0, /* 1111111111 */ | ||
4429 | 0xff, 0xc0, /* 1111111111 */ | ||
4430 | 0xff, 0xc0, /* 1111111111 */ | ||
4431 | |||
4432 | /* 221 0xdd '.' */ | ||
4433 | 0xf8, 0x00, /* 1111100000 */ | ||
4434 | 0xf8, 0x00, /* 1111100000 */ | ||
4435 | 0xf8, 0x00, /* 1111100000 */ | ||
4436 | 0xf8, 0x00, /* 1111100000 */ | ||
4437 | 0xf8, 0x00, /* 1111100000 */ | ||
4438 | 0xf8, 0x00, /* 1111100000 */ | ||
4439 | 0xf8, 0x00, /* 1111100000 */ | ||
4440 | 0xf8, 0x00, /* 1111100000 */ | ||
4441 | 0xf8, 0x00, /* 1111100000 */ | ||
4442 | 0xf8, 0x00, /* 1111100000 */ | ||
4443 | 0xf8, 0x00, /* 1111100000 */ | ||
4444 | 0xf8, 0x00, /* 1111100000 */ | ||
4445 | 0xf8, 0x00, /* 1111100000 */ | ||
4446 | 0xf8, 0x00, /* 1111100000 */ | ||
4447 | 0xf8, 0x00, /* 1111100000 */ | ||
4448 | 0xf8, 0x00, /* 1111100000 */ | ||
4449 | 0xf8, 0x00, /* 1111100000 */ | ||
4450 | 0xf8, 0x00, /* 1111100000 */ | ||
4451 | |||
4452 | /* 222 0xde '.' */ | ||
4453 | 0x07, 0xc0, /* 0000011111 */ | ||
4454 | 0x07, 0xc0, /* 0000011111 */ | ||
4455 | 0x07, 0xc0, /* 0000011111 */ | ||
4456 | 0x07, 0xc0, /* 0000011111 */ | ||
4457 | 0x07, 0xc0, /* 0000011111 */ | ||
4458 | 0x07, 0xc0, /* 0000011111 */ | ||
4459 | 0x07, 0xc0, /* 0000011111 */ | ||
4460 | 0x07, 0xc0, /* 0000011111 */ | ||
4461 | 0x07, 0xc0, /* 0000011111 */ | ||
4462 | 0x07, 0xc0, /* 0000011111 */ | ||
4463 | 0x07, 0xc0, /* 0000011111 */ | ||
4464 | 0x07, 0xc0, /* 0000011111 */ | ||
4465 | 0x07, 0xc0, /* 0000011111 */ | ||
4466 | 0x07, 0xc0, /* 0000011111 */ | ||
4467 | 0x07, 0xc0, /* 0000011111 */ | ||
4468 | 0x07, 0xc0, /* 0000011111 */ | ||
4469 | 0x07, 0xc0, /* 0000011111 */ | ||
4470 | 0x07, 0xc0, /* 0000011111 */ | ||
4471 | |||
4472 | /* 223 0xdf '.' */ | ||
4473 | 0xff, 0xc0, /* 1111111111 */ | ||
4474 | 0xff, 0xc0, /* 1111111111 */ | ||
4475 | 0xff, 0xc0, /* 1111111111 */ | ||
4476 | 0xff, 0xc0, /* 1111111111 */ | ||
4477 | 0xff, 0xc0, /* 1111111111 */ | ||
4478 | 0xff, 0xc0, /* 1111111111 */ | ||
4479 | 0xff, 0xc0, /* 1111111111 */ | ||
4480 | 0xff, 0xc0, /* 1111111111 */ | ||
4481 | 0x00, 0x00, /* 0000000000 */ | ||
4482 | 0x00, 0x00, /* 0000000000 */ | ||
4483 | 0x00, 0x00, /* 0000000000 */ | ||
4484 | 0x00, 0x00, /* 0000000000 */ | ||
4485 | 0x00, 0x00, /* 0000000000 */ | ||
4486 | 0x00, 0x00, /* 0000000000 */ | ||
4487 | 0x00, 0x00, /* 0000000000 */ | ||
4488 | 0x00, 0x00, /* 0000000000 */ | ||
4489 | 0x00, 0x00, /* 0000000000 */ | ||
4490 | 0x00, 0x00, /* 0000000000 */ | ||
4491 | |||
4492 | /* 224 0xe0 '.' */ | ||
4493 | 0x00, 0x00, /* 0000000000 */ | ||
4494 | 0x00, 0x00, /* 0000000000 */ | ||
4495 | 0x00, 0x00, /* 0000000000 */ | ||
4496 | 0x00, 0x00, /* 0000000000 */ | ||
4497 | 0x00, 0x00, /* 0000000000 */ | ||
4498 | 0x1c, 0x80, /* 0001110010 */ | ||
4499 | 0x35, 0x80, /* 0011010110 */ | ||
4500 | 0x63, 0x00, /* 0110001100 */ | ||
4501 | 0x63, 0x00, /* 0110001100 */ | ||
4502 | 0x63, 0x00, /* 0110001100 */ | ||
4503 | 0x63, 0x00, /* 0110001100 */ | ||
4504 | 0x63, 0x00, /* 0110001100 */ | ||
4505 | 0x63, 0x00, /* 0110001100 */ | ||
4506 | 0x37, 0x80, /* 0011011110 */ | ||
4507 | 0x1c, 0x80, /* 0001110010 */ | ||
4508 | 0x00, 0x00, /* 0000000000 */ | ||
4509 | 0x00, 0x00, /* 0000000000 */ | ||
4510 | 0x00, 0x00, /* 0000000000 */ | ||
4511 | |||
4512 | /* 225 0xe1 '.' */ | ||
4513 | 0x00, 0x00, /* 0000000000 */ | ||
4514 | 0x1e, 0x00, /* 0001111000 */ | ||
4515 | 0x33, 0x00, /* 0011001100 */ | ||
4516 | 0x61, 0x80, /* 0110000110 */ | ||
4517 | 0x61, 0x80, /* 0110000110 */ | ||
4518 | 0x61, 0x80, /* 0110000110 */ | ||
4519 | 0x63, 0x00, /* 0110001100 */ | ||
4520 | 0x6f, 0x00, /* 0110111100 */ | ||
4521 | 0x63, 0x00, /* 0110001100 */ | ||
4522 | 0x61, 0x80, /* 0110000110 */ | ||
4523 | 0x61, 0x80, /* 0110000110 */ | ||
4524 | 0x61, 0x80, /* 0110000110 */ | ||
4525 | 0x61, 0x80, /* 0110000110 */ | ||
4526 | 0x63, 0x00, /* 0110001100 */ | ||
4527 | 0x6e, 0x00, /* 0110111000 */ | ||
4528 | 0x00, 0x00, /* 0000000000 */ | ||
4529 | 0x00, 0x00, /* 0000000000 */ | ||
4530 | 0x00, 0x00, /* 0000000000 */ | ||
4531 | |||
4532 | /* 226 0xe2 '.' */ | ||
4533 | 0x00, 0x00, /* 0000000000 */ | ||
4534 | 0x7f, 0x80, /* 0111111110 */ | ||
4535 | 0x61, 0x80, /* 0110000110 */ | ||
4536 | 0x61, 0x80, /* 0110000110 */ | ||
4537 | 0x60, 0x00, /* 0110000000 */ | ||
4538 | 0x60, 0x00, /* 0110000000 */ | ||
4539 | 0x60, 0x00, /* 0110000000 */ | ||
4540 | 0x60, 0x00, /* 0110000000 */ | ||
4541 | 0x60, 0x00, /* 0110000000 */ | ||
4542 | 0x60, 0x00, /* 0110000000 */ | ||
4543 | 0x60, 0x00, /* 0110000000 */ | ||
4544 | 0x60, 0x00, /* 0110000000 */ | ||
4545 | 0x60, 0x00, /* 0110000000 */ | ||
4546 | 0x60, 0x00, /* 0110000000 */ | ||
4547 | 0x60, 0x00, /* 0110000000 */ | ||
4548 | 0x00, 0x00, /* 0000000000 */ | ||
4549 | 0x00, 0x00, /* 0000000000 */ | ||
4550 | 0x00, 0x00, /* 0000000000 */ | ||
4551 | |||
4552 | /* 227 0xe3 '.' */ | ||
4553 | 0x00, 0x00, /* 0000000000 */ | ||
4554 | 0x00, 0x00, /* 0000000000 */ | ||
4555 | 0x00, 0x00, /* 0000000000 */ | ||
4556 | 0x00, 0x00, /* 0000000000 */ | ||
4557 | 0x00, 0x00, /* 0000000000 */ | ||
4558 | 0x00, 0x00, /* 0000000000 */ | ||
4559 | 0x7f, 0x80, /* 0111111110 */ | ||
4560 | 0x33, 0x00, /* 0011001100 */ | ||
4561 | 0x33, 0x00, /* 0011001100 */ | ||
4562 | 0x33, 0x00, /* 0011001100 */ | ||
4563 | 0x33, 0x00, /* 0011001100 */ | ||
4564 | 0x33, 0x00, /* 0011001100 */ | ||
4565 | 0x33, 0x00, /* 0011001100 */ | ||
4566 | 0x33, 0x00, /* 0011001100 */ | ||
4567 | 0x33, 0x00, /* 0011001100 */ | ||
4568 | 0x00, 0x00, /* 0000000000 */ | ||
4569 | 0x00, 0x00, /* 0000000000 */ | ||
4570 | 0x00, 0x00, /* 0000000000 */ | ||
4571 | |||
4572 | /* 228 0xe4 '.' */ | ||
4573 | 0x00, 0x00, /* 0000000000 */ | ||
4574 | 0x00, 0x00, /* 0000000000 */ | ||
4575 | 0xff, 0x80, /* 1111111110 */ | ||
4576 | 0x60, 0x00, /* 0110000000 */ | ||
4577 | 0x30, 0x00, /* 0011000000 */ | ||
4578 | 0x30, 0x00, /* 0011000000 */ | ||
4579 | 0x18, 0x00, /* 0001100000 */ | ||
4580 | 0x18, 0x00, /* 0001100000 */ | ||
4581 | 0x0c, 0x00, /* 0000110000 */ | ||
4582 | 0x0c, 0x00, /* 0000110000 */ | ||
4583 | 0x18, 0x00, /* 0001100000 */ | ||
4584 | 0x30, 0x00, /* 0011000000 */ | ||
4585 | 0x30, 0x80, /* 0011000010 */ | ||
4586 | 0x61, 0x80, /* 0110000110 */ | ||
4587 | 0xff, 0x80, /* 1111111110 */ | ||
4588 | 0x00, 0x00, /* 0000000000 */ | ||
4589 | 0x00, 0x00, /* 0000000000 */ | ||
4590 | 0x00, 0x00, /* 0000000000 */ | ||
4591 | |||
4592 | /* 229 0xe5 '.' */ | ||
4593 | 0x00, 0x00, /* 0000000000 */ | ||
4594 | 0x00, 0x00, /* 0000000000 */ | ||
4595 | 0x00, 0x00, /* 0000000000 */ | ||
4596 | 0x00, 0x00, /* 0000000000 */ | ||
4597 | 0x00, 0x00, /* 0000000000 */ | ||
4598 | 0x00, 0x00, /* 0000000000 */ | ||
4599 | 0x00, 0x00, /* 0000000000 */ | ||
4600 | 0x1f, 0xc0, /* 0001111111 */ | ||
4601 | 0x36, 0x00, /* 0011011000 */ | ||
4602 | 0x63, 0x00, /* 0110001100 */ | ||
4603 | 0x61, 0x80, /* 0110000110 */ | ||
4604 | 0x61, 0x80, /* 0110000110 */ | ||
4605 | 0x61, 0x80, /* 0110000110 */ | ||
4606 | 0x33, 0x00, /* 0011001100 */ | ||
4607 | 0x3e, 0x00, /* 0011111000 */ | ||
4608 | 0x00, 0x00, /* 0000000000 */ | ||
4609 | 0x00, 0x00, /* 0000000000 */ | ||
4610 | 0x00, 0x00, /* 0000000000 */ | ||
4611 | |||
4612 | /* 230 0xe6 '.' */ | ||
4613 | 0x00, 0x00, /* 0000000000 */ | ||
4614 | 0x00, 0x00, /* 0000000000 */ | ||
4615 | 0x00, 0x00, /* 0000000000 */ | ||
4616 | 0x61, 0x80, /* 0110000110 */ | ||
4617 | 0x61, 0x80, /* 0110000110 */ | ||
4618 | 0x61, 0x80, /* 0110000110 */ | ||
4619 | 0x61, 0x80, /* 0110000110 */ | ||
4620 | 0x61, 0x80, /* 0110000110 */ | ||
4621 | 0x61, 0x80, /* 0110000110 */ | ||
4622 | 0x61, 0x80, /* 0110000110 */ | ||
4623 | 0x61, 0x80, /* 0110000110 */ | ||
4624 | 0x73, 0x80, /* 0111001110 */ | ||
4625 | 0x6d, 0x80, /* 0110110110 */ | ||
4626 | 0x60, 0x00, /* 0110000000 */ | ||
4627 | 0x60, 0x00, /* 0110000000 */ | ||
4628 | 0x60, 0x00, /* 0110000000 */ | ||
4629 | 0x60, 0x00, /* 0110000000 */ | ||
4630 | 0xc0, 0x00, /* 1100000000 */ | ||
4631 | |||
4632 | /* 231 0xe7 '.' */ | ||
4633 | 0x00, 0x00, /* 0000000000 */ | ||
4634 | 0x00, 0x00, /* 0000000000 */ | ||
4635 | 0x00, 0x00, /* 0000000000 */ | ||
4636 | 0x01, 0x80, /* 0000000110 */ | ||
4637 | 0x36, 0x40, /* 0011011001 */ | ||
4638 | 0x5e, 0x00, /* 0101111000 */ | ||
4639 | 0x8c, 0x00, /* 1000110000 */ | ||
4640 | 0x0c, 0x00, /* 0000110000 */ | ||
4641 | 0x0c, 0x00, /* 0000110000 */ | ||
4642 | 0x0c, 0x00, /* 0000110000 */ | ||
4643 | 0x0c, 0x00, /* 0000110000 */ | ||
4644 | 0x0c, 0x00, /* 0000110000 */ | ||
4645 | 0x0c, 0x00, /* 0000110000 */ | ||
4646 | 0x0c, 0x00, /* 0000110000 */ | ||
4647 | 0x0c, 0x00, /* 0000110000 */ | ||
4648 | 0x00, 0x00, /* 0000000000 */ | ||
4649 | 0x00, 0x00, /* 0000000000 */ | ||
4650 | 0x00, 0x00, /* 0000000000 */ | ||
4651 | |||
4652 | /* 232 0xe8 '.' */ | ||
4653 | 0x00, 0x00, /* 0000000000 */ | ||
4654 | 0x00, 0x00, /* 0000000000 */ | ||
4655 | 0x7f, 0x80, /* 0111111110 */ | ||
4656 | 0x0c, 0x00, /* 0000110000 */ | ||
4657 | 0x0c, 0x00, /* 0000110000 */ | ||
4658 | 0x1e, 0x00, /* 0001111000 */ | ||
4659 | 0x33, 0x00, /* 0011001100 */ | ||
4660 | 0x61, 0x80, /* 0110000110 */ | ||
4661 | 0x61, 0x80, /* 0110000110 */ | ||
4662 | 0x61, 0x80, /* 0110000110 */ | ||
4663 | 0x33, 0x00, /* 0011001100 */ | ||
4664 | 0x1e, 0x00, /* 0001111000 */ | ||
4665 | 0x0c, 0x00, /* 0000110000 */ | ||
4666 | 0x0c, 0x00, /* 0000110000 */ | ||
4667 | 0x7f, 0x80, /* 0111111110 */ | ||
4668 | 0x00, 0x00, /* 0000000000 */ | ||
4669 | 0x00, 0x00, /* 0000000000 */ | ||
4670 | 0x00, 0x00, /* 0000000000 */ | ||
4671 | |||
4672 | /* 233 0xe9 '.' */ | ||
4673 | 0x00, 0x00, /* 0000000000 */ | ||
4674 | 0x00, 0x00, /* 0000000000 */ | ||
4675 | 0x00, 0x00, /* 0000000000 */ | ||
4676 | 0x0e, 0x00, /* 0000111000 */ | ||
4677 | 0x1f, 0x00, /* 0001111100 */ | ||
4678 | 0x31, 0x80, /* 0011000110 */ | ||
4679 | 0x31, 0x80, /* 0011000110 */ | ||
4680 | 0x60, 0xc0, /* 0110000011 */ | ||
4681 | 0x7f, 0xc0, /* 0111111111 */ | ||
4682 | 0x7f, 0xc0, /* 0111111111 */ | ||
4683 | 0x60, 0xc0, /* 0110000011 */ | ||
4684 | 0x31, 0x80, /* 0011000110 */ | ||
4685 | 0x31, 0x80, /* 0011000110 */ | ||
4686 | 0x1f, 0x00, /* 0001111100 */ | ||
4687 | 0x0e, 0x00, /* 0000111000 */ | ||
4688 | 0x00, 0x00, /* 0000000000 */ | ||
4689 | 0x00, 0x00, /* 0000000000 */ | ||
4690 | 0x00, 0x00, /* 0000000000 */ | ||
4691 | |||
4692 | /* 234 0xea '.' */ | ||
4693 | 0x00, 0x00, /* 0000000000 */ | ||
4694 | 0x00, 0x00, /* 0000000000 */ | ||
4695 | 0x00, 0x00, /* 0000000000 */ | ||
4696 | 0x00, 0x00, /* 0000000000 */ | ||
4697 | 0x1e, 0x00, /* 0001111000 */ | ||
4698 | 0x33, 0x00, /* 0011001100 */ | ||
4699 | 0x61, 0x80, /* 0110000110 */ | ||
4700 | 0xc0, 0xc0, /* 1100000011 */ | ||
4701 | 0xc0, 0xc0, /* 1100000011 */ | ||
4702 | 0xc0, 0xc0, /* 1100000011 */ | ||
4703 | 0x61, 0x80, /* 0110000110 */ | ||
4704 | 0x33, 0x00, /* 0011001100 */ | ||
4705 | 0x33, 0x00, /* 0011001100 */ | ||
4706 | 0x33, 0x00, /* 0011001100 */ | ||
4707 | 0x33, 0x00, /* 0011001100 */ | ||
4708 | 0xf3, 0xc0, /* 1111001111 */ | ||
4709 | 0x00, 0x00, /* 0000000000 */ | ||
4710 | 0x00, 0x00, /* 0000000000 */ | ||
4711 | |||
4712 | /* 235 0xeb '.' */ | ||
4713 | 0x00, 0x00, /* 0000000000 */ | ||
4714 | 0x07, 0x00, /* 0000011100 */ | ||
4715 | 0x1f, 0x80, /* 0001111110 */ | ||
4716 | 0x30, 0xc0, /* 0011000011 */ | ||
4717 | 0x30, 0x00, /* 0011000000 */ | ||
4718 | 0x18, 0x00, /* 0001100000 */ | ||
4719 | 0x0c, 0x00, /* 0000110000 */ | ||
4720 | 0x0c, 0x00, /* 0000110000 */ | ||
4721 | 0x3e, 0x00, /* 0011111000 */ | ||
4722 | 0x66, 0x00, /* 0110011000 */ | ||
4723 | 0xc3, 0x00, /* 1100001100 */ | ||
4724 | 0xc3, 0x00, /* 1100001100 */ | ||
4725 | 0xc3, 0x00, /* 1100001100 */ | ||
4726 | 0x66, 0x00, /* 0110011000 */ | ||
4727 | 0x3c, 0x00, /* 0011110000 */ | ||
4728 | 0x18, 0x00, /* 0001100000 */ | ||
4729 | 0x00, 0x00, /* 0000000000 */ | ||
4730 | 0x00, 0x00, /* 0000000000 */ | ||
4731 | |||
4732 | /* 236 0xec '.' */ | ||
4733 | 0x00, 0x00, /* 0000000000 */ | ||
4734 | 0x00, 0x00, /* 0000000000 */ | ||
4735 | 0x00, 0x00, /* 0000000000 */ | ||
4736 | 0x00, 0x00, /* 0000000000 */ | ||
4737 | 0x00, 0x00, /* 0000000000 */ | ||
4738 | 0x33, 0x00, /* 0011001100 */ | ||
4739 | 0x6d, 0x80, /* 0110110110 */ | ||
4740 | 0xcc, 0xc0, /* 1100110011 */ | ||
4741 | 0xcc, 0xc0, /* 1100110011 */ | ||
4742 | 0xcc, 0xc0, /* 1100110011 */ | ||
4743 | 0xcc, 0xc0, /* 1100110011 */ | ||
4744 | 0x6d, 0x80, /* 0110110110 */ | ||
4745 | 0x33, 0x00, /* 0011001100 */ | ||
4746 | 0x00, 0x00, /* 0000000000 */ | ||
4747 | 0x00, 0x00, /* 0000000000 */ | ||
4748 | 0x00, 0x00, /* 0000000000 */ | ||
4749 | 0x00, 0x00, /* 0000000000 */ | ||
4750 | 0x00, 0x00, /* 0000000000 */ | ||
4751 | |||
4752 | /* 237 0xed '.' */ | ||
4753 | 0x00, 0x00, /* 0000000000 */ | ||
4754 | 0x01, 0x80, /* 0000000110 */ | ||
4755 | 0x01, 0x80, /* 0000000110 */ | ||
4756 | 0x03, 0x00, /* 0000001100 */ | ||
4757 | 0x03, 0x00, /* 0000001100 */ | ||
4758 | 0x37, 0x00, /* 0011011100 */ | ||
4759 | 0x6d, 0x80, /* 0110110110 */ | ||
4760 | 0xcc, 0xc0, /* 1100110011 */ | ||
4761 | 0xcc, 0xc0, /* 1100110011 */ | ||
4762 | 0xcc, 0xc0, /* 1100110011 */ | ||
4763 | 0xcc, 0xc0, /* 1100110011 */ | ||
4764 | 0x6d, 0x80, /* 0110110110 */ | ||
4765 | 0x3b, 0x00, /* 0011101100 */ | ||
4766 | 0x30, 0x00, /* 0011000000 */ | ||
4767 | 0x30, 0x00, /* 0011000000 */ | ||
4768 | 0x60, 0x00, /* 0110000000 */ | ||
4769 | 0x60, 0x00, /* 0110000000 */ | ||
4770 | 0x00, 0x00, /* 0000000000 */ | ||
4771 | |||
4772 | /* 238 0xee '.' */ | ||
4773 | 0x00, 0x00, /* 0000000000 */ | ||
4774 | 0x03, 0x80, /* 0000001110 */ | ||
4775 | 0x0e, 0x00, /* 0000111000 */ | ||
4776 | 0x18, 0x00, /* 0001100000 */ | ||
4777 | 0x18, 0x00, /* 0001100000 */ | ||
4778 | 0x30, 0x00, /* 0011000000 */ | ||
4779 | 0x30, 0x00, /* 0011000000 */ | ||
4780 | 0x3f, 0x80, /* 0011111110 */ | ||
4781 | 0x3f, 0x80, /* 0011111110 */ | ||
4782 | 0x30, 0x00, /* 0011000000 */ | ||
4783 | 0x30, 0x00, /* 0011000000 */ | ||
4784 | 0x18, 0x00, /* 0001100000 */ | ||
4785 | 0x18, 0x00, /* 0001100000 */ | ||
4786 | 0x0e, 0x00, /* 0000111000 */ | ||
4787 | 0x03, 0x80, /* 0000001110 */ | ||
4788 | 0x00, 0x00, /* 0000000000 */ | ||
4789 | 0x00, 0x00, /* 0000000000 */ | ||
4790 | 0x00, 0x00, /* 0000000000 */ | ||
4791 | |||
4792 | /* 239 0xef '.' */ | ||
4793 | 0x00, 0x00, /* 0000000000 */ | ||
4794 | 0x00, 0x00, /* 0000000000 */ | ||
4795 | 0x00, 0x00, /* 0000000000 */ | ||
4796 | 0x00, 0x00, /* 0000000000 */ | ||
4797 | 0x1e, 0x00, /* 0001111000 */ | ||
4798 | 0x33, 0x00, /* 0011001100 */ | ||
4799 | 0x61, 0x80, /* 0110000110 */ | ||
4800 | 0x61, 0x80, /* 0110000110 */ | ||
4801 | 0x61, 0x80, /* 0110000110 */ | ||
4802 | 0x61, 0x80, /* 0110000110 */ | ||
4803 | 0x61, 0x80, /* 0110000110 */ | ||
4804 | 0x61, 0x80, /* 0110000110 */ | ||
4805 | 0x61, 0x80, /* 0110000110 */ | ||
4806 | 0x61, 0x80, /* 0110000110 */ | ||
4807 | 0x61, 0x80, /* 0110000110 */ | ||
4808 | 0x00, 0x00, /* 0000000000 */ | ||
4809 | 0x00, 0x00, /* 0000000000 */ | ||
4810 | 0x00, 0x00, /* 0000000000 */ | ||
4811 | |||
4812 | /* 240 0xf0 '.' */ | ||
4813 | 0x00, 0x00, /* 0000000000 */ | ||
4814 | 0x00, 0x00, /* 0000000000 */ | ||
4815 | 0x00, 0x00, /* 0000000000 */ | ||
4816 | 0x00, 0x00, /* 0000000000 */ | ||
4817 | 0x00, 0x00, /* 0000000000 */ | ||
4818 | 0x7f, 0x80, /* 0111111110 */ | ||
4819 | 0x7f, 0x80, /* 0111111110 */ | ||
4820 | 0x00, 0x00, /* 0000000000 */ | ||
4821 | 0x00, 0x00, /* 0000000000 */ | ||
4822 | 0x7f, 0x80, /* 0111111110 */ | ||
4823 | 0x7f, 0x80, /* 0111111110 */ | ||
4824 | 0x00, 0x00, /* 0000000000 */ | ||
4825 | 0x00, 0x00, /* 0000000000 */ | ||
4826 | 0x7f, 0x80, /* 0111111110 */ | ||
4827 | 0x7f, 0x80, /* 0111111110 */ | ||
4828 | 0x00, 0x00, /* 0000000000 */ | ||
4829 | 0x00, 0x00, /* 0000000000 */ | ||
4830 | 0x00, 0x00, /* 0000000000 */ | ||
4831 | |||
4832 | /* 241 0xf1 '.' */ | ||
4833 | 0x00, 0x00, /* 0000000000 */ | ||
4834 | 0x00, 0x00, /* 0000000000 */ | ||
4835 | 0x0c, 0x00, /* 0000110000 */ | ||
4836 | 0x0c, 0x00, /* 0000110000 */ | ||
4837 | 0x0c, 0x00, /* 0000110000 */ | ||
4838 | 0x0c, 0x00, /* 0000110000 */ | ||
4839 | 0x7f, 0x80, /* 0111111110 */ | ||
4840 | 0x7f, 0x80, /* 0111111110 */ | ||
4841 | 0x0c, 0x00, /* 0000110000 */ | ||
4842 | 0x0c, 0x00, /* 0000110000 */ | ||
4843 | 0x0c, 0x00, /* 0000110000 */ | ||
4844 | 0x0c, 0x00, /* 0000110000 */ | ||
4845 | 0x00, 0x00, /* 0000000000 */ | ||
4846 | 0x7f, 0x80, /* 0111111110 */ | ||
4847 | 0x7f, 0x80, /* 0111111110 */ | ||
4848 | 0x00, 0x00, /* 0000000000 */ | ||
4849 | 0x00, 0x00, /* 0000000000 */ | ||
4850 | 0x00, 0x00, /* 0000000000 */ | ||
4851 | |||
4852 | /* 242 0xf2 '.' */ | ||
4853 | 0x00, 0x00, /* 0000000000 */ | ||
4854 | 0x00, 0x00, /* 0000000000 */ | ||
4855 | 0x00, 0x00, /* 0000000000 */ | ||
4856 | 0x00, 0x00, /* 0000000000 */ | ||
4857 | 0x00, 0x00, /* 0000000000 */ | ||
4858 | 0xe0, 0x00, /* 1110000000 */ | ||
4859 | 0x38, 0x00, /* 0011100000 */ | ||
4860 | 0x0e, 0x00, /* 0000111000 */ | ||
4861 | 0x03, 0x80, /* 0000001110 */ | ||
4862 | 0x0e, 0x00, /* 0000111000 */ | ||
4863 | 0x38, 0x00, /* 0011100000 */ | ||
4864 | 0xe0, 0x00, /* 1110000000 */ | ||
4865 | 0x00, 0x00, /* 0000000000 */ | ||
4866 | 0xff, 0x00, /* 1111111100 */ | ||
4867 | 0xff, 0x00, /* 1111111100 */ | ||
4868 | 0x00, 0x00, /* 0000000000 */ | ||
4869 | 0x00, 0x00, /* 0000000000 */ | ||
4870 | 0x00, 0x00, /* 0000000000 */ | ||
4871 | |||
4872 | /* 243 0xf3 '.' */ | ||
4873 | 0x00, 0x00, /* 0000000000 */ | ||
4874 | 0x00, 0x00, /* 0000000000 */ | ||
4875 | 0x00, 0x00, /* 0000000000 */ | ||
4876 | 0x00, 0x00, /* 0000000000 */ | ||
4877 | 0x00, 0x00, /* 0000000000 */ | ||
4878 | 0x03, 0x80, /* 0000001110 */ | ||
4879 | 0x0e, 0x00, /* 0000111000 */ | ||
4880 | 0x38, 0x00, /* 0011100000 */ | ||
4881 | 0xe0, 0x00, /* 1110000000 */ | ||
4882 | 0x38, 0x00, /* 0011100000 */ | ||
4883 | 0x0e, 0x00, /* 0000111000 */ | ||
4884 | 0x03, 0x80, /* 0000001110 */ | ||
4885 | 0x00, 0x00, /* 0000000000 */ | ||
4886 | 0xff, 0x80, /* 1111111110 */ | ||
4887 | 0xff, 0x80, /* 1111111110 */ | ||
4888 | 0x00, 0x00, /* 0000000000 */ | ||
4889 | 0x00, 0x00, /* 0000000000 */ | ||
4890 | 0x00, 0x00, /* 0000000000 */ | ||
4891 | |||
4892 | /* 244 0xf4 '.' */ | ||
4893 | 0x00, 0x00, /* 0000000000 */ | ||
4894 | 0x00, 0x00, /* 0000000000 */ | ||
4895 | 0x1e, 0x00, /* 0001111000 */ | ||
4896 | 0x33, 0x00, /* 0011001100 */ | ||
4897 | 0x33, 0x00, /* 0011001100 */ | ||
4898 | 0x30, 0x00, /* 0011000000 */ | ||
4899 | 0x30, 0x00, /* 0011000000 */ | ||
4900 | 0x30, 0x00, /* 0011000000 */ | ||
4901 | 0x30, 0x00, /* 0011000000 */ | ||
4902 | 0x30, 0x00, /* 0011000000 */ | ||
4903 | 0x30, 0x00, /* 0011000000 */ | ||
4904 | 0x30, 0x00, /* 0011000000 */ | ||
4905 | 0x30, 0x00, /* 0011000000 */ | ||
4906 | 0x30, 0x00, /* 0011000000 */ | ||
4907 | 0x30, 0x00, /* 0011000000 */ | ||
4908 | 0x30, 0x00, /* 0011000000 */ | ||
4909 | 0x30, 0x00, /* 0011000000 */ | ||
4910 | 0x00, 0x00, /* 0000000000 */ | ||
4911 | |||
4912 | /* 245 0xf5 '.' */ | ||
4913 | 0x00, 0x00, /* 0000000000 */ | ||
4914 | 0x00, 0x00, /* 0000000000 */ | ||
4915 | 0x1e, 0x00, /* 0001111000 */ | ||
4916 | 0x33, 0x00, /* 0011001100 */ | ||
4917 | 0x33, 0x00, /* 0011001100 */ | ||
4918 | 0x03, 0x00, /* 0000001100 */ | ||
4919 | 0x03, 0x00, /* 0000001100 */ | ||
4920 | 0x03, 0x00, /* 0000001100 */ | ||
4921 | 0x03, 0x00, /* 0000001100 */ | ||
4922 | 0x03, 0x00, /* 0000001100 */ | ||
4923 | 0x03, 0x00, /* 0000001100 */ | ||
4924 | 0x03, 0x00, /* 0000001100 */ | ||
4925 | 0x03, 0x00, /* 0000001100 */ | ||
4926 | 0x03, 0x00, /* 0000001100 */ | ||
4927 | 0x03, 0x00, /* 0000001100 */ | ||
4928 | 0x03, 0x00, /* 0000001100 */ | ||
4929 | 0x03, 0x00, /* 0000001100 */ | ||
4930 | 0x00, 0x00, /* 0000000000 */ | ||
4931 | |||
4932 | /* 246 0xf6 '.' */ | ||
4933 | 0x00, 0x00, /* 0000000000 */ | ||
4934 | 0x00, 0x00, /* 0000000000 */ | ||
4935 | 0x00, 0x00, /* 0000000000 */ | ||
4936 | 0x00, 0x00, /* 0000000000 */ | ||
4937 | 0x00, 0x00, /* 0000000000 */ | ||
4938 | 0x0c, 0x00, /* 0000110000 */ | ||
4939 | 0x0c, 0x00, /* 0000110000 */ | ||
4940 | 0x00, 0x00, /* 0000000000 */ | ||
4941 | 0x00, 0x00, /* 0000000000 */ | ||
4942 | 0x7f, 0x80, /* 0111111110 */ | ||
4943 | 0x7f, 0x80, /* 0111111110 */ | ||
4944 | 0x00, 0x00, /* 0000000000 */ | ||
4945 | 0x00, 0x00, /* 0000000000 */ | ||
4946 | 0x0c, 0x00, /* 0000110000 */ | ||
4947 | 0x0c, 0x00, /* 0000110000 */ | ||
4948 | 0x00, 0x00, /* 0000000000 */ | ||
4949 | 0x00, 0x00, /* 0000000000 */ | ||
4950 | 0x00, 0x00, /* 0000000000 */ | ||
4951 | |||
4952 | /* 247 0xf7 '.' */ | ||
4953 | 0x00, 0x00, /* 0000000000 */ | ||
4954 | 0x00, 0x00, /* 0000000000 */ | ||
4955 | 0x00, 0x00, /* 0000000000 */ | ||
4956 | 0x00, 0x00, /* 0000000000 */ | ||
4957 | 0x00, 0x00, /* 0000000000 */ | ||
4958 | 0x00, 0x00, /* 0000000000 */ | ||
4959 | 0x38, 0x00, /* 0011100000 */ | ||
4960 | 0x6c, 0x00, /* 0110110000 */ | ||
4961 | 0x06, 0xc0, /* 0000011011 */ | ||
4962 | 0x03, 0x80, /* 0000001110 */ | ||
4963 | 0x38, 0x00, /* 0011100000 */ | ||
4964 | 0x6c, 0x00, /* 0110110000 */ | ||
4965 | 0x06, 0xc0, /* 0000011011 */ | ||
4966 | 0x03, 0x80, /* 0000001110 */ | ||
4967 | 0x00, 0x00, /* 0000000000 */ | ||
4968 | 0x00, 0x00, /* 0000000000 */ | ||
4969 | 0x00, 0x00, /* 0000000000 */ | ||
4970 | 0x00, 0x00, /* 0000000000 */ | ||
4971 | |||
4972 | /* 248 0xf8 '.' */ | ||
4973 | 0x00, 0x00, /* 0000000000 */ | ||
4974 | 0x1e, 0x00, /* 0001111000 */ | ||
4975 | 0x33, 0x00, /* 0011001100 */ | ||
4976 | 0x33, 0x00, /* 0011001100 */ | ||
4977 | 0x1e, 0x00, /* 0001111000 */ | ||
4978 | 0x00, 0x00, /* 0000000000 */ | ||
4979 | 0x00, 0x00, /* 0000000000 */ | ||
4980 | 0x00, 0x00, /* 0000000000 */ | ||
4981 | 0x00, 0x00, /* 0000000000 */ | ||
4982 | 0x00, 0x00, /* 0000000000 */ | ||
4983 | 0x00, 0x00, /* 0000000000 */ | ||
4984 | 0x00, 0x00, /* 0000000000 */ | ||
4985 | 0x00, 0x00, /* 0000000000 */ | ||
4986 | 0x00, 0x00, /* 0000000000 */ | ||
4987 | 0x00, 0x00, /* 0000000000 */ | ||
4988 | 0x00, 0x00, /* 0000000000 */ | ||
4989 | 0x00, 0x00, /* 0000000000 */ | ||
4990 | 0x00, 0x00, /* 0000000000 */ | ||
4991 | |||
4992 | /* 249 0xf9 '.' */ | ||
4993 | 0x00, 0x00, /* 0000000000 */ | ||
4994 | 0x00, 0x00, /* 0000000000 */ | ||
4995 | 0x00, 0x00, /* 0000000000 */ | ||
4996 | 0x00, 0x00, /* 0000000000 */ | ||
4997 | 0x00, 0x00, /* 0000000000 */ | ||
4998 | 0x00, 0x00, /* 0000000000 */ | ||
4999 | 0x00, 0x00, /* 0000000000 */ | ||
5000 | 0x00, 0x00, /* 0000000000 */ | ||
5001 | 0x0c, 0x00, /* 0000110000 */ | ||
5002 | 0x1e, 0x00, /* 0001111000 */ | ||
5003 | 0x1e, 0x00, /* 0001111000 */ | ||
5004 | 0x0c, 0x00, /* 0000110000 */ | ||
5005 | 0x00, 0x00, /* 0000000000 */ | ||
5006 | 0x00, 0x00, /* 0000000000 */ | ||
5007 | 0x00, 0x00, /* 0000000000 */ | ||
5008 | 0x00, 0x00, /* 0000000000 */ | ||
5009 | 0x00, 0x00, /* 0000000000 */ | ||
5010 | 0x00, 0x00, /* 0000000000 */ | ||
5011 | |||
5012 | /* 250 0xfa '.' */ | ||
5013 | 0x00, 0x00, /* 0000000000 */ | ||
5014 | 0x00, 0x00, /* 0000000000 */ | ||
5015 | 0x00, 0x00, /* 0000000000 */ | ||
5016 | 0x00, 0x00, /* 0000000000 */ | ||
5017 | 0x00, 0x00, /* 0000000000 */ | ||
5018 | 0x00, 0x00, /* 0000000000 */ | ||
5019 | 0x00, 0x00, /* 0000000000 */ | ||
5020 | 0x00, 0x00, /* 0000000000 */ | ||
5021 | 0x00, 0x00, /* 0000000000 */ | ||
5022 | 0x0c, 0x00, /* 0000110000 */ | ||
5023 | 0x0c, 0x00, /* 0000110000 */ | ||
5024 | 0x00, 0x00, /* 0000000000 */ | ||
5025 | 0x00, 0x00, /* 0000000000 */ | ||
5026 | 0x00, 0x00, /* 0000000000 */ | ||
5027 | 0x00, 0x00, /* 0000000000 */ | ||
5028 | 0x00, 0x00, /* 0000000000 */ | ||
5029 | 0x00, 0x00, /* 0000000000 */ | ||
5030 | 0x00, 0x00, /* 0000000000 */ | ||
5031 | |||
5032 | /* 251 0xfb '.' */ | ||
5033 | 0x00, 0x00, /* 0000000000 */ | ||
5034 | 0x00, 0x00, /* 0000000000 */ | ||
5035 | 0x0f, 0xc0, /* 0000111111 */ | ||
5036 | 0x0f, 0xc0, /* 0000111111 */ | ||
5037 | 0x0c, 0x00, /* 0000110000 */ | ||
5038 | 0x0c, 0x00, /* 0000110000 */ | ||
5039 | 0x0c, 0x00, /* 0000110000 */ | ||
5040 | 0x0c, 0x00, /* 0000110000 */ | ||
5041 | 0x0c, 0x00, /* 0000110000 */ | ||
5042 | 0x0c, 0x00, /* 0000110000 */ | ||
5043 | 0xcc, 0x00, /* 1100110000 */ | ||
5044 | 0x6c, 0x00, /* 0110110000 */ | ||
5045 | 0x3c, 0x00, /* 0011110000 */ | ||
5046 | 0x1c, 0x00, /* 0001110000 */ | ||
5047 | 0x0c, 0x00, /* 0000110000 */ | ||
5048 | 0x00, 0x00, /* 0000000000 */ | ||
5049 | 0x00, 0x00, /* 0000000000 */ | ||
5050 | 0x00, 0x00, /* 0000000000 */ | ||
5051 | |||
5052 | /* 252 0xfc '.' */ | ||
5053 | 0x00, 0x00, /* 0000000000 */ | ||
5054 | 0x27, 0x00, /* 0010011100 */ | ||
5055 | 0x7b, 0x00, /* 0111101100 */ | ||
5056 | 0x31, 0x00, /* 0011000100 */ | ||
5057 | 0x31, 0x00, /* 0011000100 */ | ||
5058 | 0x31, 0x00, /* 0011000100 */ | ||
5059 | 0x7b, 0x80, /* 0111101110 */ | ||
5060 | 0x00, 0x00, /* 0000000000 */ | ||
5061 | 0x00, 0x00, /* 0000000000 */ | ||
5062 | 0x00, 0x00, /* 0000000000 */ | ||
5063 | 0x00, 0x00, /* 0000000000 */ | ||
5064 | 0x00, 0x00, /* 0000000000 */ | ||
5065 | 0x00, 0x00, /* 0000000000 */ | ||
5066 | 0x00, 0x00, /* 0000000000 */ | ||
5067 | 0x00, 0x00, /* 0000000000 */ | ||
5068 | 0x00, 0x00, /* 0000000000 */ | ||
5069 | 0x00, 0x00, /* 0000000000 */ | ||
5070 | 0x00, 0x00, /* 0000000000 */ | ||
5071 | |||
5072 | /* 253 0xfd '.' */ | ||
5073 | 0x00, 0x00, /* 0000000000 */ | ||
5074 | 0x1e, 0x00, /* 0001111000 */ | ||
5075 | 0x3f, 0x00, /* 0011111100 */ | ||
5076 | 0x63, 0x00, /* 0110001100 */ | ||
5077 | 0x43, 0x00, /* 0100001100 */ | ||
5078 | 0x06, 0x00, /* 0000011000 */ | ||
5079 | 0x0c, 0x00, /* 0000110000 */ | ||
5080 | 0x18, 0x00, /* 0001100000 */ | ||
5081 | 0x30, 0x80, /* 0011000010 */ | ||
5082 | 0x7f, 0x80, /* 0111111110 */ | ||
5083 | 0x7f, 0x80, /* 0111111110 */ | ||
5084 | 0x00, 0x00, /* 0000000000 */ | ||
5085 | 0x00, 0x00, /* 0000000000 */ | ||
5086 | 0x00, 0x00, /* 0000000000 */ | ||
5087 | 0x00, 0x00, /* 0000000000 */ | ||
5088 | 0x00, 0x00, /* 0000000000 */ | ||
5089 | 0x00, 0x00, /* 0000000000 */ | ||
5090 | 0x00, 0x00, /* 0000000000 */ | ||
5091 | |||
5092 | /* 254 0xfe '.' */ | ||
5093 | 0x00, 0x00, /* 0000000000 */ | ||
5094 | 0x00, 0x00, /* 0000000000 */ | ||
5095 | 0x00, 0x00, /* 0000000000 */ | ||
5096 | 0x3f, 0x00, /* 0011111100 */ | ||
5097 | 0x3f, 0x00, /* 0011111100 */ | ||
5098 | 0x3f, 0x00, /* 0011111100 */ | ||
5099 | 0x3f, 0x00, /* 0011111100 */ | ||
5100 | 0x3f, 0x00, /* 0011111100 */ | ||
5101 | 0x3f, 0x00, /* 0011111100 */ | ||
5102 | 0x3f, 0x00, /* 0011111100 */ | ||
5103 | 0x3f, 0x00, /* 0011111100 */ | ||
5104 | 0x3f, 0x00, /* 0011111100 */ | ||
5105 | 0x3f, 0x00, /* 0011111100 */ | ||
5106 | 0x3f, 0x00, /* 0011111100 */ | ||
5107 | 0x3f, 0x00, /* 0011111100 */ | ||
5108 | 0x00, 0x00, /* 0000000000 */ | ||
5109 | 0x00, 0x00, /* 0000000000 */ | ||
5110 | 0x00, 0x00, /* 0000000000 */ | ||
5111 | |||
5112 | /* 255 0xff '.' */ | ||
5113 | 0x00, 0x00, /* 0000000000 */ | ||
5114 | 0x00, 0x00, /* 0000000000 */ | ||
5115 | 0x00, 0x00, /* 0000000000 */ | ||
5116 | 0x00, 0x00, /* 0000000000 */ | ||
5117 | 0x00, 0x00, /* 0000000000 */ | ||
5118 | 0x00, 0x00, /* 0000000000 */ | ||
5119 | 0x00, 0x00, /* 0000000000 */ | ||
5120 | 0x00, 0x00, /* 0000000000 */ | ||
5121 | 0x00, 0x00, /* 0000000000 */ | ||
5122 | 0x00, 0x00, /* 0000000000 */ | ||
5123 | 0x00, 0x00, /* 0000000000 */ | ||
5124 | 0x00, 0x00, /* 0000000000 */ | ||
5125 | 0x00, 0x00, /* 0000000000 */ | ||
5126 | 0x00, 0x00, /* 0000000000 */ | ||
5127 | 0x00, 0x00, /* 0000000000 */ | ||
5128 | 0x00, 0x00, /* 0000000000 */ | ||
5129 | 0x00, 0x00, /* 0000000000 */ | ||
5130 | 0x00, 0x00, /* 0000000000 */ | ||
5131 | |||
5132 | }; | ||
5133 | |||
5134 | |||
5135 | struct font_desc font_10x18 = { | ||
5136 | FONT10x18_IDX, | ||
5137 | "10x18", | ||
5138 | 10, | ||
5139 | 18, | ||
5140 | fontdata_10x18, | ||
5141 | #ifdef __sparc__ | ||
5142 | 5 | ||
5143 | #else | ||
5144 | -1 | ||
5145 | #endif | ||
5146 | }; | ||
diff --git a/drivers/video/console/font_7x14.c b/drivers/video/console/font_7x14.c new file mode 100644 index 000000000000..1fa7fcf2ff72 --- /dev/null +++ b/drivers/video/console/font_7x14.c | |||
@@ -0,0 +1,4118 @@ | |||
1 | /**************************************/ | ||
2 | /* this file adapted from font_8x16.c */ | ||
3 | /* by Jurriaan Kalkman 05-2005 */ | ||
4 | /**************************************/ | ||
5 | |||
6 | #include <linux/font.h> | ||
7 | |||
8 | #define FONTDATAMAX 3584 | ||
9 | |||
10 | static unsigned char fontdata_7x14[FONTDATAMAX] = { | ||
11 | |||
12 | /* 0 0x00 '^@' */ | ||
13 | 0x00, /* 0000000 */ | ||
14 | 0x00, /* 0000000 */ | ||
15 | 0x00, /* 0000000 */ | ||
16 | 0x00, /* 0000000 */ | ||
17 | 0x00, /* 0000000 */ | ||
18 | 0x00, /* 0000000 */ | ||
19 | 0x00, /* 0000000 */ | ||
20 | 0x00, /* 0000000 */ | ||
21 | 0x00, /* 0000000 */ | ||
22 | 0x00, /* 0000000 */ | ||
23 | 0x00, /* 0000000 */ | ||
24 | 0x00, /* 0000000 */ | ||
25 | 0x00, /* 0000000 */ | ||
26 | 0x00, /* 0000000 */ | ||
27 | |||
28 | /* 1 0x01 '^A' */ | ||
29 | 0x00, /* 0000000 */ | ||
30 | 0x7c, /* 0111110 */ | ||
31 | 0x82, /* 1000001 */ | ||
32 | 0xaa, /* 1010101 */ | ||
33 | 0x82, /* 1000001 */ | ||
34 | 0x82, /* 1000001 */ | ||
35 | 0xba, /* 1011101 */ | ||
36 | 0x92, /* 1001001 */ | ||
37 | 0x82, /* 1000001 */ | ||
38 | 0x7c, /* 0111110 */ | ||
39 | 0x00, /* 0000000 */ | ||
40 | 0x00, /* 0000000 */ | ||
41 | 0x00, /* 0000000 */ | ||
42 | 0x00, /* 0000000 */ | ||
43 | |||
44 | /* 2 0x02 '^B' */ | ||
45 | 0x00, /* 0000000 */ | ||
46 | 0x7c, /* 0111110 */ | ||
47 | 0xfe, /* 1111111 */ | ||
48 | 0xd6, /* 1101011 */ | ||
49 | 0xfe, /* 1111111 */ | ||
50 | 0xfe, /* 1111111 */ | ||
51 | 0xc6, /* 1100011 */ | ||
52 | 0xee, /* 1110111 */ | ||
53 | 0xfe, /* 1111111 */ | ||
54 | 0xfe, /* 1111111 */ | ||
55 | 0x7c, /* 0111110 */ | ||
56 | 0x00, /* 0000000 */ | ||
57 | 0x00, /* 0000000 */ | ||
58 | 0x00, /* 0000000 */ | ||
59 | |||
60 | /* 3 0x03 '^C' */ | ||
61 | 0x00, /* 0000000 */ | ||
62 | 0x00, /* 0000000 */ | ||
63 | 0x00, /* 0000000 */ | ||
64 | 0x00, /* 0000000 */ | ||
65 | 0x6c, /* 0110110 */ | ||
66 | 0x7c, /* 0111110 */ | ||
67 | 0xfe, /* 1111111 */ | ||
68 | 0x7c, /* 0111110 */ | ||
69 | 0x38, /* 0011100 */ | ||
70 | 0x18, /* 0001100 */ | ||
71 | 0x10, /* 0001000 */ | ||
72 | 0x00, /* 0000000 */ | ||
73 | 0x00, /* 0000000 */ | ||
74 | 0x00, /* 0000000 */ | ||
75 | |||
76 | /* 4 0x04 '^D' */ | ||
77 | 0x00, /* 0000000 */ | ||
78 | 0x00, /* 0000000 */ | ||
79 | 0x00, /* 0000000 */ | ||
80 | 0x10, /* 0001000 */ | ||
81 | 0x38, /* 0011100 */ | ||
82 | 0x7c, /* 0111110 */ | ||
83 | 0xfe, /* 1111111 */ | ||
84 | 0x7c, /* 0111110 */ | ||
85 | 0x38, /* 0011100 */ | ||
86 | 0x10, /* 0001000 */ | ||
87 | 0x00, /* 0000000 */ | ||
88 | 0x00, /* 0000000 */ | ||
89 | 0x00, /* 0000000 */ | ||
90 | 0x00, /* 0000000 */ | ||
91 | |||
92 | /* 5 0x05 '^E' */ | ||
93 | 0x00, /* 0000000 */ | ||
94 | 0x00, /* 0000000 */ | ||
95 | 0x38, /* 0011100 */ | ||
96 | 0x38, /* 0011100 */ | ||
97 | 0x38, /* 0011100 */ | ||
98 | 0xee, /* 1110111 */ | ||
99 | 0xee, /* 1110111 */ | ||
100 | 0xee, /* 1110111 */ | ||
101 | 0x10, /* 0001000 */ | ||
102 | 0x10, /* 0001000 */ | ||
103 | 0x38, /* 0011100 */ | ||
104 | 0x00, /* 0000000 */ | ||
105 | 0x00, /* 0000000 */ | ||
106 | 0x00, /* 0000000 */ | ||
107 | |||
108 | /* 6 0x06 '^F' */ | ||
109 | 0x00, /* 0000000 */ | ||
110 | 0x00, /* 0000000 */ | ||
111 | 0x10, /* 0001000 */ | ||
112 | 0x38, /* 0011100 */ | ||
113 | 0x7c, /* 0111110 */ | ||
114 | 0xfe, /* 1111111 */ | ||
115 | 0xfe, /* 1111111 */ | ||
116 | 0x7c, /* 0111110 */ | ||
117 | 0x10, /* 0001000 */ | ||
118 | 0x10, /* 0001000 */ | ||
119 | 0x38, /* 0011100 */ | ||
120 | 0x00, /* 0000000 */ | ||
121 | 0x00, /* 0000000 */ | ||
122 | 0x00, /* 0000000 */ | ||
123 | |||
124 | /* 7 0x07 '^G' */ | ||
125 | 0x00, /* 0000000 */ | ||
126 | 0x00, /* 0000000 */ | ||
127 | 0x00, /* 0000000 */ | ||
128 | 0x00, /* 0000000 */ | ||
129 | 0x00, /* 0000000 */ | ||
130 | 0x18, /* 0001100 */ | ||
131 | 0x3c, /* 0011110 */ | ||
132 | 0x3c, /* 0011110 */ | ||
133 | 0x18, /* 0001100 */ | ||
134 | 0x00, /* 0000000 */ | ||
135 | 0x00, /* 0000000 */ | ||
136 | 0x00, /* 0000000 */ | ||
137 | 0x00, /* 0000000 */ | ||
138 | 0x00, /* 0000000 */ | ||
139 | |||
140 | /* 8 0x08 '^H' */ | ||
141 | 0xfe, /* 1111111 */ | ||
142 | 0xfe, /* 1111111 */ | ||
143 | 0xfe, /* 1111111 */ | ||
144 | 0xfe, /* 1111111 */ | ||
145 | 0xfe, /* 1111111 */ | ||
146 | 0xe6, /* 1110011 */ | ||
147 | 0xc2, /* 1100001 */ | ||
148 | 0xc2, /* 1100001 */ | ||
149 | 0xe6, /* 1110011 */ | ||
150 | 0xfe, /* 1111111 */ | ||
151 | 0xfe, /* 1111111 */ | ||
152 | 0xfe, /* 1111111 */ | ||
153 | 0xfe, /* 1111111 */ | ||
154 | 0xfe, /* 1111111 */ | ||
155 | |||
156 | /* 9 0x09 '^I' */ | ||
157 | 0x00, /* 0000000 */ | ||
158 | 0x00, /* 0000000 */ | ||
159 | 0x00, /* 0000000 */ | ||
160 | 0x00, /* 0000000 */ | ||
161 | 0x00, /* 0000000 */ | ||
162 | 0x38, /* 0011100 */ | ||
163 | 0x6c, /* 0110110 */ | ||
164 | 0x44, /* 0100010 */ | ||
165 | 0x6c, /* 0110110 */ | ||
166 | 0x38, /* 0011100 */ | ||
167 | 0x00, /* 0000000 */ | ||
168 | 0x00, /* 0000000 */ | ||
169 | 0x00, /* 0000000 */ | ||
170 | 0x00, /* 0000000 */ | ||
171 | |||
172 | /* 10 0x0a '^J' */ | ||
173 | 0xfe, /* 1111111 */ | ||
174 | 0xfe, /* 1111111 */ | ||
175 | 0xfe, /* 1111111 */ | ||
176 | 0xfe, /* 1111111 */ | ||
177 | 0xfe, /* 1111111 */ | ||
178 | 0xc6, /* 1100011 */ | ||
179 | 0x92, /* 1001001 */ | ||
180 | 0xba, /* 1011101 */ | ||
181 | 0x92, /* 1001001 */ | ||
182 | 0xc6, /* 1100011 */ | ||
183 | 0xfe, /* 1111111 */ | ||
184 | 0xfe, /* 1111111 */ | ||
185 | 0xfe, /* 1111111 */ | ||
186 | 0xfe, /* 1111111 */ | ||
187 | |||
188 | /* 11 0x0b '^K' */ | ||
189 | 0x00, /* 0000000 */ | ||
190 | 0x1e, /* 0001111 */ | ||
191 | 0x0e, /* 0000111 */ | ||
192 | 0x1a, /* 0001101 */ | ||
193 | 0x1a, /* 0001101 */ | ||
194 | 0x78, /* 0111100 */ | ||
195 | 0xcc, /* 1100110 */ | ||
196 | 0xcc, /* 1100110 */ | ||
197 | 0xcc, /* 1100110 */ | ||
198 | 0xcc, /* 1100110 */ | ||
199 | 0x78, /* 0111100 */ | ||
200 | 0x00, /* 0000000 */ | ||
201 | 0x00, /* 0000000 */ | ||
202 | 0x00, /* 0000000 */ | ||
203 | |||
204 | /* 12 0x0c '^L' */ | ||
205 | 0x00, /* 0000000 */ | ||
206 | 0x3c, /* 0011110 */ | ||
207 | 0x66, /* 0110011 */ | ||
208 | 0x66, /* 0110011 */ | ||
209 | 0x66, /* 0110011 */ | ||
210 | 0x66, /* 0110011 */ | ||
211 | 0x3c, /* 0011110 */ | ||
212 | 0x18, /* 0001100 */ | ||
213 | 0x7e, /* 0111111 */ | ||
214 | 0x18, /* 0001100 */ | ||
215 | 0x18, /* 0001100 */ | ||
216 | 0x00, /* 0000000 */ | ||
217 | 0x00, /* 0000000 */ | ||
218 | 0x00, /* 0000000 */ | ||
219 | |||
220 | /* 13 0x0d '^M' */ | ||
221 | 0x00, /* 0000000 */ | ||
222 | 0x3e, /* 0011111 */ | ||
223 | 0x36, /* 0011011 */ | ||
224 | 0x3e, /* 0011111 */ | ||
225 | 0x30, /* 0011000 */ | ||
226 | 0x30, /* 0011000 */ | ||
227 | 0x30, /* 0011000 */ | ||
228 | 0x30, /* 0011000 */ | ||
229 | 0x70, /* 0111000 */ | ||
230 | 0xf0, /* 1111000 */ | ||
231 | 0xe0, /* 1110000 */ | ||
232 | 0x00, /* 0000000 */ | ||
233 | 0x00, /* 0000000 */ | ||
234 | 0x00, /* 0000000 */ | ||
235 | |||
236 | /* 14 0x0e '^N' */ | ||
237 | 0x00, /* 0000000 */ | ||
238 | 0x7e, /* 0111111 */ | ||
239 | 0x66, /* 0110011 */ | ||
240 | 0x7e, /* 0111111 */ | ||
241 | 0x66, /* 0110011 */ | ||
242 | 0x66, /* 0110011 */ | ||
243 | 0x66, /* 0110011 */ | ||
244 | 0x66, /* 0110011 */ | ||
245 | 0x6e, /* 0110111 */ | ||
246 | 0xee, /* 1110111 */ | ||
247 | 0xec, /* 1110110 */ | ||
248 | 0xc0, /* 1100000 */ | ||
249 | 0x00, /* 0000000 */ | ||
250 | 0x00, /* 0000000 */ | ||
251 | |||
252 | /* 15 0x0f '^O' */ | ||
253 | 0x00, /* 0000000 */ | ||
254 | 0x00, /* 0000000 */ | ||
255 | 0x10, /* 0001000 */ | ||
256 | 0x10, /* 0001000 */ | ||
257 | 0xd6, /* 1101011 */ | ||
258 | 0x38, /* 0011100 */ | ||
259 | 0xee, /* 1110111 */ | ||
260 | 0x38, /* 0011100 */ | ||
261 | 0xd6, /* 1101011 */ | ||
262 | 0x10, /* 0001000 */ | ||
263 | 0x10, /* 0001000 */ | ||
264 | 0x00, /* 0000000 */ | ||
265 | 0x00, /* 0000000 */ | ||
266 | 0x00, /* 0000000 */ | ||
267 | |||
268 | /* 16 0x10 '^P' */ | ||
269 | 0x00, /* 0000000 */ | ||
270 | 0x80, /* 1000000 */ | ||
271 | 0xc0, /* 1100000 */ | ||
272 | 0xe0, /* 1110000 */ | ||
273 | 0xf0, /* 1111000 */ | ||
274 | 0xfc, /* 1111110 */ | ||
275 | 0xf0, /* 1111000 */ | ||
276 | 0xe0, /* 1110000 */ | ||
277 | 0xc0, /* 1100000 */ | ||
278 | 0x80, /* 1000000 */ | ||
279 | 0x00, /* 0000000 */ | ||
280 | 0x00, /* 0000000 */ | ||
281 | 0x00, /* 0000000 */ | ||
282 | 0x00, /* 0000000 */ | ||
283 | |||
284 | /* 17 0x11 '^Q' */ | ||
285 | 0x00, /* 0000000 */ | ||
286 | 0x04, /* 0000010 */ | ||
287 | 0x0c, /* 0000110 */ | ||
288 | 0x1c, /* 0001110 */ | ||
289 | 0x3c, /* 0011110 */ | ||
290 | 0xfc, /* 1111110 */ | ||
291 | 0x3c, /* 0011110 */ | ||
292 | 0x1c, /* 0001110 */ | ||
293 | 0x0c, /* 0000110 */ | ||
294 | 0x04, /* 0000010 */ | ||
295 | 0x00, /* 0000000 */ | ||
296 | 0x00, /* 0000000 */ | ||
297 | 0x00, /* 0000000 */ | ||
298 | 0x00, /* 0000000 */ | ||
299 | |||
300 | /* 18 0x12 '^R' */ | ||
301 | 0x00, /* 0000000 */ | ||
302 | 0x18, /* 0001100 */ | ||
303 | 0x3c, /* 0011110 */ | ||
304 | 0x7e, /* 0111111 */ | ||
305 | 0x18, /* 0001100 */ | ||
306 | 0x18, /* 0001100 */ | ||
307 | 0x18, /* 0001100 */ | ||
308 | 0x7e, /* 0111111 */ | ||
309 | 0x3c, /* 0011110 */ | ||
310 | 0x18, /* 0001100 */ | ||
311 | 0x00, /* 0000000 */ | ||
312 | 0x00, /* 0000000 */ | ||
313 | 0x00, /* 0000000 */ | ||
314 | 0x00, /* 0000000 */ | ||
315 | |||
316 | /* 19 0x13 '^S' */ | ||
317 | 0x00, /* 0000000 */ | ||
318 | 0x6c, /* 0110110 */ | ||
319 | 0x6c, /* 0110110 */ | ||
320 | 0x6c, /* 0110110 */ | ||
321 | 0x6c, /* 0110110 */ | ||
322 | 0x6c, /* 0110110 */ | ||
323 | 0x6c, /* 0110110 */ | ||
324 | 0x6c, /* 0110110 */ | ||
325 | 0x00, /* 0000000 */ | ||
326 | 0x6c, /* 0110110 */ | ||
327 | 0x6c, /* 0110110 */ | ||
328 | 0x00, /* 0000000 */ | ||
329 | 0x00, /* 0000000 */ | ||
330 | 0x00, /* 0000000 */ | ||
331 | |||
332 | /* 20 0x14 '^T' */ | ||
333 | 0x00, /* 0000000 */ | ||
334 | 0x7e, /* 0111111 */ | ||
335 | 0xd4, /* 1101010 */ | ||
336 | 0xd4, /* 1101010 */ | ||
337 | 0xd4, /* 1101010 */ | ||
338 | 0x74, /* 0111010 */ | ||
339 | 0x14, /* 0001010 */ | ||
340 | 0x14, /* 0001010 */ | ||
341 | 0x14, /* 0001010 */ | ||
342 | 0x14, /* 0001010 */ | ||
343 | 0x16, /* 0001011 */ | ||
344 | 0x00, /* 0000000 */ | ||
345 | 0x00, /* 0000000 */ | ||
346 | 0x00, /* 0000000 */ | ||
347 | |||
348 | /* 21 0x15 '^U' */ | ||
349 | 0x78, /* 0111100 */ | ||
350 | 0xcc, /* 1100110 */ | ||
351 | 0x60, /* 0110000 */ | ||
352 | 0x38, /* 0011100 */ | ||
353 | 0x6c, /* 0110110 */ | ||
354 | 0xc6, /* 1100011 */ | ||
355 | 0xc6, /* 1100011 */ | ||
356 | 0x6c, /* 0110110 */ | ||
357 | 0x38, /* 0011100 */ | ||
358 | 0x18, /* 0001100 */ | ||
359 | 0xcc, /* 1100110 */ | ||
360 | 0x78, /* 0111100 */ | ||
361 | 0x00, /* 0000000 */ | ||
362 | 0x00, /* 0000000 */ | ||
363 | |||
364 | /* 22 0x16 '^V' */ | ||
365 | 0x00, /* 0000000 */ | ||
366 | 0x00, /* 0000000 */ | ||
367 | 0x00, /* 0000000 */ | ||
368 | 0x00, /* 0000000 */ | ||
369 | 0x00, /* 0000000 */ | ||
370 | 0x00, /* 0000000 */ | ||
371 | 0x00, /* 0000000 */ | ||
372 | 0xfc, /* 1111110 */ | ||
373 | 0xfc, /* 1111110 */ | ||
374 | 0xfc, /* 1111110 */ | ||
375 | 0xfc, /* 1111110 */ | ||
376 | 0x00, /* 0000000 */ | ||
377 | 0x00, /* 0000000 */ | ||
378 | 0x00, /* 0000000 */ | ||
379 | |||
380 | /* 23 0x17 '^W' */ | ||
381 | 0x00, /* 0000000 */ | ||
382 | 0x18, /* 0001100 */ | ||
383 | 0x3c, /* 0011110 */ | ||
384 | 0x7e, /* 0111111 */ | ||
385 | 0x18, /* 0001100 */ | ||
386 | 0x18, /* 0001100 */ | ||
387 | 0x18, /* 0001100 */ | ||
388 | 0x7e, /* 0111111 */ | ||
389 | 0x3c, /* 0011110 */ | ||
390 | 0x18, /* 0001100 */ | ||
391 | 0x7e, /* 0111111 */ | ||
392 | 0x00, /* 0000000 */ | ||
393 | 0x00, /* 0000000 */ | ||
394 | 0x00, /* 0000000 */ | ||
395 | |||
396 | /* 24 0x18 '^X' */ | ||
397 | 0x00, /* 0000000 */ | ||
398 | 0x18, /* 0001100 */ | ||
399 | 0x3c, /* 0011110 */ | ||
400 | 0x7e, /* 0111111 */ | ||
401 | 0x18, /* 0001100 */ | ||
402 | 0x18, /* 0001100 */ | ||
403 | 0x18, /* 0001100 */ | ||
404 | 0x18, /* 0001100 */ | ||
405 | 0x18, /* 0001100 */ | ||
406 | 0x18, /* 0001100 */ | ||
407 | 0x18, /* 0001100 */ | ||
408 | 0x00, /* 0000000 */ | ||
409 | 0x00, /* 0000000 */ | ||
410 | 0x00, /* 0000000 */ | ||
411 | |||
412 | /* 25 0x19 '^Y' */ | ||
413 | 0x00, /* 0000000 */ | ||
414 | 0x18, /* 0001100 */ | ||
415 | 0x18, /* 0001100 */ | ||
416 | 0x18, /* 0001100 */ | ||
417 | 0x18, /* 0001100 */ | ||
418 | 0x18, /* 0001100 */ | ||
419 | 0x18, /* 0001100 */ | ||
420 | 0x18, /* 0001100 */ | ||
421 | 0x7e, /* 0111111 */ | ||
422 | 0x3c, /* 0011110 */ | ||
423 | 0x18, /* 0001100 */ | ||
424 | 0x00, /* 0000000 */ | ||
425 | 0x00, /* 0000000 */ | ||
426 | 0x00, /* 0000000 */ | ||
427 | |||
428 | /* 26 0x1a '^Z' */ | ||
429 | 0x00, /* 0000000 */ | ||
430 | 0x00, /* 0000000 */ | ||
431 | 0x00, /* 0000000 */ | ||
432 | 0x00, /* 0000000 */ | ||
433 | 0x30, /* 0011000 */ | ||
434 | 0x18, /* 0001100 */ | ||
435 | 0xfc, /* 1111110 */ | ||
436 | 0x18, /* 0001100 */ | ||
437 | 0x30, /* 0011000 */ | ||
438 | 0x00, /* 0000000 */ | ||
439 | 0x00, /* 0000000 */ | ||
440 | 0x00, /* 0000000 */ | ||
441 | 0x00, /* 0000000 */ | ||
442 | 0x00, /* 0000000 */ | ||
443 | |||
444 | /* 27 0x1b '^[' */ | ||
445 | 0x00, /* 0000000 */ | ||
446 | 0x00, /* 0000000 */ | ||
447 | 0x00, /* 0000000 */ | ||
448 | 0x00, /* 0000000 */ | ||
449 | 0x30, /* 0011000 */ | ||
450 | 0x60, /* 0110000 */ | ||
451 | 0xfc, /* 1111110 */ | ||
452 | 0x60, /* 0110000 */ | ||
453 | 0x30, /* 0011000 */ | ||
454 | 0x00, /* 0000000 */ | ||
455 | 0x00, /* 0000000 */ | ||
456 | 0x00, /* 0000000 */ | ||
457 | 0x00, /* 0000000 */ | ||
458 | 0x00, /* 0000000 */ | ||
459 | |||
460 | /* 28 0x1c '^\' */ | ||
461 | 0x00, /* 0000000 */ | ||
462 | 0x00, /* 0000000 */ | ||
463 | 0x00, /* 0000000 */ | ||
464 | 0x00, /* 0000000 */ | ||
465 | 0x00, /* 0000000 */ | ||
466 | 0xc0, /* 1100000 */ | ||
467 | 0xc0, /* 1100000 */ | ||
468 | 0xc0, /* 1100000 */ | ||
469 | 0xfc, /* 1111110 */ | ||
470 | 0x00, /* 0000000 */ | ||
471 | 0x00, /* 0000000 */ | ||
472 | 0x00, /* 0000000 */ | ||
473 | 0x00, /* 0000000 */ | ||
474 | 0x00, /* 0000000 */ | ||
475 | |||
476 | /* 29 0x1d '^]' */ | ||
477 | 0x00, /* 0000000 */ | ||
478 | 0x00, /* 0000000 */ | ||
479 | 0x00, /* 0000000 */ | ||
480 | 0x00, /* 0000000 */ | ||
481 | 0x28, /* 0010100 */ | ||
482 | 0x6c, /* 0110110 */ | ||
483 | 0xfe, /* 1111111 */ | ||
484 | 0x6c, /* 0110110 */ | ||
485 | 0x28, /* 0010100 */ | ||
486 | 0x00, /* 0000000 */ | ||
487 | 0x00, /* 0000000 */ | ||
488 | 0x00, /* 0000000 */ | ||
489 | 0x00, /* 0000000 */ | ||
490 | 0x00, /* 0000000 */ | ||
491 | |||
492 | /* 30 0x1e '^^' */ | ||
493 | 0x00, /* 0000000 */ | ||
494 | 0x00, /* 0000000 */ | ||
495 | 0x00, /* 0000000 */ | ||
496 | 0x00, /* 0000000 */ | ||
497 | 0x30, /* 0011000 */ | ||
498 | 0x30, /* 0011000 */ | ||
499 | 0x78, /* 0111100 */ | ||
500 | 0x78, /* 0111100 */ | ||
501 | 0xfc, /* 1111110 */ | ||
502 | 0xfc, /* 1111110 */ | ||
503 | 0x00, /* 0000000 */ | ||
504 | 0x00, /* 0000000 */ | ||
505 | 0x00, /* 0000000 */ | ||
506 | 0x00, /* 0000000 */ | ||
507 | |||
508 | /* 31 0x1f '^_' */ | ||
509 | 0x00, /* 0000000 */ | ||
510 | 0x00, /* 0000000 */ | ||
511 | 0x00, /* 0000000 */ | ||
512 | 0x00, /* 0000000 */ | ||
513 | 0xfc, /* 1111110 */ | ||
514 | 0xfc, /* 1111110 */ | ||
515 | 0x78, /* 0111100 */ | ||
516 | 0x78, /* 0111100 */ | ||
517 | 0x30, /* 0011000 */ | ||
518 | 0x30, /* 0011000 */ | ||
519 | 0x00, /* 0000000 */ | ||
520 | 0x00, /* 0000000 */ | ||
521 | 0x00, /* 0000000 */ | ||
522 | 0x00, /* 0000000 */ | ||
523 | |||
524 | /* 32 0x20 ' ' */ | ||
525 | 0x00, /* 0000000 */ | ||
526 | 0x00, /* 0000000 */ | ||
527 | 0x00, /* 0000000 */ | ||
528 | 0x00, /* 0000000 */ | ||
529 | 0x00, /* 0000000 */ | ||
530 | 0x00, /* 0000000 */ | ||
531 | 0x00, /* 0000000 */ | ||
532 | 0x00, /* 0000000 */ | ||
533 | 0x00, /* 0000000 */ | ||
534 | 0x00, /* 0000000 */ | ||
535 | 0x00, /* 0000000 */ | ||
536 | 0x00, /* 0000000 */ | ||
537 | 0x00, /* 0000000 */ | ||
538 | 0x00, /* 0000000 */ | ||
539 | |||
540 | /* 33 0x21 '!' */ | ||
541 | 0x00, /* 0000000 */ | ||
542 | 0x18, /* 0001100 */ | ||
543 | 0x3c, /* 0011110 */ | ||
544 | 0x3c, /* 0011110 */ | ||
545 | 0x3c, /* 0011110 */ | ||
546 | 0x18, /* 0001100 */ | ||
547 | 0x18, /* 0001100 */ | ||
548 | 0x18, /* 0001100 */ | ||
549 | 0x00, /* 0000000 */ | ||
550 | 0x18, /* 0001100 */ | ||
551 | 0x18, /* 0001100 */ | ||
552 | 0x00, /* 0000000 */ | ||
553 | 0x00, /* 0000000 */ | ||
554 | 0x00, /* 0000000 */ | ||
555 | |||
556 | /* 34 0x22 '"' */ | ||
557 | 0x00, /* 0000000 */ | ||
558 | 0x6c, /* 0110110 */ | ||
559 | 0x6c, /* 0110110 */ | ||
560 | 0x6c, /* 0110110 */ | ||
561 | 0x28, /* 0010100 */ | ||
562 | 0x00, /* 0000000 */ | ||
563 | 0x00, /* 0000000 */ | ||
564 | 0x00, /* 0000000 */ | ||
565 | 0x00, /* 0000000 */ | ||
566 | 0x00, /* 0000000 */ | ||
567 | 0x00, /* 0000000 */ | ||
568 | 0x00, /* 0000000 */ | ||
569 | 0x00, /* 0000000 */ | ||
570 | 0x00, /* 0000000 */ | ||
571 | |||
572 | /* 35 0x23 '#' */ | ||
573 | 0x00, /* 0000000 */ | ||
574 | 0x6c, /* 0110110 */ | ||
575 | 0x6c, /* 0110110 */ | ||
576 | 0xfe, /* 1111111 */ | ||
577 | 0xfe, /* 1111111 */ | ||
578 | 0x6c, /* 0110110 */ | ||
579 | 0x6c, /* 0110110 */ | ||
580 | 0xfe, /* 1111111 */ | ||
581 | 0xfe, /* 1111111 */ | ||
582 | 0x6c, /* 0110110 */ | ||
583 | 0x6c, /* 0110110 */ | ||
584 | 0x00, /* 0000000 */ | ||
585 | 0x00, /* 0000000 */ | ||
586 | 0x00, /* 0000000 */ | ||
587 | |||
588 | /* 36 0x24 '$' */ | ||
589 | 0x30, /* 0011000 */ | ||
590 | 0x30, /* 0011000 */ | ||
591 | 0x78, /* 0111100 */ | ||
592 | 0xcc, /* 1100110 */ | ||
593 | 0xc4, /* 1100010 */ | ||
594 | 0xc0, /* 1100000 */ | ||
595 | 0x78, /* 0111100 */ | ||
596 | 0x0c, /* 0000110 */ | ||
597 | 0x8c, /* 1000110 */ | ||
598 | 0xcc, /* 1100110 */ | ||
599 | 0x78, /* 0111100 */ | ||
600 | 0x30, /* 0011000 */ | ||
601 | 0x30, /* 0011000 */ | ||
602 | 0x00, /* 0000000 */ | ||
603 | |||
604 | /* 37 0x25 '%' */ | ||
605 | 0x00, /* 0000000 */ | ||
606 | 0x00, /* 0000000 */ | ||
607 | 0x00, /* 0000000 */ | ||
608 | 0xc0, /* 1100000 */ | ||
609 | 0xc4, /* 1100010 */ | ||
610 | 0x0c, /* 0000110 */ | ||
611 | 0x18, /* 0001100 */ | ||
612 | 0x30, /* 0011000 */ | ||
613 | 0x60, /* 0110000 */ | ||
614 | 0xcc, /* 1100110 */ | ||
615 | 0x8c, /* 1000110 */ | ||
616 | 0x00, /* 0000000 */ | ||
617 | 0x00, /* 0000000 */ | ||
618 | 0x00, /* 0000000 */ | ||
619 | |||
620 | /* 38 0x26 '&' */ | ||
621 | 0x00, /* 0000000 */ | ||
622 | 0x38, /* 0011100 */ | ||
623 | 0x6c, /* 0110110 */ | ||
624 | 0x6c, /* 0110110 */ | ||
625 | 0x38, /* 0011100 */ | ||
626 | 0x78, /* 0111100 */ | ||
627 | 0xde, /* 1101111 */ | ||
628 | 0xcc, /* 1100110 */ | ||
629 | 0xcc, /* 1100110 */ | ||
630 | 0xdc, /* 1101110 */ | ||
631 | 0x76, /* 0111011 */ | ||
632 | 0x00, /* 0000000 */ | ||
633 | 0x00, /* 0000000 */ | ||
634 | 0x00, /* 0000000 */ | ||
635 | |||
636 | /* 39 0x27 ''' */ | ||
637 | 0x00, /* 0000000 */ | ||
638 | 0x30, /* 0011000 */ | ||
639 | 0x30, /* 0011000 */ | ||
640 | 0x30, /* 0011000 */ | ||
641 | 0x60, /* 0110000 */ | ||
642 | 0x00, /* 0000000 */ | ||
643 | 0x00, /* 0000000 */ | ||
644 | 0x00, /* 0000000 */ | ||
645 | 0x00, /* 0000000 */ | ||
646 | 0x00, /* 0000000 */ | ||
647 | 0x00, /* 0000000 */ | ||
648 | 0x00, /* 0000000 */ | ||
649 | 0x00, /* 0000000 */ | ||
650 | 0x00, /* 0000000 */ | ||
651 | |||
652 | /* 40 0x28 '(' */ | ||
653 | 0x00, /* 0000000 */ | ||
654 | 0x0c, /* 0000110 */ | ||
655 | 0x18, /* 0001100 */ | ||
656 | 0x30, /* 0011000 */ | ||
657 | 0x30, /* 0011000 */ | ||
658 | 0x30, /* 0011000 */ | ||
659 | 0x30, /* 0011000 */ | ||
660 | 0x30, /* 0011000 */ | ||
661 | 0x30, /* 0011000 */ | ||
662 | 0x18, /* 0001100 */ | ||
663 | 0x0c, /* 0000110 */ | ||
664 | 0x00, /* 0000000 */ | ||
665 | 0x00, /* 0000000 */ | ||
666 | 0x00, /* 0000000 */ | ||
667 | |||
668 | /* 41 0x29 ')' */ | ||
669 | 0x00, /* 0000000 */ | ||
670 | 0x30, /* 0011000 */ | ||
671 | 0x18, /* 0001100 */ | ||
672 | 0x0c, /* 0000110 */ | ||
673 | 0x0c, /* 0000110 */ | ||
674 | 0x0c, /* 0000110 */ | ||
675 | 0x0c, /* 0000110 */ | ||
676 | 0x0c, /* 0000110 */ | ||
677 | 0x0c, /* 0000110 */ | ||
678 | 0x18, /* 0001100 */ | ||
679 | 0x30, /* 0011000 */ | ||
680 | 0x00, /* 0000000 */ | ||
681 | 0x00, /* 0000000 */ | ||
682 | 0x00, /* 0000000 */ | ||
683 | |||
684 | /* 42 0x2a '*' */ | ||
685 | 0x00, /* 0000000 */ | ||
686 | 0x00, /* 0000000 */ | ||
687 | 0x00, /* 0000000 */ | ||
688 | 0x00, /* 0000000 */ | ||
689 | 0x6c, /* 0110110 */ | ||
690 | 0x38, /* 0011100 */ | ||
691 | 0xfe, /* 1111111 */ | ||
692 | 0x38, /* 0011100 */ | ||
693 | 0x6c, /* 0110110 */ | ||
694 | 0x00, /* 0000000 */ | ||
695 | 0x00, /* 0000000 */ | ||
696 | 0x00, /* 0000000 */ | ||
697 | 0x00, /* 0000000 */ | ||
698 | 0x00, /* 0000000 */ | ||
699 | |||
700 | /* 43 0x2b '+' */ | ||
701 | 0x00, /* 0000000 */ | ||
702 | 0x00, /* 0000000 */ | ||
703 | 0x00, /* 0000000 */ | ||
704 | 0x00, /* 0000000 */ | ||
705 | 0x10, /* 0001000 */ | ||
706 | 0x10, /* 0001000 */ | ||
707 | 0x7c, /* 0111110 */ | ||
708 | 0x10, /* 0001000 */ | ||
709 | 0x10, /* 0001000 */ | ||
710 | 0x00, /* 0000000 */ | ||
711 | 0x00, /* 0000000 */ | ||
712 | 0x00, /* 0000000 */ | ||
713 | 0x00, /* 0000000 */ | ||
714 | 0x00, /* 0000000 */ | ||
715 | |||
716 | /* 44 0x2c ',' */ | ||
717 | 0x00, /* 0000000 */ | ||
718 | 0x00, /* 0000000 */ | ||
719 | 0x00, /* 0000000 */ | ||
720 | 0x00, /* 0000000 */ | ||
721 | 0x00, /* 0000000 */ | ||
722 | 0x00, /* 0000000 */ | ||
723 | 0x00, /* 0000000 */ | ||
724 | 0x00, /* 0000000 */ | ||
725 | 0x18, /* 0001100 */ | ||
726 | 0x18, /* 0001100 */ | ||
727 | 0x18, /* 0001100 */ | ||
728 | 0x30, /* 0011000 */ | ||
729 | 0x00, /* 0000000 */ | ||
730 | 0x00, /* 0000000 */ | ||
731 | |||
732 | /* 45 0x2d '-' */ | ||
733 | 0x00, /* 0000000 */ | ||
734 | 0x00, /* 0000000 */ | ||
735 | 0x00, /* 0000000 */ | ||
736 | 0x00, /* 0000000 */ | ||
737 | 0x00, /* 0000000 */ | ||
738 | 0x00, /* 0000000 */ | ||
739 | 0xfc, /* 1111110 */ | ||
740 | 0x00, /* 0000000 */ | ||
741 | 0x00, /* 0000000 */ | ||
742 | 0x00, /* 0000000 */ | ||
743 | 0x00, /* 0000000 */ | ||
744 | 0x00, /* 0000000 */ | ||
745 | 0x00, /* 0000000 */ | ||
746 | 0x00, /* 0000000 */ | ||
747 | |||
748 | /* 46 0x2e '.' */ | ||
749 | 0x00, /* 0000000 */ | ||
750 | 0x00, /* 0000000 */ | ||
751 | 0x00, /* 0000000 */ | ||
752 | 0x00, /* 0000000 */ | ||
753 | 0x00, /* 0000000 */ | ||
754 | 0x00, /* 0000000 */ | ||
755 | 0x00, /* 0000000 */ | ||
756 | 0x00, /* 0000000 */ | ||
757 | 0x00, /* 0000000 */ | ||
758 | 0x18, /* 0001100 */ | ||
759 | 0x18, /* 0001100 */ | ||
760 | 0x00, /* 0000000 */ | ||
761 | 0x00, /* 0000000 */ | ||
762 | 0x00, /* 0000000 */ | ||
763 | |||
764 | /* 47 0x2f '/' */ | ||
765 | 0x00, /* 0000000 */ | ||
766 | 0x00, /* 0000000 */ | ||
767 | 0x00, /* 0000000 */ | ||
768 | 0x00, /* 0000000 */ | ||
769 | 0x04, /* 0000010 */ | ||
770 | 0x0c, /* 0000110 */ | ||
771 | 0x18, /* 0001100 */ | ||
772 | 0x30, /* 0011000 */ | ||
773 | 0x60, /* 0110000 */ | ||
774 | 0xc0, /* 1100000 */ | ||
775 | 0x80, /* 1000000 */ | ||
776 | 0x00, /* 0000000 */ | ||
777 | 0x00, /* 0000000 */ | ||
778 | 0x00, /* 0000000 */ | ||
779 | |||
780 | /* 48 0x30 '0' */ | ||
781 | 0x00, /* 0000000 */ | ||
782 | 0x30, /* 0011000 */ | ||
783 | 0x78, /* 0111100 */ | ||
784 | 0xcc, /* 1100110 */ | ||
785 | 0xcc, /* 1100110 */ | ||
786 | 0xdc, /* 1101110 */ | ||
787 | 0xec, /* 1110110 */ | ||
788 | 0xcc, /* 1100110 */ | ||
789 | 0xcc, /* 1100110 */ | ||
790 | 0x78, /* 0111100 */ | ||
791 | 0x30, /* 0011000 */ | ||
792 | 0x00, /* 0000000 */ | ||
793 | 0x00, /* 0000000 */ | ||
794 | 0x00, /* 0000000 */ | ||
795 | |||
796 | /* 49 0x31 '1' */ | ||
797 | 0x00, /* 0000000 */ | ||
798 | 0x18, /* 0001100 */ | ||
799 | 0x38, /* 0011100 */ | ||
800 | 0x78, /* 0111100 */ | ||
801 | 0x18, /* 0001100 */ | ||
802 | 0x18, /* 0001100 */ | ||
803 | 0x18, /* 0001100 */ | ||
804 | 0x18, /* 0001100 */ | ||
805 | 0x18, /* 0001100 */ | ||
806 | 0x18, /* 0001100 */ | ||
807 | 0x7c, /* 0111110 */ | ||
808 | 0x00, /* 0000000 */ | ||
809 | 0x00, /* 0000000 */ | ||
810 | 0x00, /* 0000000 */ | ||
811 | |||
812 | /* 50 0x32 '2' */ | ||
813 | 0x00, /* 0000000 */ | ||
814 | 0x78, /* 0111100 */ | ||
815 | 0xcc, /* 1100110 */ | ||
816 | 0x0c, /* 0000110 */ | ||
817 | 0x18, /* 0001100 */ | ||
818 | 0x18, /* 0001100 */ | ||
819 | 0x30, /* 0011000 */ | ||
820 | 0x60, /* 0110000 */ | ||
821 | 0xc0, /* 1100000 */ | ||
822 | 0xcc, /* 1100110 */ | ||
823 | 0xfc, /* 1111110 */ | ||
824 | 0x00, /* 0000000 */ | ||
825 | 0x00, /* 0000000 */ | ||
826 | 0x00, /* 0000000 */ | ||
827 | |||
828 | /* 51 0x33 '3' */ | ||
829 | 0x00, /* 0000000 */ | ||
830 | 0x78, /* 0111100 */ | ||
831 | 0xcc, /* 1100110 */ | ||
832 | 0x0c, /* 0000110 */ | ||
833 | 0x0c, /* 0000110 */ | ||
834 | 0x38, /* 0011100 */ | ||
835 | 0x0c, /* 0000110 */ | ||
836 | 0x0c, /* 0000110 */ | ||
837 | 0x0c, /* 0000110 */ | ||
838 | 0xcc, /* 1100110 */ | ||
839 | 0x78, /* 0111100 */ | ||
840 | 0x00, /* 0000000 */ | ||
841 | 0x00, /* 0000000 */ | ||
842 | 0x00, /* 0000000 */ | ||
843 | |||
844 | /* 52 0x34 '4' */ | ||
845 | 0x00, /* 0000000 */ | ||
846 | 0x0c, /* 0000110 */ | ||
847 | 0x1c, /* 0001110 */ | ||
848 | 0x3c, /* 0011110 */ | ||
849 | 0x6c, /* 0110110 */ | ||
850 | 0xcc, /* 1100110 */ | ||
851 | 0xfe, /* 1111111 */ | ||
852 | 0x0c, /* 0000110 */ | ||
853 | 0x0c, /* 0000110 */ | ||
854 | 0x0c, /* 0000110 */ | ||
855 | 0x0c, /* 0000110 */ | ||
856 | 0x00, /* 0000000 */ | ||
857 | 0x00, /* 0000000 */ | ||
858 | 0x00, /* 0000000 */ | ||
859 | |||
860 | /* 53 0x35 '5' */ | ||
861 | 0x00, /* 0000000 */ | ||
862 | 0xfc, /* 1111110 */ | ||
863 | 0xc0, /* 1100000 */ | ||
864 | 0xc0, /* 1100000 */ | ||
865 | 0xc0, /* 1100000 */ | ||
866 | 0xf8, /* 1111100 */ | ||
867 | 0x0c, /* 0000110 */ | ||
868 | 0x0c, /* 0000110 */ | ||
869 | 0x0c, /* 0000110 */ | ||
870 | 0xcc, /* 1100110 */ | ||
871 | 0x78, /* 0111100 */ | ||
872 | 0x00, /* 0000000 */ | ||
873 | 0x00, /* 0000000 */ | ||
874 | 0x00, /* 0000000 */ | ||
875 | |||
876 | /* 54 0x36 '6' */ | ||
877 | 0x00, /* 0000000 */ | ||
878 | 0x30, /* 0011000 */ | ||
879 | 0x60, /* 0110000 */ | ||
880 | 0xc0, /* 1100000 */ | ||
881 | 0xc0, /* 1100000 */ | ||
882 | 0xf8, /* 1111100 */ | ||
883 | 0xcc, /* 1100110 */ | ||
884 | 0xcc, /* 1100110 */ | ||
885 | 0xcc, /* 1100110 */ | ||
886 | 0xcc, /* 1100110 */ | ||
887 | 0x78, /* 0111100 */ | ||
888 | 0x00, /* 0000000 */ | ||
889 | 0x00, /* 0000000 */ | ||
890 | 0x00, /* 0000000 */ | ||
891 | |||
892 | /* 55 0x37 '7' */ | ||
893 | 0x00, /* 0000000 */ | ||
894 | 0xfc, /* 1111110 */ | ||
895 | 0xcc, /* 1100110 */ | ||
896 | 0x0c, /* 0000110 */ | ||
897 | 0x0c, /* 0000110 */ | ||
898 | 0x18, /* 0001100 */ | ||
899 | 0x18, /* 0001100 */ | ||
900 | 0x30, /* 0011000 */ | ||
901 | 0x30, /* 0011000 */ | ||
902 | 0x30, /* 0011000 */ | ||
903 | 0x30, /* 0011000 */ | ||
904 | 0x00, /* 0000000 */ | ||
905 | 0x00, /* 0000000 */ | ||
906 | 0x00, /* 0000000 */ | ||
907 | |||
908 | /* 56 0x38 '8' */ | ||
909 | 0x00, /* 0000000 */ | ||
910 | 0x78, /* 0111100 */ | ||
911 | 0xcc, /* 1100110 */ | ||
912 | 0xcc, /* 1100110 */ | ||
913 | 0xcc, /* 1100110 */ | ||
914 | 0x78, /* 0111100 */ | ||
915 | 0xcc, /* 1100110 */ | ||
916 | 0xcc, /* 1100110 */ | ||
917 | 0xcc, /* 1100110 */ | ||
918 | 0xcc, /* 1100110 */ | ||
919 | 0x78, /* 0111100 */ | ||
920 | 0x00, /* 0000000 */ | ||
921 | 0x00, /* 0000000 */ | ||
922 | 0x00, /* 0000000 */ | ||
923 | |||
924 | /* 57 0x39 '9' */ | ||
925 | 0x00, /* 0000000 */ | ||
926 | 0x78, /* 0111100 */ | ||
927 | 0xcc, /* 1100110 */ | ||
928 | 0xcc, /* 1100110 */ | ||
929 | 0xcc, /* 1100110 */ | ||
930 | 0x7c, /* 0111110 */ | ||
931 | 0x0c, /* 0000110 */ | ||
932 | 0x0c, /* 0000110 */ | ||
933 | 0x0c, /* 0000110 */ | ||
934 | 0x18, /* 0001100 */ | ||
935 | 0x70, /* 0111000 */ | ||
936 | 0x00, /* 0000000 */ | ||
937 | 0x00, /* 0000000 */ | ||
938 | 0x00, /* 0000000 */ | ||
939 | |||
940 | /* 58 0x3a ':' */ | ||
941 | 0x00, /* 0000000 */ | ||
942 | 0x00, /* 0000000 */ | ||
943 | 0x00, /* 0000000 */ | ||
944 | 0x18, /* 0001100 */ | ||
945 | 0x18, /* 0001100 */ | ||
946 | 0x00, /* 0000000 */ | ||
947 | 0x00, /* 0000000 */ | ||
948 | 0x00, /* 0000000 */ | ||
949 | 0x18, /* 0001100 */ | ||
950 | 0x18, /* 0001100 */ | ||
951 | 0x00, /* 0000000 */ | ||
952 | 0x00, /* 0000000 */ | ||
953 | 0x00, /* 0000000 */ | ||
954 | 0x00, /* 0000000 */ | ||
955 | |||
956 | /* 59 0x3b ';' */ | ||
957 | 0x00, /* 0000000 */ | ||
958 | 0x00, /* 0000000 */ | ||
959 | 0x00, /* 0000000 */ | ||
960 | 0x18, /* 0001100 */ | ||
961 | 0x18, /* 0001100 */ | ||
962 | 0x00, /* 0000000 */ | ||
963 | 0x00, /* 0000000 */ | ||
964 | 0x00, /* 0000000 */ | ||
965 | 0x18, /* 0001100 */ | ||
966 | 0x18, /* 0001100 */ | ||
967 | 0x30, /* 0011000 */ | ||
968 | 0x00, /* 0000000 */ | ||
969 | 0x00, /* 0000000 */ | ||
970 | 0x00, /* 0000000 */ | ||
971 | |||
972 | /* 60 0x3c '<' */ | ||
973 | 0x00, /* 0000000 */ | ||
974 | 0x00, /* 0000000 */ | ||
975 | 0x04, /* 0000010 */ | ||
976 | 0x0c, /* 0000110 */ | ||
977 | 0x18, /* 0001100 */ | ||
978 | 0x30, /* 0011000 */ | ||
979 | 0x60, /* 0110000 */ | ||
980 | 0x30, /* 0011000 */ | ||
981 | 0x18, /* 0001100 */ | ||
982 | 0x0c, /* 0000110 */ | ||
983 | 0x04, /* 0000010 */ | ||
984 | 0x00, /* 0000000 */ | ||
985 | 0x00, /* 0000000 */ | ||
986 | 0x00, /* 0000000 */ | ||
987 | |||
988 | /* 61 0x3d '=' */ | ||
989 | 0x00, /* 0000000 */ | ||
990 | 0x00, /* 0000000 */ | ||
991 | 0x00, /* 0000000 */ | ||
992 | 0x00, /* 0000000 */ | ||
993 | 0x7c, /* 0111110 */ | ||
994 | 0x00, /* 0000000 */ | ||
995 | 0x00, /* 0000000 */ | ||
996 | 0x7c, /* 0111110 */ | ||
997 | 0x00, /* 0000000 */ | ||
998 | 0x00, /* 0000000 */ | ||
999 | 0x00, /* 0000000 */ | ||
1000 | 0x00, /* 0000000 */ | ||
1001 | 0x00, /* 0000000 */ | ||
1002 | 0x00, /* 0000000 */ | ||
1003 | |||
1004 | /* 62 0x3e '>' */ | ||
1005 | 0x00, /* 0000000 */ | ||
1006 | 0x00, /* 0000000 */ | ||
1007 | 0x40, /* 0100000 */ | ||
1008 | 0x60, /* 0110000 */ | ||
1009 | 0x30, /* 0011000 */ | ||
1010 | 0x18, /* 0001100 */ | ||
1011 | 0x0c, /* 0000110 */ | ||
1012 | 0x18, /* 0001100 */ | ||
1013 | 0x30, /* 0011000 */ | ||
1014 | 0x60, /* 0110000 */ | ||
1015 | 0x40, /* 0100000 */ | ||
1016 | 0x00, /* 0000000 */ | ||
1017 | 0x00, /* 0000000 */ | ||
1018 | 0x00, /* 0000000 */ | ||
1019 | |||
1020 | /* 63 0x3f '?' */ | ||
1021 | 0x00, /* 0000000 */ | ||
1022 | 0x78, /* 0111100 */ | ||
1023 | 0xcc, /* 1100110 */ | ||
1024 | 0xcc, /* 1100110 */ | ||
1025 | 0x18, /* 0001100 */ | ||
1026 | 0x30, /* 0011000 */ | ||
1027 | 0x30, /* 0011000 */ | ||
1028 | 0x30, /* 0011000 */ | ||
1029 | 0x00, /* 0000000 */ | ||
1030 | 0x30, /* 0011000 */ | ||
1031 | 0x30, /* 0011000 */ | ||
1032 | 0x00, /* 0000000 */ | ||
1033 | 0x00, /* 0000000 */ | ||
1034 | 0x00, /* 0000000 */ | ||
1035 | |||
1036 | /* 64 0x40 '@' */ | ||
1037 | 0x00, /* 0000000 */ | ||
1038 | 0x00, /* 0000000 */ | ||
1039 | 0x00, /* 0000000 */ | ||
1040 | 0x78, /* 0111100 */ | ||
1041 | 0xcc, /* 1100110 */ | ||
1042 | 0xcc, /* 1100110 */ | ||
1043 | 0xdc, /* 1101110 */ | ||
1044 | 0xdc, /* 1101110 */ | ||
1045 | 0xd8, /* 1101100 */ | ||
1046 | 0xc0, /* 1100000 */ | ||
1047 | 0x78, /* 0111100 */ | ||
1048 | 0x00, /* 0000000 */ | ||
1049 | 0x00, /* 0000000 */ | ||
1050 | 0x00, /* 0000000 */ | ||
1051 | |||
1052 | /* 65 0x41 'A' */ | ||
1053 | 0x00, /* 0000000 */ | ||
1054 | 0x30, /* 0011000 */ | ||
1055 | 0x78, /* 0111100 */ | ||
1056 | 0xcc, /* 1100110 */ | ||
1057 | 0xcc, /* 1100110 */ | ||
1058 | 0xcc, /* 1100110 */ | ||
1059 | 0xfc, /* 1111110 */ | ||
1060 | 0xcc, /* 1100110 */ | ||
1061 | 0xcc, /* 1100110 */ | ||
1062 | 0xcc, /* 1100110 */ | ||
1063 | 0xcc, /* 1100110 */ | ||
1064 | 0x00, /* 0000000 */ | ||
1065 | 0x00, /* 0000000 */ | ||
1066 | 0x00, /* 0000000 */ | ||
1067 | |||
1068 | /* 66 0x42 'B' */ | ||
1069 | 0x00, /* 0000000 */ | ||
1070 | 0xf8, /* 1111100 */ | ||
1071 | 0x6c, /* 0110110 */ | ||
1072 | 0x6c, /* 0110110 */ | ||
1073 | 0x6c, /* 0110110 */ | ||
1074 | 0x78, /* 0111100 */ | ||
1075 | 0x6c, /* 0110110 */ | ||
1076 | 0x6c, /* 0110110 */ | ||
1077 | 0x6c, /* 0110110 */ | ||
1078 | 0x6c, /* 0110110 */ | ||
1079 | 0xf8, /* 1111100 */ | ||
1080 | 0x00, /* 0000000 */ | ||
1081 | 0x00, /* 0000000 */ | ||
1082 | 0x00, /* 0000000 */ | ||
1083 | |||
1084 | /* 67 0x43 'C' */ | ||
1085 | 0x00, /* 0000000 */ | ||
1086 | 0x38, /* 0011100 */ | ||
1087 | 0x6c, /* 0110110 */ | ||
1088 | 0xc4, /* 1100010 */ | ||
1089 | 0xc0, /* 1100000 */ | ||
1090 | 0xc0, /* 1100000 */ | ||
1091 | 0xc0, /* 1100000 */ | ||
1092 | 0xc0, /* 1100000 */ | ||
1093 | 0xc4, /* 1100010 */ | ||
1094 | 0x6c, /* 0110110 */ | ||
1095 | 0x38, /* 0011100 */ | ||
1096 | 0x00, /* 0000000 */ | ||
1097 | 0x00, /* 0000000 */ | ||
1098 | 0x00, /* 0000000 */ | ||
1099 | |||
1100 | /* 68 0x44 'D' */ | ||
1101 | 0x00, /* 0000000 */ | ||
1102 | 0xf0, /* 1111000 */ | ||
1103 | 0xd8, /* 1101100 */ | ||
1104 | 0xcc, /* 1100110 */ | ||
1105 | 0xcc, /* 1100110 */ | ||
1106 | 0xcc, /* 1100110 */ | ||
1107 | 0xcc, /* 1100110 */ | ||
1108 | 0xcc, /* 1100110 */ | ||
1109 | 0xcc, /* 1100110 */ | ||
1110 | 0xd8, /* 1101100 */ | ||
1111 | 0xf0, /* 1111000 */ | ||
1112 | 0x00, /* 0000000 */ | ||
1113 | 0x00, /* 0000000 */ | ||
1114 | 0x00, /* 0000000 */ | ||
1115 | |||
1116 | /* 69 0x45 'E' */ | ||
1117 | 0x00, /* 0000000 */ | ||
1118 | 0x7c, /* 0111110 */ | ||
1119 | 0x6c, /* 0110110 */ | ||
1120 | 0x64, /* 0110010 */ | ||
1121 | 0x68, /* 0110100 */ | ||
1122 | 0x78, /* 0111100 */ | ||
1123 | 0x68, /* 0110100 */ | ||
1124 | 0x60, /* 0110000 */ | ||
1125 | 0x64, /* 0110010 */ | ||
1126 | 0x6c, /* 0110110 */ | ||
1127 | 0x7c, /* 0111110 */ | ||
1128 | 0x00, /* 0000000 */ | ||
1129 | 0x00, /* 0000000 */ | ||
1130 | 0x00, /* 0000000 */ | ||
1131 | |||
1132 | /* 70 0x46 'F' */ | ||
1133 | 0x00, /* 0000000 */ | ||
1134 | 0x7c, /* 0111110 */ | ||
1135 | 0x64, /* 0110010 */ | ||
1136 | 0x60, /* 0110000 */ | ||
1137 | 0x68, /* 0110100 */ | ||
1138 | 0x78, /* 0111100 */ | ||
1139 | 0x68, /* 0110100 */ | ||
1140 | 0x60, /* 0110000 */ | ||
1141 | 0x60, /* 0110000 */ | ||
1142 | 0x60, /* 0110000 */ | ||
1143 | 0x70, /* 0111000 */ | ||
1144 | 0x00, /* 0000000 */ | ||
1145 | 0x00, /* 0000000 */ | ||
1146 | 0x00, /* 0000000 */ | ||
1147 | |||
1148 | /* 71 0x47 'G' */ | ||
1149 | 0x00, /* 0000000 */ | ||
1150 | 0x38, /* 0011100 */ | ||
1151 | 0x6c, /* 0110110 */ | ||
1152 | 0xc4, /* 1100010 */ | ||
1153 | 0xc0, /* 1100000 */ | ||
1154 | 0xc0, /* 1100000 */ | ||
1155 | 0xdc, /* 1101110 */ | ||
1156 | 0xcc, /* 1100110 */ | ||
1157 | 0xcc, /* 1100110 */ | ||
1158 | 0x6c, /* 0110110 */ | ||
1159 | 0x34, /* 0011010 */ | ||
1160 | 0x00, /* 0000000 */ | ||
1161 | 0x00, /* 0000000 */ | ||
1162 | 0x00, /* 0000000 */ | ||
1163 | |||
1164 | /* 72 0x48 'H' */ | ||
1165 | 0x00, /* 0000000 */ | ||
1166 | 0xcc, /* 1100110 */ | ||
1167 | 0xcc, /* 1100110 */ | ||
1168 | 0xcc, /* 1100110 */ | ||
1169 | 0xcc, /* 1100110 */ | ||
1170 | 0xfc, /* 1111110 */ | ||
1171 | 0xcc, /* 1100110 */ | ||
1172 | 0xcc, /* 1100110 */ | ||
1173 | 0xcc, /* 1100110 */ | ||
1174 | 0xcc, /* 1100110 */ | ||
1175 | 0xcc, /* 1100110 */ | ||
1176 | 0x00, /* 0000000 */ | ||
1177 | 0x00, /* 0000000 */ | ||
1178 | 0x00, /* 0000000 */ | ||
1179 | |||
1180 | /* 73 0x49 'I' */ | ||
1181 | 0x00, /* 0000000 */ | ||
1182 | 0x3c, /* 0011110 */ | ||
1183 | 0x18, /* 0001100 */ | ||
1184 | 0x18, /* 0001100 */ | ||
1185 | 0x18, /* 0001100 */ | ||
1186 | 0x18, /* 0001100 */ | ||
1187 | 0x18, /* 0001100 */ | ||
1188 | 0x18, /* 0001100 */ | ||
1189 | 0x18, /* 0001100 */ | ||
1190 | 0x18, /* 0001100 */ | ||
1191 | 0x3c, /* 0011110 */ | ||
1192 | 0x00, /* 0000000 */ | ||
1193 | 0x00, /* 0000000 */ | ||
1194 | 0x00, /* 0000000 */ | ||
1195 | |||
1196 | /* 74 0x4a 'J' */ | ||
1197 | 0x00, /* 0000000 */ | ||
1198 | 0x1c, /* 0001110 */ | ||
1199 | 0x0c, /* 0000110 */ | ||
1200 | 0x0c, /* 0000110 */ | ||
1201 | 0x0c, /* 0000110 */ | ||
1202 | 0x0c, /* 0000110 */ | ||
1203 | 0x0c, /* 0000110 */ | ||
1204 | 0xcc, /* 1100110 */ | ||
1205 | 0xcc, /* 1100110 */ | ||
1206 | 0xcc, /* 1100110 */ | ||
1207 | 0x78, /* 0111100 */ | ||
1208 | 0x00, /* 0000000 */ | ||
1209 | 0x00, /* 0000000 */ | ||
1210 | 0x00, /* 0000000 */ | ||
1211 | |||
1212 | /* 75 0x4b 'K' */ | ||
1213 | 0x00, /* 0000000 */ | ||
1214 | 0xcc, /* 1100110 */ | ||
1215 | 0xcc, /* 1100110 */ | ||
1216 | 0xcc, /* 1100110 */ | ||
1217 | 0xd8, /* 1101100 */ | ||
1218 | 0xf0, /* 1111000 */ | ||
1219 | 0xf0, /* 1111000 */ | ||
1220 | 0xd8, /* 1101100 */ | ||
1221 | 0xcc, /* 1100110 */ | ||
1222 | 0xcc, /* 1100110 */ | ||
1223 | 0xcc, /* 1100110 */ | ||
1224 | 0x00, /* 0000000 */ | ||
1225 | 0x00, /* 0000000 */ | ||
1226 | 0x00, /* 0000000 */ | ||
1227 | |||
1228 | /* 76 0x4c 'L' */ | ||
1229 | 0x00, /* 0000000 */ | ||
1230 | 0xc0, /* 1100000 */ | ||
1231 | 0xc0, /* 1100000 */ | ||
1232 | 0xc0, /* 1100000 */ | ||
1233 | 0xc0, /* 1100000 */ | ||
1234 | 0xc0, /* 1100000 */ | ||
1235 | 0xc0, /* 1100000 */ | ||
1236 | 0xc0, /* 1100000 */ | ||
1237 | 0xc4, /* 1100010 */ | ||
1238 | 0xcc, /* 1100110 */ | ||
1239 | 0xfc, /* 1111110 */ | ||
1240 | 0x00, /* 0000000 */ | ||
1241 | 0x00, /* 0000000 */ | ||
1242 | 0x00, /* 0000000 */ | ||
1243 | |||
1244 | /* 77 0x4d 'M' */ | ||
1245 | 0x00, /* 0000000 */ | ||
1246 | 0xc6, /* 1100011 */ | ||
1247 | 0xee, /* 1110111 */ | ||
1248 | 0xfe, /* 1111111 */ | ||
1249 | 0xfe, /* 1111111 */ | ||
1250 | 0xd6, /* 1101011 */ | ||
1251 | 0xc6, /* 1100011 */ | ||
1252 | 0xc6, /* 1100011 */ | ||
1253 | 0xc6, /* 1100011 */ | ||
1254 | 0xc6, /* 1100011 */ | ||
1255 | 0xc6, /* 1100011 */ | ||
1256 | 0x00, /* 0000000 */ | ||
1257 | 0x00, /* 0000000 */ | ||
1258 | 0x00, /* 0000000 */ | ||
1259 | |||
1260 | /* 78 0x4e 'N' */ | ||
1261 | 0x00, /* 0000000 */ | ||
1262 | 0xcc, /* 1100110 */ | ||
1263 | 0xec, /* 1110110 */ | ||
1264 | 0xec, /* 1110110 */ | ||
1265 | 0xfc, /* 1111110 */ | ||
1266 | 0xdc, /* 1101110 */ | ||
1267 | 0xdc, /* 1101110 */ | ||
1268 | 0xcc, /* 1100110 */ | ||
1269 | 0xcc, /* 1100110 */ | ||
1270 | 0xcc, /* 1100110 */ | ||
1271 | 0xcc, /* 1100110 */ | ||
1272 | 0x00, /* 0000000 */ | ||
1273 | 0x00, /* 0000000 */ | ||
1274 | 0x00, /* 0000000 */ | ||
1275 | |||
1276 | /* 79 0x4f 'O' */ | ||
1277 | 0x00, /* 0000000 */ | ||
1278 | 0x78, /* 0111100 */ | ||
1279 | 0xcc, /* 1100110 */ | ||
1280 | 0xcc, /* 1100110 */ | ||
1281 | 0xcc, /* 1100110 */ | ||
1282 | 0xcc, /* 1100110 */ | ||
1283 | 0xcc, /* 1100110 */ | ||
1284 | 0xcc, /* 1100110 */ | ||
1285 | 0xcc, /* 1100110 */ | ||
1286 | 0xcc, /* 1100110 */ | ||
1287 | 0x78, /* 0111100 */ | ||
1288 | 0x00, /* 0000000 */ | ||
1289 | 0x00, /* 0000000 */ | ||
1290 | 0x00, /* 0000000 */ | ||
1291 | |||
1292 | /* 80 0x50 'P' */ | ||
1293 | 0x00, /* 0000000 */ | ||
1294 | 0xf8, /* 1111100 */ | ||
1295 | 0xcc, /* 1100110 */ | ||
1296 | 0xcc, /* 1100110 */ | ||
1297 | 0xcc, /* 1100110 */ | ||
1298 | 0xf8, /* 1111100 */ | ||
1299 | 0xc0, /* 1100000 */ | ||
1300 | 0xc0, /* 1100000 */ | ||
1301 | 0xc0, /* 1100000 */ | ||
1302 | 0xc0, /* 1100000 */ | ||
1303 | 0xc0, /* 1100000 */ | ||
1304 | 0x00, /* 0000000 */ | ||
1305 | 0x00, /* 0000000 */ | ||
1306 | 0x00, /* 0000000 */ | ||
1307 | |||
1308 | /* 81 0x51 'Q' */ | ||
1309 | 0x00, /* 0000000 */ | ||
1310 | 0x78, /* 0111100 */ | ||
1311 | 0xcc, /* 1100110 */ | ||
1312 | 0xcc, /* 1100110 */ | ||
1313 | 0xcc, /* 1100110 */ | ||
1314 | 0xcc, /* 1100110 */ | ||
1315 | 0xcc, /* 1100110 */ | ||
1316 | 0xcc, /* 1100110 */ | ||
1317 | 0xcc, /* 1100110 */ | ||
1318 | 0xdc, /* 1101110 */ | ||
1319 | 0x78, /* 0111100 */ | ||
1320 | 0x18, /* 0001100 */ | ||
1321 | 0x1c, /* 0001110 */ | ||
1322 | 0x00, /* 0000000 */ | ||
1323 | |||
1324 | /* 82 0x52 'R' */ | ||
1325 | 0x00, /* 0000000 */ | ||
1326 | 0xf8, /* 1111100 */ | ||
1327 | 0xcc, /* 1100110 */ | ||
1328 | 0xcc, /* 1100110 */ | ||
1329 | 0xcc, /* 1100110 */ | ||
1330 | 0xf8, /* 1111100 */ | ||
1331 | 0xd8, /* 1101100 */ | ||
1332 | 0xcc, /* 1100110 */ | ||
1333 | 0xcc, /* 1100110 */ | ||
1334 | 0xcc, /* 1100110 */ | ||
1335 | 0xcc, /* 1100110 */ | ||
1336 | 0x00, /* 0000000 */ | ||
1337 | 0x00, /* 0000000 */ | ||
1338 | 0x00, /* 0000000 */ | ||
1339 | |||
1340 | /* 83 0x53 'S' */ | ||
1341 | 0x00, /* 0000000 */ | ||
1342 | 0x7c, /* 0111110 */ | ||
1343 | 0xc4, /* 1100010 */ | ||
1344 | 0xc0, /* 1100000 */ | ||
1345 | 0xc0, /* 1100000 */ | ||
1346 | 0x60, /* 0110000 */ | ||
1347 | 0x38, /* 0011100 */ | ||
1348 | 0x0c, /* 0000110 */ | ||
1349 | 0x0c, /* 0000110 */ | ||
1350 | 0x8c, /* 1000110 */ | ||
1351 | 0xf8, /* 1111100 */ | ||
1352 | 0x00, /* 0000000 */ | ||
1353 | 0x00, /* 0000000 */ | ||
1354 | 0x00, /* 0000000 */ | ||
1355 | |||
1356 | /* 84 0x54 'T' */ | ||
1357 | 0x00, /* 0000000 */ | ||
1358 | 0xfc, /* 1111110 */ | ||
1359 | 0xfc, /* 1111110 */ | ||
1360 | 0xb4, /* 1011010 */ | ||
1361 | 0x30, /* 0011000 */ | ||
1362 | 0x30, /* 0011000 */ | ||
1363 | 0x30, /* 0011000 */ | ||
1364 | 0x30, /* 0011000 */ | ||
1365 | 0x30, /* 0011000 */ | ||
1366 | 0x30, /* 0011000 */ | ||
1367 | 0x78, /* 0111100 */ | ||
1368 | 0x00, /* 0000000 */ | ||
1369 | 0x00, /* 0000000 */ | ||
1370 | 0x00, /* 0000000 */ | ||
1371 | |||
1372 | /* 85 0x55 'U' */ | ||
1373 | 0x00, /* 0000000 */ | ||
1374 | 0xcc, /* 1100110 */ | ||
1375 | 0xcc, /* 1100110 */ | ||
1376 | 0xcc, /* 1100110 */ | ||
1377 | 0xcc, /* 1100110 */ | ||
1378 | 0xcc, /* 1100110 */ | ||
1379 | 0xcc, /* 1100110 */ | ||
1380 | 0xcc, /* 1100110 */ | ||
1381 | 0xcc, /* 1100110 */ | ||
1382 | 0xcc, /* 1100110 */ | ||
1383 | 0x78, /* 0111100 */ | ||
1384 | 0x00, /* 0000000 */ | ||
1385 | 0x00, /* 0000000 */ | ||
1386 | 0x00, /* 0000000 */ | ||
1387 | |||
1388 | /* 86 0x56 'V' */ | ||
1389 | 0x00, /* 0000000 */ | ||
1390 | 0xcc, /* 1100110 */ | ||
1391 | 0xcc, /* 1100110 */ | ||
1392 | 0xcc, /* 1100110 */ | ||
1393 | 0xcc, /* 1100110 */ | ||
1394 | 0xcc, /* 1100110 */ | ||
1395 | 0xcc, /* 1100110 */ | ||
1396 | 0xcc, /* 1100110 */ | ||
1397 | 0x78, /* 0111100 */ | ||
1398 | 0x78, /* 0111100 */ | ||
1399 | 0x30, /* 0011000 */ | ||
1400 | 0x00, /* 0000000 */ | ||
1401 | 0x00, /* 0000000 */ | ||
1402 | 0x00, /* 0000000 */ | ||
1403 | |||
1404 | /* 87 0x57 'W' */ | ||
1405 | 0x00, /* 0000000 */ | ||
1406 | 0xcc, /* 1100110 */ | ||
1407 | 0xcc, /* 1100110 */ | ||
1408 | 0xcc, /* 1100110 */ | ||
1409 | 0xcc, /* 1100110 */ | ||
1410 | 0xcc, /* 1100110 */ | ||
1411 | 0xcc, /* 1100110 */ | ||
1412 | 0xcc, /* 1100110 */ | ||
1413 | 0xfc, /* 1111110 */ | ||
1414 | 0xfc, /* 1111110 */ | ||
1415 | 0x48, /* 0100100 */ | ||
1416 | 0x00, /* 0000000 */ | ||
1417 | 0x00, /* 0000000 */ | ||
1418 | 0x00, /* 0000000 */ | ||
1419 | |||
1420 | /* 88 0x58 'X' */ | ||
1421 | 0x00, /* 0000000 */ | ||
1422 | 0xcc, /* 1100110 */ | ||
1423 | 0xcc, /* 1100110 */ | ||
1424 | 0x78, /* 0111100 */ | ||
1425 | 0x78, /* 0111100 */ | ||
1426 | 0x30, /* 0011000 */ | ||
1427 | 0x30, /* 0011000 */ | ||
1428 | 0x78, /* 0111100 */ | ||
1429 | 0x78, /* 0111100 */ | ||
1430 | 0xcc, /* 1100110 */ | ||
1431 | 0xcc, /* 1100110 */ | ||
1432 | 0x00, /* 0000000 */ | ||
1433 | 0x00, /* 0000000 */ | ||
1434 | 0x00, /* 0000000 */ | ||
1435 | |||
1436 | /* 89 0x59 'Y' */ | ||
1437 | 0x00, /* 0000000 */ | ||
1438 | 0xcc, /* 1100110 */ | ||
1439 | 0xcc, /* 1100110 */ | ||
1440 | 0xcc, /* 1100110 */ | ||
1441 | 0xcc, /* 1100110 */ | ||
1442 | 0x78, /* 0111100 */ | ||
1443 | 0x30, /* 0011000 */ | ||
1444 | 0x30, /* 0011000 */ | ||
1445 | 0x30, /* 0011000 */ | ||
1446 | 0x30, /* 0011000 */ | ||
1447 | 0x30, /* 0011000 */ | ||
1448 | 0x00, /* 0000000 */ | ||
1449 | 0x00, /* 0000000 */ | ||
1450 | 0x00, /* 0000000 */ | ||
1451 | |||
1452 | /* 90 0x5a 'Z' */ | ||
1453 | 0x00, /* 0000000 */ | ||
1454 | 0xfc, /* 1111110 */ | ||
1455 | 0xcc, /* 1100110 */ | ||
1456 | 0x8c, /* 1000110 */ | ||
1457 | 0x18, /* 0001100 */ | ||
1458 | 0x18, /* 0001100 */ | ||
1459 | 0x30, /* 0011000 */ | ||
1460 | 0x60, /* 0110000 */ | ||
1461 | 0xc4, /* 1100010 */ | ||
1462 | 0xcc, /* 1100110 */ | ||
1463 | 0xfc, /* 1111110 */ | ||
1464 | 0x00, /* 0000000 */ | ||
1465 | 0x00, /* 0000000 */ | ||
1466 | 0x00, /* 0000000 */ | ||
1467 | |||
1468 | /* 91 0x5b '[' */ | ||
1469 | 0x00, /* 0000000 */ | ||
1470 | 0x78, /* 0111100 */ | ||
1471 | 0x60, /* 0110000 */ | ||
1472 | 0x60, /* 0110000 */ | ||
1473 | 0x60, /* 0110000 */ | ||
1474 | 0x60, /* 0110000 */ | ||
1475 | 0x60, /* 0110000 */ | ||
1476 | 0x60, /* 0110000 */ | ||
1477 | 0x60, /* 0110000 */ | ||
1478 | 0x60, /* 0110000 */ | ||
1479 | 0x78, /* 0111100 */ | ||
1480 | 0x00, /* 0000000 */ | ||
1481 | 0x00, /* 0000000 */ | ||
1482 | 0x00, /* 0000000 */ | ||
1483 | |||
1484 | /* 92 0x5c '\' */ | ||
1485 | 0x00, /* 0000000 */ | ||
1486 | 0x00, /* 0000000 */ | ||
1487 | 0x00, /* 0000000 */ | ||
1488 | 0x80, /* 1000000 */ | ||
1489 | 0xc0, /* 1100000 */ | ||
1490 | 0xe0, /* 1110000 */ | ||
1491 | 0x70, /* 0111000 */ | ||
1492 | 0x38, /* 0011100 */ | ||
1493 | 0x1c, /* 0001110 */ | ||
1494 | 0x0c, /* 0000110 */ | ||
1495 | 0x04, /* 0000010 */ | ||
1496 | 0x00, /* 0000000 */ | ||
1497 | 0x00, /* 0000000 */ | ||
1498 | 0x00, /* 0000000 */ | ||
1499 | |||
1500 | /* 93 0x5d ']' */ | ||
1501 | 0x00, /* 0000000 */ | ||
1502 | 0x78, /* 0111100 */ | ||
1503 | 0x18, /* 0001100 */ | ||
1504 | 0x18, /* 0001100 */ | ||
1505 | 0x18, /* 0001100 */ | ||
1506 | 0x18, /* 0001100 */ | ||
1507 | 0x18, /* 0001100 */ | ||
1508 | 0x18, /* 0001100 */ | ||
1509 | 0x18, /* 0001100 */ | ||
1510 | 0x18, /* 0001100 */ | ||
1511 | 0x78, /* 0111100 */ | ||
1512 | 0x00, /* 0000000 */ | ||
1513 | 0x00, /* 0000000 */ | ||
1514 | 0x00, /* 0000000 */ | ||
1515 | |||
1516 | /* 94 0x5e '^' */ | ||
1517 | 0x10, /* 0001000 */ | ||
1518 | 0x38, /* 0011100 */ | ||
1519 | 0x6c, /* 0110110 */ | ||
1520 | 0xc6, /* 1100011 */ | ||
1521 | 0x00, /* 0000000 */ | ||
1522 | 0x00, /* 0000000 */ | ||
1523 | 0x00, /* 0000000 */ | ||
1524 | 0x00, /* 0000000 */ | ||
1525 | 0x00, /* 0000000 */ | ||
1526 | 0x00, /* 0000000 */ | ||
1527 | 0x00, /* 0000000 */ | ||
1528 | 0x00, /* 0000000 */ | ||
1529 | 0x00, /* 0000000 */ | ||
1530 | 0x00, /* 0000000 */ | ||
1531 | |||
1532 | /* 95 0x5f '_' */ | ||
1533 | 0x00, /* 0000000 */ | ||
1534 | 0x00, /* 0000000 */ | ||
1535 | 0x00, /* 0000000 */ | ||
1536 | 0x00, /* 0000000 */ | ||
1537 | 0x00, /* 0000000 */ | ||
1538 | 0x00, /* 0000000 */ | ||
1539 | 0x00, /* 0000000 */ | ||
1540 | 0x00, /* 0000000 */ | ||
1541 | 0x00, /* 0000000 */ | ||
1542 | 0x00, /* 0000000 */ | ||
1543 | 0x00, /* 0000000 */ | ||
1544 | 0x00, /* 0000000 */ | ||
1545 | 0xfe, /* 1111111 */ | ||
1546 | 0x00, /* 0000000 */ | ||
1547 | |||
1548 | /* 96 0x60 '`' */ | ||
1549 | 0x00, /* 0000000 */ | ||
1550 | 0x60, /* 0110000 */ | ||
1551 | 0x30, /* 0011000 */ | ||
1552 | 0x18, /* 0001100 */ | ||
1553 | 0x00, /* 0000000 */ | ||
1554 | 0x00, /* 0000000 */ | ||
1555 | 0x00, /* 0000000 */ | ||
1556 | 0x00, /* 0000000 */ | ||
1557 | 0x00, /* 0000000 */ | ||
1558 | 0x00, /* 0000000 */ | ||
1559 | 0x00, /* 0000000 */ | ||
1560 | 0x00, /* 0000000 */ | ||
1561 | 0x00, /* 0000000 */ | ||
1562 | 0x00, /* 0000000 */ | ||
1563 | |||
1564 | /* 97 0x61 'a' */ | ||
1565 | 0x00, /* 0000000 */ | ||
1566 | 0x00, /* 0000000 */ | ||
1567 | 0x00, /* 0000000 */ | ||
1568 | 0x00, /* 0000000 */ | ||
1569 | 0x78, /* 0111100 */ | ||
1570 | 0x0c, /* 0000110 */ | ||
1571 | 0x7c, /* 0111110 */ | ||
1572 | 0xcc, /* 1100110 */ | ||
1573 | 0xcc, /* 1100110 */ | ||
1574 | 0xcc, /* 1100110 */ | ||
1575 | 0x76, /* 0111011 */ | ||
1576 | 0x00, /* 0000000 */ | ||
1577 | 0x00, /* 0000000 */ | ||
1578 | 0x00, /* 0000000 */ | ||
1579 | |||
1580 | /* 98 0x62 'b' */ | ||
1581 | 0x00, /* 0000000 */ | ||
1582 | 0xc0, /* 1100000 */ | ||
1583 | 0xc0, /* 1100000 */ | ||
1584 | 0xc0, /* 1100000 */ | ||
1585 | 0xf0, /* 1111000 */ | ||
1586 | 0xd8, /* 1101100 */ | ||
1587 | 0xcc, /* 1100110 */ | ||
1588 | 0xcc, /* 1100110 */ | ||
1589 | 0xcc, /* 1100110 */ | ||
1590 | 0xcc, /* 1100110 */ | ||
1591 | 0xf8, /* 1111100 */ | ||
1592 | 0x00, /* 0000000 */ | ||
1593 | 0x00, /* 0000000 */ | ||
1594 | 0x00, /* 0000000 */ | ||
1595 | |||
1596 | /* 99 0x63 'c' */ | ||
1597 | 0x00, /* 0000000 */ | ||
1598 | 0x00, /* 0000000 */ | ||
1599 | 0x00, /* 0000000 */ | ||
1600 | 0x00, /* 0000000 */ | ||
1601 | 0x78, /* 0111100 */ | ||
1602 | 0xcc, /* 1100110 */ | ||
1603 | 0xc0, /* 1100000 */ | ||
1604 | 0xc0, /* 1100000 */ | ||
1605 | 0xc0, /* 1100000 */ | ||
1606 | 0xcc, /* 1100110 */ | ||
1607 | 0x78, /* 0111100 */ | ||
1608 | 0x00, /* 0000000 */ | ||
1609 | 0x00, /* 0000000 */ | ||
1610 | 0x00, /* 0000000 */ | ||
1611 | |||
1612 | /* 100 0x64 'd' */ | ||
1613 | 0x00, /* 0000000 */ | ||
1614 | 0x1c, /* 0001110 */ | ||
1615 | 0x0c, /* 0000110 */ | ||
1616 | 0x0c, /* 0000110 */ | ||
1617 | 0x3c, /* 0011110 */ | ||
1618 | 0x6c, /* 0110110 */ | ||
1619 | 0xcc, /* 1100110 */ | ||
1620 | 0xcc, /* 1100110 */ | ||
1621 | 0xcc, /* 1100110 */ | ||
1622 | 0xcc, /* 1100110 */ | ||
1623 | 0x76, /* 0111011 */ | ||
1624 | 0x00, /* 0000000 */ | ||
1625 | 0x00, /* 0000000 */ | ||
1626 | 0x00, /* 0000000 */ | ||
1627 | |||
1628 | /* 101 0x65 'e' */ | ||
1629 | 0x00, /* 0000000 */ | ||
1630 | 0x00, /* 0000000 */ | ||
1631 | 0x00, /* 0000000 */ | ||
1632 | 0x00, /* 0000000 */ | ||
1633 | 0x78, /* 0111100 */ | ||
1634 | 0xcc, /* 1100110 */ | ||
1635 | 0xfc, /* 1111110 */ | ||
1636 | 0xc0, /* 1100000 */ | ||
1637 | 0xc0, /* 1100000 */ | ||
1638 | 0xcc, /* 1100110 */ | ||
1639 | 0x78, /* 0111100 */ | ||
1640 | 0x00, /* 0000000 */ | ||
1641 | 0x00, /* 0000000 */ | ||
1642 | 0x00, /* 0000000 */ | ||
1643 | |||
1644 | /* 102 0x66 'f' */ | ||
1645 | 0x00, /* 0000000 */ | ||
1646 | 0x38, /* 0011100 */ | ||
1647 | 0x6c, /* 0110110 */ | ||
1648 | 0x64, /* 0110010 */ | ||
1649 | 0x60, /* 0110000 */ | ||
1650 | 0xf0, /* 1111000 */ | ||
1651 | 0x60, /* 0110000 */ | ||
1652 | 0x60, /* 0110000 */ | ||
1653 | 0x60, /* 0110000 */ | ||
1654 | 0x60, /* 0110000 */ | ||
1655 | 0xf0, /* 1111000 */ | ||
1656 | 0x00, /* 0000000 */ | ||
1657 | 0x00, /* 0000000 */ | ||
1658 | 0x00, /* 0000000 */ | ||
1659 | |||
1660 | /* 103 0x67 'g' */ | ||
1661 | 0x00, /* 0000000 */ | ||
1662 | 0x00, /* 0000000 */ | ||
1663 | 0x00, /* 0000000 */ | ||
1664 | 0x00, /* 0000000 */ | ||
1665 | 0x76, /* 0111011 */ | ||
1666 | 0xcc, /* 1100110 */ | ||
1667 | 0xcc, /* 1100110 */ | ||
1668 | 0xcc, /* 1100110 */ | ||
1669 | 0xcc, /* 1100110 */ | ||
1670 | 0xcc, /* 1100110 */ | ||
1671 | 0x7c, /* 0111110 */ | ||
1672 | 0x0c, /* 0000110 */ | ||
1673 | 0xcc, /* 1100110 */ | ||
1674 | 0x78, /* 0111100 */ | ||
1675 | |||
1676 | /* 104 0x68 'h' */ | ||
1677 | 0x00, /* 0000000 */ | ||
1678 | 0xc0, /* 1100000 */ | ||
1679 | 0xc0, /* 1100000 */ | ||
1680 | 0xc0, /* 1100000 */ | ||
1681 | 0xd8, /* 1101100 */ | ||
1682 | 0xec, /* 1110110 */ | ||
1683 | 0xcc, /* 1100110 */ | ||
1684 | 0xcc, /* 1100110 */ | ||
1685 | 0xcc, /* 1100110 */ | ||
1686 | 0xcc, /* 1100110 */ | ||
1687 | 0xcc, /* 1100110 */ | ||
1688 | 0x00, /* 0000000 */ | ||
1689 | 0x00, /* 0000000 */ | ||
1690 | 0x00, /* 0000000 */ | ||
1691 | |||
1692 | /* 105 0x69 'i' */ | ||
1693 | 0x00, /* 0000000 */ | ||
1694 | 0x30, /* 0011000 */ | ||
1695 | 0x30, /* 0011000 */ | ||
1696 | 0x00, /* 0000000 */ | ||
1697 | 0x70, /* 0111000 */ | ||
1698 | 0x30, /* 0011000 */ | ||
1699 | 0x30, /* 0011000 */ | ||
1700 | 0x30, /* 0011000 */ | ||
1701 | 0x30, /* 0011000 */ | ||
1702 | 0x30, /* 0011000 */ | ||
1703 | 0x78, /* 0111100 */ | ||
1704 | 0x00, /* 0000000 */ | ||
1705 | 0x00, /* 0000000 */ | ||
1706 | 0x00, /* 0000000 */ | ||
1707 | |||
1708 | /* 106 0x6a 'j' */ | ||
1709 | 0x00, /* 0000000 */ | ||
1710 | 0x0c, /* 0000110 */ | ||
1711 | 0x0c, /* 0000110 */ | ||
1712 | 0x00, /* 0000000 */ | ||
1713 | 0x1c, /* 0001110 */ | ||
1714 | 0x0c, /* 0000110 */ | ||
1715 | 0x0c, /* 0000110 */ | ||
1716 | 0x0c, /* 0000110 */ | ||
1717 | 0x0c, /* 0000110 */ | ||
1718 | 0x0c, /* 0000110 */ | ||
1719 | 0x0c, /* 0000110 */ | ||
1720 | 0xcc, /* 1100110 */ | ||
1721 | 0xcc, /* 1100110 */ | ||
1722 | 0x78, /* 0111100 */ | ||
1723 | |||
1724 | /* 107 0x6b 'k' */ | ||
1725 | 0x00, /* 0000000 */ | ||
1726 | 0xc0, /* 1100000 */ | ||
1727 | 0xc0, /* 1100000 */ | ||
1728 | 0xc0, /* 1100000 */ | ||
1729 | 0xcc, /* 1100110 */ | ||
1730 | 0xd8, /* 1101100 */ | ||
1731 | 0xf0, /* 1111000 */ | ||
1732 | 0xf0, /* 1111000 */ | ||
1733 | 0xd8, /* 1101100 */ | ||
1734 | 0xcc, /* 1100110 */ | ||
1735 | 0xcc, /* 1100110 */ | ||
1736 | 0x00, /* 0000000 */ | ||
1737 | 0x00, /* 0000000 */ | ||
1738 | 0x00, /* 0000000 */ | ||
1739 | |||
1740 | /* 108 0x6c 'l' */ | ||
1741 | 0x00, /* 0000000 */ | ||
1742 | 0x70, /* 0111000 */ | ||
1743 | 0x30, /* 0011000 */ | ||
1744 | 0x30, /* 0011000 */ | ||
1745 | 0x30, /* 0011000 */ | ||
1746 | 0x30, /* 0011000 */ | ||
1747 | 0x30, /* 0011000 */ | ||
1748 | 0x30, /* 0011000 */ | ||
1749 | 0x30, /* 0011000 */ | ||
1750 | 0x30, /* 0011000 */ | ||
1751 | 0x78, /* 0111100 */ | ||
1752 | 0x00, /* 0000000 */ | ||
1753 | 0x00, /* 0000000 */ | ||
1754 | 0x00, /* 0000000 */ | ||
1755 | |||
1756 | /* 109 0x6d 'm' */ | ||
1757 | 0x00, /* 0000000 */ | ||
1758 | 0x00, /* 0000000 */ | ||
1759 | 0x00, /* 0000000 */ | ||
1760 | 0x00, /* 0000000 */ | ||
1761 | 0xec, /* 1110110 */ | ||
1762 | 0xfe, /* 1111111 */ | ||
1763 | 0xd6, /* 1101011 */ | ||
1764 | 0xd6, /* 1101011 */ | ||
1765 | 0xd6, /* 1101011 */ | ||
1766 | 0xd6, /* 1101011 */ | ||
1767 | 0xd6, /* 1101011 */ | ||
1768 | 0x00, /* 0000000 */ | ||
1769 | 0x00, /* 0000000 */ | ||
1770 | 0x00, /* 0000000 */ | ||
1771 | |||
1772 | /* 110 0x6e 'n' */ | ||
1773 | 0x00, /* 0000000 */ | ||
1774 | 0x00, /* 0000000 */ | ||
1775 | 0x00, /* 0000000 */ | ||
1776 | 0x00, /* 0000000 */ | ||
1777 | 0xb8, /* 1011100 */ | ||
1778 | 0xcc, /* 1100110 */ | ||
1779 | 0xcc, /* 1100110 */ | ||
1780 | 0xcc, /* 1100110 */ | ||
1781 | 0xcc, /* 1100110 */ | ||
1782 | 0xcc, /* 1100110 */ | ||
1783 | 0xcc, /* 1100110 */ | ||
1784 | 0x00, /* 0000000 */ | ||
1785 | 0x00, /* 0000000 */ | ||
1786 | 0x00, /* 0000000 */ | ||
1787 | |||
1788 | /* 111 0x6f 'o' */ | ||
1789 | 0x00, /* 0000000 */ | ||
1790 | 0x00, /* 0000000 */ | ||
1791 | 0x00, /* 0000000 */ | ||
1792 | 0x00, /* 0000000 */ | ||
1793 | 0x78, /* 0111100 */ | ||
1794 | 0xcc, /* 1100110 */ | ||
1795 | 0xcc, /* 1100110 */ | ||
1796 | 0xcc, /* 1100110 */ | ||
1797 | 0xcc, /* 1100110 */ | ||
1798 | 0xcc, /* 1100110 */ | ||
1799 | 0x78, /* 0111100 */ | ||
1800 | 0x00, /* 0000000 */ | ||
1801 | 0x00, /* 0000000 */ | ||
1802 | 0x00, /* 0000000 */ | ||
1803 | |||
1804 | /* 112 0x70 'p' */ | ||
1805 | 0x00, /* 0000000 */ | ||
1806 | 0x00, /* 0000000 */ | ||
1807 | 0x00, /* 0000000 */ | ||
1808 | 0x00, /* 0000000 */ | ||
1809 | 0xb8, /* 1011100 */ | ||
1810 | 0xcc, /* 1100110 */ | ||
1811 | 0xcc, /* 1100110 */ | ||
1812 | 0xcc, /* 1100110 */ | ||
1813 | 0xcc, /* 1100110 */ | ||
1814 | 0xcc, /* 1100110 */ | ||
1815 | 0xf8, /* 1111100 */ | ||
1816 | 0xc0, /* 1100000 */ | ||
1817 | 0xc0, /* 1100000 */ | ||
1818 | 0xc0, /* 1100000 */ | ||
1819 | |||
1820 | /* 113 0x71 'q' */ | ||
1821 | 0x00, /* 0000000 */ | ||
1822 | 0x00, /* 0000000 */ | ||
1823 | 0x00, /* 0000000 */ | ||
1824 | 0x00, /* 0000000 */ | ||
1825 | 0x74, /* 0111010 */ | ||
1826 | 0xcc, /* 1100110 */ | ||
1827 | 0xcc, /* 1100110 */ | ||
1828 | 0xcc, /* 1100110 */ | ||
1829 | 0xcc, /* 1100110 */ | ||
1830 | 0xcc, /* 1100110 */ | ||
1831 | 0x7c, /* 0111110 */ | ||
1832 | 0x0c, /* 0000110 */ | ||
1833 | 0x0c, /* 0000110 */ | ||
1834 | 0x0c, /* 0000110 */ | ||
1835 | |||
1836 | /* 114 0x72 'r' */ | ||
1837 | 0x00, /* 0000000 */ | ||
1838 | 0x00, /* 0000000 */ | ||
1839 | 0x00, /* 0000000 */ | ||
1840 | 0x00, /* 0000000 */ | ||
1841 | 0xb8, /* 1011100 */ | ||
1842 | 0xec, /* 1110110 */ | ||
1843 | 0xcc, /* 1100110 */ | ||
1844 | 0xc0, /* 1100000 */ | ||
1845 | 0xc0, /* 1100000 */ | ||
1846 | 0xc0, /* 1100000 */ | ||
1847 | 0xc0, /* 1100000 */ | ||
1848 | 0x00, /* 0000000 */ | ||
1849 | 0x00, /* 0000000 */ | ||
1850 | 0x00, /* 0000000 */ | ||
1851 | |||
1852 | /* 115 0x73 's' */ | ||
1853 | 0x00, /* 0000000 */ | ||
1854 | 0x00, /* 0000000 */ | ||
1855 | 0x00, /* 0000000 */ | ||
1856 | 0x00, /* 0000000 */ | ||
1857 | 0x78, /* 0111100 */ | ||
1858 | 0xcc, /* 1100110 */ | ||
1859 | 0x60, /* 0110000 */ | ||
1860 | 0x30, /* 0011000 */ | ||
1861 | 0x18, /* 0001100 */ | ||
1862 | 0xcc, /* 1100110 */ | ||
1863 | 0x78, /* 0111100 */ | ||
1864 | 0x00, /* 0000000 */ | ||
1865 | 0x00, /* 0000000 */ | ||
1866 | 0x00, /* 0000000 */ | ||
1867 | |||
1868 | /* 116 0x74 't' */ | ||
1869 | 0x00, /* 0000000 */ | ||
1870 | 0x10, /* 0001000 */ | ||
1871 | 0x30, /* 0011000 */ | ||
1872 | 0x30, /* 0011000 */ | ||
1873 | 0xfc, /* 1111110 */ | ||
1874 | 0x30, /* 0011000 */ | ||
1875 | 0x30, /* 0011000 */ | ||
1876 | 0x30, /* 0011000 */ | ||
1877 | 0x30, /* 0011000 */ | ||
1878 | 0x36, /* 0011011 */ | ||
1879 | 0x1c, /* 0001110 */ | ||
1880 | 0x00, /* 0000000 */ | ||
1881 | 0x00, /* 0000000 */ | ||
1882 | 0x00, /* 0000000 */ | ||
1883 | |||
1884 | /* 117 0x75 'u' */ | ||
1885 | 0x00, /* 0000000 */ | ||
1886 | 0x00, /* 0000000 */ | ||
1887 | 0x00, /* 0000000 */ | ||
1888 | 0x00, /* 0000000 */ | ||
1889 | 0xcc, /* 1100110 */ | ||
1890 | 0xcc, /* 1100110 */ | ||
1891 | 0xcc, /* 1100110 */ | ||
1892 | 0xcc, /* 1100110 */ | ||
1893 | 0xcc, /* 1100110 */ | ||
1894 | 0xcc, /* 1100110 */ | ||
1895 | 0x76, /* 0111011 */ | ||
1896 | 0x00, /* 0000000 */ | ||
1897 | 0x00, /* 0000000 */ | ||
1898 | 0x00, /* 0000000 */ | ||
1899 | |||
1900 | /* 118 0x76 'v' */ | ||
1901 | 0x00, /* 0000000 */ | ||
1902 | 0x00, /* 0000000 */ | ||
1903 | 0x00, /* 0000000 */ | ||
1904 | 0x00, /* 0000000 */ | ||
1905 | 0xcc, /* 1100110 */ | ||
1906 | 0xcc, /* 1100110 */ | ||
1907 | 0xcc, /* 1100110 */ | ||
1908 | 0xcc, /* 1100110 */ | ||
1909 | 0xcc, /* 1100110 */ | ||
1910 | 0x78, /* 0111100 */ | ||
1911 | 0x30, /* 0011000 */ | ||
1912 | 0x00, /* 0000000 */ | ||
1913 | 0x00, /* 0000000 */ | ||
1914 | 0x00, /* 0000000 */ | ||
1915 | |||
1916 | /* 119 0x77 'w' */ | ||
1917 | 0x00, /* 0000000 */ | ||
1918 | 0x00, /* 0000000 */ | ||
1919 | 0x00, /* 0000000 */ | ||
1920 | 0x00, /* 0000000 */ | ||
1921 | 0xc6, /* 1100011 */ | ||
1922 | 0xc6, /* 1100011 */ | ||
1923 | 0xd6, /* 1101011 */ | ||
1924 | 0xd6, /* 1101011 */ | ||
1925 | 0xd6, /* 1101011 */ | ||
1926 | 0xfe, /* 1111111 */ | ||
1927 | 0x6c, /* 0110110 */ | ||
1928 | 0x00, /* 0000000 */ | ||
1929 | 0x00, /* 0000000 */ | ||
1930 | 0x00, /* 0000000 */ | ||
1931 | |||
1932 | /* 120 0x78 'x' */ | ||
1933 | 0x00, /* 0000000 */ | ||
1934 | 0x00, /* 0000000 */ | ||
1935 | 0x00, /* 0000000 */ | ||
1936 | 0x00, /* 0000000 */ | ||
1937 | 0xcc, /* 1100110 */ | ||
1938 | 0xcc, /* 1100110 */ | ||
1939 | 0x78, /* 0111100 */ | ||
1940 | 0x30, /* 0011000 */ | ||
1941 | 0x78, /* 0111100 */ | ||
1942 | 0xcc, /* 1100110 */ | ||
1943 | 0xcc, /* 1100110 */ | ||
1944 | 0x00, /* 0000000 */ | ||
1945 | 0x00, /* 0000000 */ | ||
1946 | 0x00, /* 0000000 */ | ||
1947 | |||
1948 | /* 121 0x79 'y' */ | ||
1949 | 0x00, /* 0000000 */ | ||
1950 | 0x00, /* 0000000 */ | ||
1951 | 0x00, /* 0000000 */ | ||
1952 | 0x00, /* 0000000 */ | ||
1953 | 0xcc, /* 1100110 */ | ||
1954 | 0xcc, /* 1100110 */ | ||
1955 | 0xcc, /* 1100110 */ | ||
1956 | 0xcc, /* 1100110 */ | ||
1957 | 0xcc, /* 1100110 */ | ||
1958 | 0xcc, /* 1100110 */ | ||
1959 | 0x7c, /* 0111110 */ | ||
1960 | 0x0c, /* 0000110 */ | ||
1961 | 0x18, /* 0001100 */ | ||
1962 | 0xf0, /* 1111000 */ | ||
1963 | |||
1964 | /* 122 0x7a 'z' */ | ||
1965 | 0x00, /* 0000000 */ | ||
1966 | 0x00, /* 0000000 */ | ||
1967 | 0x00, /* 0000000 */ | ||
1968 | 0x00, /* 0000000 */ | ||
1969 | 0xfc, /* 1111110 */ | ||
1970 | 0xcc, /* 1100110 */ | ||
1971 | 0x18, /* 0001100 */ | ||
1972 | 0x30, /* 0011000 */ | ||
1973 | 0x60, /* 0110000 */ | ||
1974 | 0xcc, /* 1100110 */ | ||
1975 | 0xfc, /* 1111110 */ | ||
1976 | 0x00, /* 0000000 */ | ||
1977 | 0x00, /* 0000000 */ | ||
1978 | 0x00, /* 0000000 */ | ||
1979 | |||
1980 | /* 123 0x7b '{' */ | ||
1981 | 0x00, /* 0000000 */ | ||
1982 | 0x1c, /* 0001110 */ | ||
1983 | 0x30, /* 0011000 */ | ||
1984 | 0x30, /* 0011000 */ | ||
1985 | 0x30, /* 0011000 */ | ||
1986 | 0xe0, /* 1110000 */ | ||
1987 | 0x30, /* 0011000 */ | ||
1988 | 0x30, /* 0011000 */ | ||
1989 | 0x30, /* 0011000 */ | ||
1990 | 0x30, /* 0011000 */ | ||
1991 | 0x1c, /* 0001110 */ | ||
1992 | 0x00, /* 0000000 */ | ||
1993 | 0x00, /* 0000000 */ | ||
1994 | 0x00, /* 0000000 */ | ||
1995 | |||
1996 | /* 124 0x7c '|' */ | ||
1997 | 0x00, /* 0000000 */ | ||
1998 | 0x30, /* 0011000 */ | ||
1999 | 0x30, /* 0011000 */ | ||
2000 | 0x30, /* 0011000 */ | ||
2001 | 0x30, /* 0011000 */ | ||
2002 | 0x30, /* 0011000 */ | ||
2003 | 0x30, /* 0011000 */ | ||
2004 | 0x30, /* 0011000 */ | ||
2005 | 0x30, /* 0011000 */ | ||
2006 | 0x30, /* 0011000 */ | ||
2007 | 0x30, /* 0011000 */ | ||
2008 | 0x00, /* 0000000 */ | ||
2009 | 0x00, /* 0000000 */ | ||
2010 | 0x00, /* 0000000 */ | ||
2011 | |||
2012 | /* 125 0x7d '}' */ | ||
2013 | 0x00, /* 0000000 */ | ||
2014 | 0x70, /* 0111000 */ | ||
2015 | 0x18, /* 0001100 */ | ||
2016 | 0x18, /* 0001100 */ | ||
2017 | 0x18, /* 0001100 */ | ||
2018 | 0x0e, /* 0000111 */ | ||
2019 | 0x18, /* 0001100 */ | ||
2020 | 0x18, /* 0001100 */ | ||
2021 | 0x18, /* 0001100 */ | ||
2022 | 0x18, /* 0001100 */ | ||
2023 | 0x70, /* 0111000 */ | ||
2024 | 0x00, /* 0000000 */ | ||
2025 | 0x00, /* 0000000 */ | ||
2026 | 0x00, /* 0000000 */ | ||
2027 | |||
2028 | /* 126 0x7e '~' */ | ||
2029 | 0x00, /* 0000000 */ | ||
2030 | 0xec, /* 1110110 */ | ||
2031 | 0xb8, /* 1011100 */ | ||
2032 | 0x00, /* 0000000 */ | ||
2033 | 0x00, /* 0000000 */ | ||
2034 | 0x00, /* 0000000 */ | ||
2035 | 0x00, /* 0000000 */ | ||
2036 | 0x00, /* 0000000 */ | ||
2037 | 0x00, /* 0000000 */ | ||
2038 | 0x00, /* 0000000 */ | ||
2039 | 0x00, /* 0000000 */ | ||
2040 | 0x00, /* 0000000 */ | ||
2041 | 0x00, /* 0000000 */ | ||
2042 | 0x00, /* 0000000 */ | ||
2043 | |||
2044 | /* 127 0x7f '' */ | ||
2045 | 0x00, /* 0000000 */ | ||
2046 | 0x00, /* 0000000 */ | ||
2047 | 0x00, /* 0000000 */ | ||
2048 | 0x10, /* 0001000 */ | ||
2049 | 0x38, /* 0011100 */ | ||
2050 | 0x6c, /* 0110110 */ | ||
2051 | 0xc6, /* 1100011 */ | ||
2052 | 0xc6, /* 1100011 */ | ||
2053 | 0xc6, /* 1100011 */ | ||
2054 | 0xfe, /* 1111111 */ | ||
2055 | 0x00, /* 0000000 */ | ||
2056 | 0x00, /* 0000000 */ | ||
2057 | 0x00, /* 0000000 */ | ||
2058 | 0x00, /* 0000000 */ | ||
2059 | |||
2060 | /* 128 0x80 '€' */ | ||
2061 | 0x00, /* 0000000 */ | ||
2062 | 0x38, /* 0011100 */ | ||
2063 | 0x6c, /* 0110110 */ | ||
2064 | 0xc4, /* 1100010 */ | ||
2065 | 0xc0, /* 1100000 */ | ||
2066 | 0xc0, /* 1100000 */ | ||
2067 | 0xc0, /* 1100000 */ | ||
2068 | 0xc0, /* 1100000 */ | ||
2069 | 0xc4, /* 1100010 */ | ||
2070 | 0x6c, /* 0110110 */ | ||
2071 | 0x38, /* 0011100 */ | ||
2072 | 0x18, /* 0001100 */ | ||
2073 | 0x70, /* 0111000 */ | ||
2074 | 0x00, /* 0000000 */ | ||
2075 | |||
2076 | /* 129 0x81 '' */ | ||
2077 | 0x00, /* 0000000 */ | ||
2078 | 0xcc, /* 1100110 */ | ||
2079 | 0x00, /* 0000000 */ | ||
2080 | 0x00, /* 0000000 */ | ||
2081 | 0xcc, /* 1100110 */ | ||
2082 | 0xcc, /* 1100110 */ | ||
2083 | 0xcc, /* 1100110 */ | ||
2084 | 0xcc, /* 1100110 */ | ||
2085 | 0xcc, /* 1100110 */ | ||
2086 | 0xcc, /* 1100110 */ | ||
2087 | 0x76, /* 0111011 */ | ||
2088 | 0x00, /* 0000000 */ | ||
2089 | 0x00, /* 0000000 */ | ||
2090 | 0x00, /* 0000000 */ | ||
2091 | |||
2092 | /* 130 0x82 '‚' */ | ||
2093 | 0x0c, /* 0000110 */ | ||
2094 | 0x18, /* 0001100 */ | ||
2095 | 0x30, /* 0011000 */ | ||
2096 | 0x00, /* 0000000 */ | ||
2097 | 0x78, /* 0111100 */ | ||
2098 | 0xcc, /* 1100110 */ | ||
2099 | 0xfc, /* 1111110 */ | ||
2100 | 0xc0, /* 1100000 */ | ||
2101 | 0xc0, /* 1100000 */ | ||
2102 | 0xcc, /* 1100110 */ | ||
2103 | 0x78, /* 0111100 */ | ||
2104 | 0x00, /* 0000000 */ | ||
2105 | 0x00, /* 0000000 */ | ||
2106 | 0x00, /* 0000000 */ | ||
2107 | |||
2108 | /* 131 0x83 'ƒ' */ | ||
2109 | 0x10, /* 0001000 */ | ||
2110 | 0x38, /* 0011100 */ | ||
2111 | 0x6c, /* 0110110 */ | ||
2112 | 0x00, /* 0000000 */ | ||
2113 | 0x78, /* 0111100 */ | ||
2114 | 0x0c, /* 0000110 */ | ||
2115 | 0x7c, /* 0111110 */ | ||
2116 | 0xcc, /* 1100110 */ | ||
2117 | 0xcc, /* 1100110 */ | ||
2118 | 0xcc, /* 1100110 */ | ||
2119 | 0x76, /* 0111011 */ | ||
2120 | 0x00, /* 0000000 */ | ||
2121 | 0x00, /* 0000000 */ | ||
2122 | 0x00, /* 0000000 */ | ||
2123 | |||
2124 | /* 132 0x84 '„' */ | ||
2125 | 0x00, /* 0000000 */ | ||
2126 | 0xcc, /* 1100110 */ | ||
2127 | 0x00, /* 0000000 */ | ||
2128 | 0x00, /* 0000000 */ | ||
2129 | 0x78, /* 0111100 */ | ||
2130 | 0x0c, /* 0000110 */ | ||
2131 | 0x7c, /* 0111110 */ | ||
2132 | 0xcc, /* 1100110 */ | ||
2133 | 0xcc, /* 1100110 */ | ||
2134 | 0xcc, /* 1100110 */ | ||
2135 | 0x76, /* 0111011 */ | ||
2136 | 0x00, /* 0000000 */ | ||
2137 | 0x00, /* 0000000 */ | ||
2138 | 0x00, /* 0000000 */ | ||
2139 | |||
2140 | /* 133 0x85 '…' */ | ||
2141 | 0x60, /* 0110000 */ | ||
2142 | 0x30, /* 0011000 */ | ||
2143 | 0x18, /* 0001100 */ | ||
2144 | 0x00, /* 0000000 */ | ||
2145 | 0x78, /* 0111100 */ | ||
2146 | 0x0c, /* 0000110 */ | ||
2147 | 0x7c, /* 0111110 */ | ||
2148 | 0xcc, /* 1100110 */ | ||
2149 | 0xcc, /* 1100110 */ | ||
2150 | 0xcc, /* 1100110 */ | ||
2151 | 0x76, /* 0111011 */ | ||
2152 | 0x00, /* 0000000 */ | ||
2153 | 0x00, /* 0000000 */ | ||
2154 | 0x00, /* 0000000 */ | ||
2155 | |||
2156 | /* 134 0x86 '†' */ | ||
2157 | 0x38, /* 0011100 */ | ||
2158 | 0x6c, /* 0110110 */ | ||
2159 | 0x38, /* 0011100 */ | ||
2160 | 0x00, /* 0000000 */ | ||
2161 | 0x78, /* 0111100 */ | ||
2162 | 0x0c, /* 0000110 */ | ||
2163 | 0x7c, /* 0111110 */ | ||
2164 | 0xcc, /* 1100110 */ | ||
2165 | 0xcc, /* 1100110 */ | ||
2166 | 0xcc, /* 1100110 */ | ||
2167 | 0x76, /* 0111011 */ | ||
2168 | 0x00, /* 0000000 */ | ||
2169 | 0x00, /* 0000000 */ | ||
2170 | 0x00, /* 0000000 */ | ||
2171 | |||
2172 | /* 135 0x87 '‡' */ | ||
2173 | 0x00, /* 0000000 */ | ||
2174 | 0x00, /* 0000000 */ | ||
2175 | 0x00, /* 0000000 */ | ||
2176 | 0x00, /* 0000000 */ | ||
2177 | 0x78, /* 0111100 */ | ||
2178 | 0xcc, /* 1100110 */ | ||
2179 | 0xc0, /* 1100000 */ | ||
2180 | 0xc0, /* 1100000 */ | ||
2181 | 0xc0, /* 1100000 */ | ||
2182 | 0xcc, /* 1100110 */ | ||
2183 | 0x78, /* 0111100 */ | ||
2184 | 0x30, /* 0011000 */ | ||
2185 | 0x30, /* 0011000 */ | ||
2186 | 0xe0, /* 1110000 */ | ||
2187 | |||
2188 | /* 136 0x88 'ˆ' */ | ||
2189 | 0x10, /* 0001000 */ | ||
2190 | 0x38, /* 0011100 */ | ||
2191 | 0x6c, /* 0110110 */ | ||
2192 | 0x00, /* 0000000 */ | ||
2193 | 0x78, /* 0111100 */ | ||
2194 | 0xcc, /* 1100110 */ | ||
2195 | 0xfc, /* 1111110 */ | ||
2196 | 0xc0, /* 1100000 */ | ||
2197 | 0xc0, /* 1100000 */ | ||
2198 | 0xcc, /* 1100110 */ | ||
2199 | 0x78, /* 0111100 */ | ||
2200 | 0x00, /* 0000000 */ | ||
2201 | 0x00, /* 0000000 */ | ||
2202 | 0x00, /* 0000000 */ | ||
2203 | |||
2204 | /* 137 0x89 '‰' */ | ||
2205 | 0x00, /* 0000000 */ | ||
2206 | 0xcc, /* 1100110 */ | ||
2207 | 0x00, /* 0000000 */ | ||
2208 | 0x00, /* 0000000 */ | ||
2209 | 0x78, /* 0111100 */ | ||
2210 | 0xcc, /* 1100110 */ | ||
2211 | 0xfc, /* 1111110 */ | ||
2212 | 0xc0, /* 1100000 */ | ||
2213 | 0xc0, /* 1100000 */ | ||
2214 | 0xcc, /* 1100110 */ | ||
2215 | 0x78, /* 0111100 */ | ||
2216 | 0x00, /* 0000000 */ | ||
2217 | 0x00, /* 0000000 */ | ||
2218 | 0x00, /* 0000000 */ | ||
2219 | |||
2220 | /* 138 0x8a 'Š' */ | ||
2221 | 0xc0, /* 1100000 */ | ||
2222 | 0x60, /* 0110000 */ | ||
2223 | 0x30, /* 0011000 */ | ||
2224 | 0x00, /* 0000000 */ | ||
2225 | 0x78, /* 0111100 */ | ||
2226 | 0xcc, /* 1100110 */ | ||
2227 | 0xfc, /* 1111110 */ | ||
2228 | 0xc0, /* 1100000 */ | ||
2229 | 0xc0, /* 1100000 */ | ||
2230 | 0xcc, /* 1100110 */ | ||
2231 | 0x78, /* 0111100 */ | ||
2232 | 0x00, /* 0000000 */ | ||
2233 | 0x00, /* 0000000 */ | ||
2234 | 0x00, /* 0000000 */ | ||
2235 | |||
2236 | /* 139 0x8b '‹' */ | ||
2237 | 0x00, /* 0000000 */ | ||
2238 | 0x6c, /* 0110110 */ | ||
2239 | 0x00, /* 0000000 */ | ||
2240 | 0x00, /* 0000000 */ | ||
2241 | 0x38, /* 0011100 */ | ||
2242 | 0x18, /* 0001100 */ | ||
2243 | 0x18, /* 0001100 */ | ||
2244 | 0x18, /* 0001100 */ | ||
2245 | 0x18, /* 0001100 */ | ||
2246 | 0x18, /* 0001100 */ | ||
2247 | 0x3c, /* 0011110 */ | ||
2248 | 0x00, /* 0000000 */ | ||
2249 | 0x00, /* 0000000 */ | ||
2250 | 0x00, /* 0000000 */ | ||
2251 | |||
2252 | /* 140 0x8c 'Œ' */ | ||
2253 | 0x30, /* 0011000 */ | ||
2254 | 0x78, /* 0111100 */ | ||
2255 | 0xcc, /* 1100110 */ | ||
2256 | 0x00, /* 0000000 */ | ||
2257 | 0x70, /* 0111000 */ | ||
2258 | 0x30, /* 0011000 */ | ||
2259 | 0x30, /* 0011000 */ | ||
2260 | 0x30, /* 0011000 */ | ||
2261 | 0x30, /* 0011000 */ | ||
2262 | 0x30, /* 0011000 */ | ||
2263 | 0x78, /* 0111100 */ | ||
2264 | 0x00, /* 0000000 */ | ||
2265 | 0x00, /* 0000000 */ | ||
2266 | 0x00, /* 0000000 */ | ||
2267 | |||
2268 | /* 141 0x8d '' */ | ||
2269 | 0xc0, /* 1100000 */ | ||
2270 | 0x60, /* 0110000 */ | ||
2271 | 0x30, /* 0011000 */ | ||
2272 | 0x00, /* 0000000 */ | ||
2273 | 0x70, /* 0111000 */ | ||
2274 | 0x30, /* 0011000 */ | ||
2275 | 0x30, /* 0011000 */ | ||
2276 | 0x30, /* 0011000 */ | ||
2277 | 0x30, /* 0011000 */ | ||
2278 | 0x30, /* 0011000 */ | ||
2279 | 0x78, /* 0111100 */ | ||
2280 | 0x00, /* 0000000 */ | ||
2281 | 0x00, /* 0000000 */ | ||
2282 | 0x00, /* 0000000 */ | ||
2283 | |||
2284 | /* 142 0x8e 'Ž' */ | ||
2285 | 0x00, /* 0000000 */ | ||
2286 | 0xcc, /* 1100110 */ | ||
2287 | 0x00, /* 0000000 */ | ||
2288 | 0x30, /* 0011000 */ | ||
2289 | 0x78, /* 0111100 */ | ||
2290 | 0xcc, /* 1100110 */ | ||
2291 | 0xcc, /* 1100110 */ | ||
2292 | 0xfc, /* 1111110 */ | ||
2293 | 0xcc, /* 1100110 */ | ||
2294 | 0xcc, /* 1100110 */ | ||
2295 | 0xcc, /* 1100110 */ | ||
2296 | 0x00, /* 0000000 */ | ||
2297 | 0x00, /* 0000000 */ | ||
2298 | 0x00, /* 0000000 */ | ||
2299 | |||
2300 | /* 143 0x8f '' */ | ||
2301 | 0x30, /* 0011000 */ | ||
2302 | 0x48, /* 0100100 */ | ||
2303 | 0x48, /* 0100100 */ | ||
2304 | 0x30, /* 0011000 */ | ||
2305 | 0x78, /* 0111100 */ | ||
2306 | 0xcc, /* 1100110 */ | ||
2307 | 0xfc, /* 1111110 */ | ||
2308 | 0xcc, /* 1100110 */ | ||
2309 | 0xcc, /* 1100110 */ | ||
2310 | 0xcc, /* 1100110 */ | ||
2311 | 0xcc, /* 1100110 */ | ||
2312 | 0x00, /* 0000000 */ | ||
2313 | 0x00, /* 0000000 */ | ||
2314 | 0x00, /* 0000000 */ | ||
2315 | |||
2316 | /* 144 0x90 '' */ | ||
2317 | 0x18, /* 0001100 */ | ||
2318 | 0x30, /* 0011000 */ | ||
2319 | 0xfc, /* 1111110 */ | ||
2320 | 0xcc, /* 1100110 */ | ||
2321 | 0xc4, /* 1100010 */ | ||
2322 | 0xd0, /* 1101000 */ | ||
2323 | 0xf0, /* 1111000 */ | ||
2324 | 0xd0, /* 1101000 */ | ||
2325 | 0xc4, /* 1100010 */ | ||
2326 | 0xcc, /* 1100110 */ | ||
2327 | 0xfc, /* 1111110 */ | ||
2328 | 0x00, /* 0000000 */ | ||
2329 | 0x00, /* 0000000 */ | ||
2330 | 0x00, /* 0000000 */ | ||
2331 | |||
2332 | /* 145 0x91 '‘' */ | ||
2333 | 0x00, /* 0000000 */ | ||
2334 | 0x00, /* 0000000 */ | ||
2335 | 0x00, /* 0000000 */ | ||
2336 | 0x00, /* 0000000 */ | ||
2337 | 0xec, /* 1110110 */ | ||
2338 | 0x36, /* 0011011 */ | ||
2339 | 0x36, /* 0011011 */ | ||
2340 | 0x7e, /* 0111111 */ | ||
2341 | 0xd8, /* 1101100 */ | ||
2342 | 0xd8, /* 1101100 */ | ||
2343 | 0x6e, /* 0110111 */ | ||
2344 | 0x00, /* 0000000 */ | ||
2345 | 0x00, /* 0000000 */ | ||
2346 | 0x00, /* 0000000 */ | ||
2347 | |||
2348 | /* 146 0x92 '’' */ | ||
2349 | 0x00, /* 0000000 */ | ||
2350 | 0x3e, /* 0011111 */ | ||
2351 | 0x6c, /* 0110110 */ | ||
2352 | 0xcc, /* 1100110 */ | ||
2353 | 0xcc, /* 1100110 */ | ||
2354 | 0xfe, /* 1111111 */ | ||
2355 | 0xcc, /* 1100110 */ | ||
2356 | 0xcc, /* 1100110 */ | ||
2357 | 0xcc, /* 1100110 */ | ||
2358 | 0xcc, /* 1100110 */ | ||
2359 | 0xce, /* 1100111 */ | ||
2360 | 0x00, /* 0000000 */ | ||
2361 | 0x00, /* 0000000 */ | ||
2362 | 0x00, /* 0000000 */ | ||
2363 | |||
2364 | /* 147 0x93 '“' */ | ||
2365 | 0x10, /* 0001000 */ | ||
2366 | 0x38, /* 0011100 */ | ||
2367 | 0x6c, /* 0110110 */ | ||
2368 | 0x00, /* 0000000 */ | ||
2369 | 0x78, /* 0111100 */ | ||
2370 | 0xcc, /* 1100110 */ | ||
2371 | 0xcc, /* 1100110 */ | ||
2372 | 0xcc, /* 1100110 */ | ||
2373 | 0xcc, /* 1100110 */ | ||
2374 | 0xcc, /* 1100110 */ | ||
2375 | 0x78, /* 0111100 */ | ||
2376 | 0x00, /* 0000000 */ | ||
2377 | 0x00, /* 0000000 */ | ||
2378 | 0x00, /* 0000000 */ | ||
2379 | |||
2380 | /* 148 0x94 '”' */ | ||
2381 | 0x00, /* 0000000 */ | ||
2382 | 0xcc, /* 1100110 */ | ||
2383 | 0x00, /* 0000000 */ | ||
2384 | 0x00, /* 0000000 */ | ||
2385 | 0x78, /* 0111100 */ | ||
2386 | 0xcc, /* 1100110 */ | ||
2387 | 0xcc, /* 1100110 */ | ||
2388 | 0xcc, /* 1100110 */ | ||
2389 | 0xcc, /* 1100110 */ | ||
2390 | 0xcc, /* 1100110 */ | ||
2391 | 0x78, /* 0111100 */ | ||
2392 | 0x00, /* 0000000 */ | ||
2393 | 0x00, /* 0000000 */ | ||
2394 | 0x00, /* 0000000 */ | ||
2395 | |||
2396 | /* 149 0x95 '•' */ | ||
2397 | 0xc0, /* 1100000 */ | ||
2398 | 0x60, /* 0110000 */ | ||
2399 | 0x30, /* 0011000 */ | ||
2400 | 0x00, /* 0000000 */ | ||
2401 | 0x78, /* 0111100 */ | ||
2402 | 0xcc, /* 1100110 */ | ||
2403 | 0xcc, /* 1100110 */ | ||
2404 | 0xcc, /* 1100110 */ | ||
2405 | 0xcc, /* 1100110 */ | ||
2406 | 0xcc, /* 1100110 */ | ||
2407 | 0x78, /* 0111100 */ | ||
2408 | 0x00, /* 0000000 */ | ||
2409 | 0x00, /* 0000000 */ | ||
2410 | 0x00, /* 0000000 */ | ||
2411 | |||
2412 | /* 150 0x96 '–' */ | ||
2413 | 0x30, /* 0011000 */ | ||
2414 | 0x78, /* 0111100 */ | ||
2415 | 0xcc, /* 1100110 */ | ||
2416 | 0x00, /* 0000000 */ | ||
2417 | 0xcc, /* 1100110 */ | ||
2418 | 0xcc, /* 1100110 */ | ||
2419 | 0xcc, /* 1100110 */ | ||
2420 | 0xcc, /* 1100110 */ | ||
2421 | 0xcc, /* 1100110 */ | ||
2422 | 0xcc, /* 1100110 */ | ||
2423 | 0x76, /* 0111011 */ | ||
2424 | 0x00, /* 0000000 */ | ||
2425 | 0x00, /* 0000000 */ | ||
2426 | 0x00, /* 0000000 */ | ||
2427 | |||
2428 | /* 151 0x97 '—' */ | ||
2429 | 0x60, /* 0110000 */ | ||
2430 | 0x30, /* 0011000 */ | ||
2431 | 0x18, /* 0001100 */ | ||
2432 | 0x00, /* 0000000 */ | ||
2433 | 0xcc, /* 1100110 */ | ||
2434 | 0xcc, /* 1100110 */ | ||
2435 | 0xcc, /* 1100110 */ | ||
2436 | 0xcc, /* 1100110 */ | ||
2437 | 0xcc, /* 1100110 */ | ||
2438 | 0xcc, /* 1100110 */ | ||
2439 | 0x76, /* 0111011 */ | ||
2440 | 0x00, /* 0000000 */ | ||
2441 | 0x00, /* 0000000 */ | ||
2442 | 0x00, /* 0000000 */ | ||
2443 | |||
2444 | /* 152 0x98 '˜' */ | ||
2445 | 0x00, /* 0000000 */ | ||
2446 | 0xcc, /* 1100110 */ | ||
2447 | 0x00, /* 0000000 */ | ||
2448 | 0x00, /* 0000000 */ | ||
2449 | 0xcc, /* 1100110 */ | ||
2450 | 0xcc, /* 1100110 */ | ||
2451 | 0xcc, /* 1100110 */ | ||
2452 | 0xcc, /* 1100110 */ | ||
2453 | 0xcc, /* 1100110 */ | ||
2454 | 0xcc, /* 1100110 */ | ||
2455 | 0x7c, /* 0111110 */ | ||
2456 | 0x0c, /* 0000110 */ | ||
2457 | 0x18, /* 0001100 */ | ||
2458 | 0x70, /* 0111000 */ | ||
2459 | |||
2460 | /* 153 0x99 '™' */ | ||
2461 | 0xcc, /* 1100110 */ | ||
2462 | 0x00, /* 0000000 */ | ||
2463 | 0x78, /* 0111100 */ | ||
2464 | 0xcc, /* 1100110 */ | ||
2465 | 0xcc, /* 1100110 */ | ||
2466 | 0xcc, /* 1100110 */ | ||
2467 | 0xcc, /* 1100110 */ | ||
2468 | 0xcc, /* 1100110 */ | ||
2469 | 0xcc, /* 1100110 */ | ||
2470 | 0xcc, /* 1100110 */ | ||
2471 | 0x78, /* 0111100 */ | ||
2472 | 0x00, /* 0000000 */ | ||
2473 | 0x00, /* 0000000 */ | ||
2474 | 0x00, /* 0000000 */ | ||
2475 | |||
2476 | /* 154 0x9a 'š' */ | ||
2477 | 0xcc, /* 1100110 */ | ||
2478 | 0x00, /* 0000000 */ | ||
2479 | 0xcc, /* 1100110 */ | ||
2480 | 0xcc, /* 1100110 */ | ||
2481 | 0xcc, /* 1100110 */ | ||
2482 | 0xcc, /* 1100110 */ | ||
2483 | 0xcc, /* 1100110 */ | ||
2484 | 0xcc, /* 1100110 */ | ||
2485 | 0xcc, /* 1100110 */ | ||
2486 | 0xcc, /* 1100110 */ | ||
2487 | 0x78, /* 0111100 */ | ||
2488 | 0x00, /* 0000000 */ | ||
2489 | 0x00, /* 0000000 */ | ||
2490 | 0x00, /* 0000000 */ | ||
2491 | |||
2492 | /* 155 0x9b '›' */ | ||
2493 | 0x30, /* 0011000 */ | ||
2494 | 0x30, /* 0011000 */ | ||
2495 | 0x7c, /* 0111110 */ | ||
2496 | 0xcc, /* 1100110 */ | ||
2497 | 0xc0, /* 1100000 */ | ||
2498 | 0xc0, /* 1100000 */ | ||
2499 | 0xc0, /* 1100000 */ | ||
2500 | 0xcc, /* 1100110 */ | ||
2501 | 0x7c, /* 0111110 */ | ||
2502 | 0x30, /* 0011000 */ | ||
2503 | 0x30, /* 0011000 */ | ||
2504 | 0x00, /* 0000000 */ | ||
2505 | 0x00, /* 0000000 */ | ||
2506 | 0x00, /* 0000000 */ | ||
2507 | |||
2508 | /* 156 0x9c 'œ' */ | ||
2509 | 0x38, /* 0011100 */ | ||
2510 | 0x6c, /* 0110110 */ | ||
2511 | 0x64, /* 0110010 */ | ||
2512 | 0x60, /* 0110000 */ | ||
2513 | 0xf0, /* 1111000 */ | ||
2514 | 0x60, /* 0110000 */ | ||
2515 | 0x60, /* 0110000 */ | ||
2516 | 0x60, /* 0110000 */ | ||
2517 | 0x60, /* 0110000 */ | ||
2518 | 0xe6, /* 1110011 */ | ||
2519 | 0xfc, /* 1111110 */ | ||
2520 | 0x00, /* 0000000 */ | ||
2521 | 0x00, /* 0000000 */ | ||
2522 | 0x00, /* 0000000 */ | ||
2523 | |||
2524 | /* 157 0x9d '' */ | ||
2525 | 0x00, /* 0000000 */ | ||
2526 | 0xcc, /* 1100110 */ | ||
2527 | 0xcc, /* 1100110 */ | ||
2528 | 0x78, /* 0111100 */ | ||
2529 | 0x30, /* 0011000 */ | ||
2530 | 0xfc, /* 1111110 */ | ||
2531 | 0x30, /* 0011000 */ | ||
2532 | 0xfc, /* 1111110 */ | ||
2533 | 0x30, /* 0011000 */ | ||
2534 | 0x30, /* 0011000 */ | ||
2535 | 0x30, /* 0011000 */ | ||
2536 | 0x00, /* 0000000 */ | ||
2537 | 0x00, /* 0000000 */ | ||
2538 | 0x00, /* 0000000 */ | ||
2539 | |||
2540 | /* 158 0x9e 'ž' */ | ||
2541 | 0xf8, /* 1111100 */ | ||
2542 | 0xcc, /* 1100110 */ | ||
2543 | 0xcc, /* 1100110 */ | ||
2544 | 0xf8, /* 1111100 */ | ||
2545 | 0xc4, /* 1100010 */ | ||
2546 | 0xcc, /* 1100110 */ | ||
2547 | 0xde, /* 1101111 */ | ||
2548 | 0xcc, /* 1100110 */ | ||
2549 | 0xcc, /* 1100110 */ | ||
2550 | 0xcc, /* 1100110 */ | ||
2551 | 0xc6, /* 1100011 */ | ||
2552 | 0x00, /* 0000000 */ | ||
2553 | 0x00, /* 0000000 */ | ||
2554 | 0x00, /* 0000000 */ | ||
2555 | |||
2556 | /* 159 0x9f 'Ÿ' */ | ||
2557 | 0x1c, /* 0001110 */ | ||
2558 | 0x36, /* 0011011 */ | ||
2559 | 0x30, /* 0011000 */ | ||
2560 | 0x30, /* 0011000 */ | ||
2561 | 0x30, /* 0011000 */ | ||
2562 | 0xfc, /* 1111110 */ | ||
2563 | 0x30, /* 0011000 */ | ||
2564 | 0x30, /* 0011000 */ | ||
2565 | 0x30, /* 0011000 */ | ||
2566 | 0xb0, /* 1011000 */ | ||
2567 | 0xe0, /* 1110000 */ | ||
2568 | 0x00, /* 0000000 */ | ||
2569 | 0x00, /* 0000000 */ | ||
2570 | 0x00, /* 0000000 */ | ||
2571 | |||
2572 | /* 160 0xa0 ' ' */ | ||
2573 | 0x18, /* 0001100 */ | ||
2574 | 0x30, /* 0011000 */ | ||
2575 | 0x60, /* 0110000 */ | ||
2576 | 0x00, /* 0000000 */ | ||
2577 | 0x78, /* 0111100 */ | ||
2578 | 0x0c, /* 0000110 */ | ||
2579 | 0x7c, /* 0111110 */ | ||
2580 | 0xcc, /* 1100110 */ | ||
2581 | 0xcc, /* 1100110 */ | ||
2582 | 0xcc, /* 1100110 */ | ||
2583 | 0x76, /* 0111011 */ | ||
2584 | 0x00, /* 0000000 */ | ||
2585 | 0x00, /* 0000000 */ | ||
2586 | 0x00, /* 0000000 */ | ||
2587 | |||
2588 | /* 161 0xa1 '¡' */ | ||
2589 | 0x18, /* 0001100 */ | ||
2590 | 0x30, /* 0011000 */ | ||
2591 | 0x60, /* 0110000 */ | ||
2592 | 0x00, /* 0000000 */ | ||
2593 | 0x70, /* 0111000 */ | ||
2594 | 0x30, /* 0011000 */ | ||
2595 | 0x30, /* 0011000 */ | ||
2596 | 0x30, /* 0011000 */ | ||
2597 | 0x30, /* 0011000 */ | ||
2598 | 0x30, /* 0011000 */ | ||
2599 | 0x78, /* 0111100 */ | ||
2600 | 0x00, /* 0000000 */ | ||
2601 | 0x00, /* 0000000 */ | ||
2602 | 0x00, /* 0000000 */ | ||
2603 | |||
2604 | /* 162 0xa2 '¢' */ | ||
2605 | 0x18, /* 0001100 */ | ||
2606 | 0x30, /* 0011000 */ | ||
2607 | 0x60, /* 0110000 */ | ||
2608 | 0x00, /* 0000000 */ | ||
2609 | 0x78, /* 0111100 */ | ||
2610 | 0xcc, /* 1100110 */ | ||
2611 | 0xcc, /* 1100110 */ | ||
2612 | 0xcc, /* 1100110 */ | ||
2613 | 0xcc, /* 1100110 */ | ||
2614 | 0xcc, /* 1100110 */ | ||
2615 | 0x78, /* 0111100 */ | ||
2616 | 0x00, /* 0000000 */ | ||
2617 | 0x00, /* 0000000 */ | ||
2618 | 0x00, /* 0000000 */ | ||
2619 | |||
2620 | /* 163 0xa3 '£' */ | ||
2621 | 0x18, /* 0001100 */ | ||
2622 | 0x30, /* 0011000 */ | ||
2623 | 0x60, /* 0110000 */ | ||
2624 | 0x00, /* 0000000 */ | ||
2625 | 0xcc, /* 1100110 */ | ||
2626 | 0xcc, /* 1100110 */ | ||
2627 | 0xcc, /* 1100110 */ | ||
2628 | 0xcc, /* 1100110 */ | ||
2629 | 0xcc, /* 1100110 */ | ||
2630 | 0xcc, /* 1100110 */ | ||
2631 | 0x76, /* 0111011 */ | ||
2632 | 0x00, /* 0000000 */ | ||
2633 | 0x00, /* 0000000 */ | ||
2634 | 0x00, /* 0000000 */ | ||
2635 | |||
2636 | /* 164 0xa4 '¤' */ | ||
2637 | 0x00, /* 0000000 */ | ||
2638 | 0x76, /* 0111011 */ | ||
2639 | 0xdc, /* 1101110 */ | ||
2640 | 0x00, /* 0000000 */ | ||
2641 | 0xb8, /* 1011100 */ | ||
2642 | 0xcc, /* 1100110 */ | ||
2643 | 0xcc, /* 1100110 */ | ||
2644 | 0xcc, /* 1100110 */ | ||
2645 | 0xcc, /* 1100110 */ | ||
2646 | 0xcc, /* 1100110 */ | ||
2647 | 0xcc, /* 1100110 */ | ||
2648 | 0x00, /* 0000000 */ | ||
2649 | 0x00, /* 0000000 */ | ||
2650 | 0x00, /* 0000000 */ | ||
2651 | |||
2652 | /* 165 0xa5 '¥' */ | ||
2653 | 0x76, /* 0111011 */ | ||
2654 | 0xdc, /* 1101110 */ | ||
2655 | 0x00, /* 0000000 */ | ||
2656 | 0xcc, /* 1100110 */ | ||
2657 | 0xec, /* 1110110 */ | ||
2658 | 0xec, /* 1110110 */ | ||
2659 | 0xfc, /* 1111110 */ | ||
2660 | 0xdc, /* 1101110 */ | ||
2661 | 0xcc, /* 1100110 */ | ||
2662 | 0xcc, /* 1100110 */ | ||
2663 | 0xcc, /* 1100110 */ | ||
2664 | 0x00, /* 0000000 */ | ||
2665 | 0x00, /* 0000000 */ | ||
2666 | 0x00, /* 0000000 */ | ||
2667 | |||
2668 | /* 166 0xa6 '¦' */ | ||
2669 | 0x00, /* 0000000 */ | ||
2670 | 0x78, /* 0111100 */ | ||
2671 | 0xd8, /* 1101100 */ | ||
2672 | 0xd8, /* 1101100 */ | ||
2673 | 0x7c, /* 0111110 */ | ||
2674 | 0x00, /* 0000000 */ | ||
2675 | 0xfc, /* 1111110 */ | ||
2676 | 0x00, /* 0000000 */ | ||
2677 | 0x00, /* 0000000 */ | ||
2678 | 0x00, /* 0000000 */ | ||
2679 | 0x00, /* 0000000 */ | ||
2680 | 0x00, /* 0000000 */ | ||
2681 | 0x00, /* 0000000 */ | ||
2682 | 0x00, /* 0000000 */ | ||
2683 | |||
2684 | /* 167 0xa7 '§' */ | ||
2685 | 0x00, /* 0000000 */ | ||
2686 | 0x70, /* 0111000 */ | ||
2687 | 0xd8, /* 1101100 */ | ||
2688 | 0xd8, /* 1101100 */ | ||
2689 | 0x70, /* 0111000 */ | ||
2690 | 0x00, /* 0000000 */ | ||
2691 | 0xf8, /* 1111100 */ | ||
2692 | 0x00, /* 0000000 */ | ||
2693 | 0x00, /* 0000000 */ | ||
2694 | 0x00, /* 0000000 */ | ||
2695 | 0x00, /* 0000000 */ | ||
2696 | 0x00, /* 0000000 */ | ||
2697 | 0x00, /* 0000000 */ | ||
2698 | 0x00, /* 0000000 */ | ||
2699 | |||
2700 | /* 168 0xa8 '¨' */ | ||
2701 | 0x00, /* 0000000 */ | ||
2702 | 0x30, /* 0011000 */ | ||
2703 | 0x30, /* 0011000 */ | ||
2704 | 0x00, /* 0000000 */ | ||
2705 | 0x30, /* 0011000 */ | ||
2706 | 0x30, /* 0011000 */ | ||
2707 | 0x60, /* 0110000 */ | ||
2708 | 0xc0, /* 1100000 */ | ||
2709 | 0xcc, /* 1100110 */ | ||
2710 | 0xcc, /* 1100110 */ | ||
2711 | 0x78, /* 0111100 */ | ||
2712 | 0x00, /* 0000000 */ | ||
2713 | 0x00, /* 0000000 */ | ||
2714 | 0x00, /* 0000000 */ | ||
2715 | |||
2716 | /* 169 0xa9 '©' */ | ||
2717 | 0x00, /* 0000000 */ | ||
2718 | 0x00, /* 0000000 */ | ||
2719 | 0x00, /* 0000000 */ | ||
2720 | 0x00, /* 0000000 */ | ||
2721 | 0x00, /* 0000000 */ | ||
2722 | 0xfc, /* 1111110 */ | ||
2723 | 0xc0, /* 1100000 */ | ||
2724 | 0xc0, /* 1100000 */ | ||
2725 | 0xc0, /* 1100000 */ | ||
2726 | 0xc0, /* 1100000 */ | ||
2727 | 0x00, /* 0000000 */ | ||
2728 | 0x00, /* 0000000 */ | ||
2729 | 0x00, /* 0000000 */ | ||
2730 | 0x00, /* 0000000 */ | ||
2731 | |||
2732 | /* 170 0xaa 'ª' */ | ||
2733 | 0x00, /* 0000000 */ | ||
2734 | 0x00, /* 0000000 */ | ||
2735 | 0x00, /* 0000000 */ | ||
2736 | 0x00, /* 0000000 */ | ||
2737 | 0x00, /* 0000000 */ | ||
2738 | 0xfc, /* 1111110 */ | ||
2739 | 0x0c, /* 0000110 */ | ||
2740 | 0x0c, /* 0000110 */ | ||
2741 | 0x0c, /* 0000110 */ | ||
2742 | 0x0c, /* 0000110 */ | ||
2743 | 0x00, /* 0000000 */ | ||
2744 | 0x00, /* 0000000 */ | ||
2745 | 0x00, /* 0000000 */ | ||
2746 | 0x00, /* 0000000 */ | ||
2747 | |||
2748 | /* 171 0xab '«' */ | ||
2749 | 0x60, /* 0110000 */ | ||
2750 | 0xe0, /* 1110000 */ | ||
2751 | 0x62, /* 0110001 */ | ||
2752 | 0x66, /* 0110011 */ | ||
2753 | 0x6c, /* 0110110 */ | ||
2754 | 0x18, /* 0001100 */ | ||
2755 | 0x30, /* 0011000 */ | ||
2756 | 0x60, /* 0110000 */ | ||
2757 | 0xc0, /* 1100000 */ | ||
2758 | 0xb8, /* 1011100 */ | ||
2759 | 0x4c, /* 0100110 */ | ||
2760 | 0x18, /* 0001100 */ | ||
2761 | 0x30, /* 0011000 */ | ||
2762 | 0x7c, /* 0111110 */ | ||
2763 | |||
2764 | /* 172 0xac '¬' */ | ||
2765 | 0x60, /* 0110000 */ | ||
2766 | 0xe0, /* 1110000 */ | ||
2767 | 0x62, /* 0110001 */ | ||
2768 | 0x66, /* 0110011 */ | ||
2769 | 0x6c, /* 0110110 */ | ||
2770 | 0x18, /* 0001100 */ | ||
2771 | 0x30, /* 0011000 */ | ||
2772 | 0x6c, /* 0110110 */ | ||
2773 | 0xdc, /* 1101110 */ | ||
2774 | 0xb4, /* 1011010 */ | ||
2775 | 0x7e, /* 0111111 */ | ||
2776 | 0x0c, /* 0000110 */ | ||
2777 | 0x0c, /* 0000110 */ | ||
2778 | 0x00, /* 0000000 */ | ||
2779 | |||
2780 | /* 173 0xad '' */ | ||
2781 | 0x00, /* 0000000 */ | ||
2782 | 0x30, /* 0011000 */ | ||
2783 | 0x30, /* 0011000 */ | ||
2784 | 0x00, /* 0000000 */ | ||
2785 | 0x30, /* 0011000 */ | ||
2786 | 0x30, /* 0011000 */ | ||
2787 | 0x30, /* 0011000 */ | ||
2788 | 0x78, /* 0111100 */ | ||
2789 | 0x78, /* 0111100 */ | ||
2790 | 0x78, /* 0111100 */ | ||
2791 | 0x30, /* 0011000 */ | ||
2792 | 0x00, /* 0000000 */ | ||
2793 | 0x00, /* 0000000 */ | ||
2794 | 0x00, /* 0000000 */ | ||
2795 | |||
2796 | /* 174 0xae '®' */ | ||
2797 | 0x00, /* 0000000 */ | ||
2798 | 0x00, /* 0000000 */ | ||
2799 | 0x00, /* 0000000 */ | ||
2800 | 0x00, /* 0000000 */ | ||
2801 | 0x36, /* 0011011 */ | ||
2802 | 0x6c, /* 0110110 */ | ||
2803 | 0xd8, /* 1101100 */ | ||
2804 | 0x6c, /* 0110110 */ | ||
2805 | 0x36, /* 0011011 */ | ||
2806 | 0x00, /* 0000000 */ | ||
2807 | 0x00, /* 0000000 */ | ||
2808 | 0x00, /* 0000000 */ | ||
2809 | 0x00, /* 0000000 */ | ||
2810 | 0x00, /* 0000000 */ | ||
2811 | |||
2812 | /* 175 0xaf '¯' */ | ||
2813 | 0x00, /* 0000000 */ | ||
2814 | 0x00, /* 0000000 */ | ||
2815 | 0x00, /* 0000000 */ | ||
2816 | 0x00, /* 0000000 */ | ||
2817 | 0xd8, /* 1101100 */ | ||
2818 | 0x6c, /* 0110110 */ | ||
2819 | 0x36, /* 0011011 */ | ||
2820 | 0x6c, /* 0110110 */ | ||
2821 | 0xd8, /* 1101100 */ | ||
2822 | 0x00, /* 0000000 */ | ||
2823 | 0x00, /* 0000000 */ | ||
2824 | 0x00, /* 0000000 */ | ||
2825 | 0x00, /* 0000000 */ | ||
2826 | 0x00, /* 0000000 */ | ||
2827 | |||
2828 | /* 176 0xb0 '°' */ | ||
2829 | 0x88, /* 1000100 */ | ||
2830 | 0x22, /* 0010001 */ | ||
2831 | 0x88, /* 1000100 */ | ||
2832 | 0x22, /* 0010001 */ | ||
2833 | 0x88, /* 1000100 */ | ||
2834 | 0x22, /* 0010001 */ | ||
2835 | 0x88, /* 1000100 */ | ||
2836 | 0x22, /* 0010001 */ | ||
2837 | 0x88, /* 1000100 */ | ||
2838 | 0x22, /* 0010001 */ | ||
2839 | 0x88, /* 1000100 */ | ||
2840 | 0x22, /* 0010001 */ | ||
2841 | 0x88, /* 1000100 */ | ||
2842 | 0x22, /* 0010001 */ | ||
2843 | |||
2844 | /* 177 0xb1 '±' */ | ||
2845 | 0x54, /* 0101010 */ | ||
2846 | 0xaa, /* 1010101 */ | ||
2847 | 0x54, /* 0101010 */ | ||
2848 | 0xaa, /* 1010101 */ | ||
2849 | 0x54, /* 0101010 */ | ||
2850 | 0xaa, /* 1010101 */ | ||
2851 | 0x54, /* 0101010 */ | ||
2852 | 0xaa, /* 1010101 */ | ||
2853 | 0x54, /* 0101010 */ | ||
2854 | 0xaa, /* 1010101 */ | ||
2855 | 0x54, /* 0101010 */ | ||
2856 | 0xaa, /* 1010101 */ | ||
2857 | 0x54, /* 0101010 */ | ||
2858 | 0xaa, /* 1010101 */ | ||
2859 | |||
2860 | /* 178 0xb2 '²' */ | ||
2861 | 0xee, /* 1110111 */ | ||
2862 | 0xba, /* 1011101 */ | ||
2863 | 0xee, /* 1110111 */ | ||
2864 | 0xba, /* 1011101 */ | ||
2865 | 0xee, /* 1110111 */ | ||
2866 | 0xba, /* 1011101 */ | ||
2867 | 0xee, /* 1110111 */ | ||
2868 | 0xba, /* 1011101 */ | ||
2869 | 0xee, /* 1110111 */ | ||
2870 | 0xba, /* 1011101 */ | ||
2871 | 0xee, /* 1110111 */ | ||
2872 | 0xba, /* 1011101 */ | ||
2873 | 0xee, /* 1110111 */ | ||
2874 | 0xba, /* 1011101 */ | ||
2875 | |||
2876 | /* 179 0xb3 '³' */ | ||
2877 | 0x30, /* 0011000 */ | ||
2878 | 0x30, /* 0011000 */ | ||
2879 | 0x30, /* 0011000 */ | ||
2880 | 0x30, /* 0011000 */ | ||
2881 | 0x30, /* 0011000 */ | ||
2882 | 0x30, /* 0011000 */ | ||
2883 | 0x30, /* 0011000 */ | ||
2884 | 0x30, /* 0011000 */ | ||
2885 | 0x30, /* 0011000 */ | ||
2886 | 0x30, /* 0011000 */ | ||
2887 | 0x30, /* 0011000 */ | ||
2888 | 0x30, /* 0011000 */ | ||
2889 | 0x30, /* 0011000 */ | ||
2890 | 0x30, /* 0011000 */ | ||
2891 | |||
2892 | /* 180 0xb4 '´' */ | ||
2893 | 0x30, /* 0011000 */ | ||
2894 | 0x30, /* 0011000 */ | ||
2895 | 0x30, /* 0011000 */ | ||
2896 | 0x30, /* 0011000 */ | ||
2897 | 0x30, /* 0011000 */ | ||
2898 | 0x30, /* 0011000 */ | ||
2899 | 0xf0, /* 1111000 */ | ||
2900 | 0x30, /* 0011000 */ | ||
2901 | 0x30, /* 0011000 */ | ||
2902 | 0x30, /* 0011000 */ | ||
2903 | 0x30, /* 0011000 */ | ||
2904 | 0x30, /* 0011000 */ | ||
2905 | 0x30, /* 0011000 */ | ||
2906 | 0x30, /* 0011000 */ | ||
2907 | |||
2908 | /* 181 0xb5 'µ' */ | ||
2909 | 0x30, /* 0011000 */ | ||
2910 | 0x30, /* 0011000 */ | ||
2911 | 0x30, /* 0011000 */ | ||
2912 | 0x30, /* 0011000 */ | ||
2913 | 0xf0, /* 1111000 */ | ||
2914 | 0x30, /* 0011000 */ | ||
2915 | 0xf0, /* 1111000 */ | ||
2916 | 0x30, /* 0011000 */ | ||
2917 | 0x30, /* 0011000 */ | ||
2918 | 0x30, /* 0011000 */ | ||
2919 | 0x30, /* 0011000 */ | ||
2920 | 0x30, /* 0011000 */ | ||
2921 | 0x30, /* 0011000 */ | ||
2922 | 0x30, /* 0011000 */ | ||
2923 | |||
2924 | /* 182 0xb6 '¶' */ | ||
2925 | 0x6c, /* 0110110 */ | ||
2926 | 0x6c, /* 0110110 */ | ||
2927 | 0x6c, /* 0110110 */ | ||
2928 | 0x6c, /* 0110110 */ | ||
2929 | 0x6c, /* 0110110 */ | ||
2930 | 0x6c, /* 0110110 */ | ||
2931 | 0xec, /* 1110110 */ | ||
2932 | 0x6c, /* 0110110 */ | ||
2933 | 0x6c, /* 0110110 */ | ||
2934 | 0x6c, /* 0110110 */ | ||
2935 | 0x6c, /* 0110110 */ | ||
2936 | 0x6c, /* 0110110 */ | ||
2937 | 0x6c, /* 0110110 */ | ||
2938 | 0x6c, /* 0110110 */ | ||
2939 | |||
2940 | /* 183 0xb7 '·' */ | ||
2941 | 0x00, /* 0000000 */ | ||
2942 | 0x00, /* 0000000 */ | ||
2943 | 0x00, /* 0000000 */ | ||
2944 | 0x00, /* 0000000 */ | ||
2945 | 0x00, /* 0000000 */ | ||
2946 | 0x00, /* 0000000 */ | ||
2947 | 0xfc, /* 1111110 */ | ||
2948 | 0x6c, /* 0110110 */ | ||
2949 | 0x6c, /* 0110110 */ | ||
2950 | 0x6c, /* 0110110 */ | ||
2951 | 0x6c, /* 0110110 */ | ||
2952 | 0x6c, /* 0110110 */ | ||
2953 | 0x6c, /* 0110110 */ | ||
2954 | 0x6c, /* 0110110 */ | ||
2955 | |||
2956 | /* 184 0xb8 '¸' */ | ||
2957 | 0x00, /* 0000000 */ | ||
2958 | 0x00, /* 0000000 */ | ||
2959 | 0x00, /* 0000000 */ | ||
2960 | 0x00, /* 0000000 */ | ||
2961 | 0xf0, /* 1111000 */ | ||
2962 | 0x30, /* 0011000 */ | ||
2963 | 0xf0, /* 1111000 */ | ||
2964 | 0x30, /* 0011000 */ | ||
2965 | 0x30, /* 0011000 */ | ||
2966 | 0x30, /* 0011000 */ | ||
2967 | 0x30, /* 0011000 */ | ||
2968 | 0x30, /* 0011000 */ | ||
2969 | 0x30, /* 0011000 */ | ||
2970 | 0x30, /* 0011000 */ | ||
2971 | |||
2972 | /* 185 0xb9 '¹' */ | ||
2973 | 0x6c, /* 0110110 */ | ||
2974 | 0x6c, /* 0110110 */ | ||
2975 | 0x6c, /* 0110110 */ | ||
2976 | 0x6c, /* 0110110 */ | ||
2977 | 0xec, /* 1110110 */ | ||
2978 | 0x0c, /* 0000110 */ | ||
2979 | 0xec, /* 1110110 */ | ||
2980 | 0x6c, /* 0110110 */ | ||
2981 | 0x6c, /* 0110110 */ | ||
2982 | 0x6c, /* 0110110 */ | ||
2983 | 0x6c, /* 0110110 */ | ||
2984 | 0x6c, /* 0110110 */ | ||
2985 | 0x6c, /* 0110110 */ | ||
2986 | 0x6c, /* 0110110 */ | ||
2987 | |||
2988 | /* 186 0xba 'º' */ | ||
2989 | 0x6c, /* 0110110 */ | ||
2990 | 0x6c, /* 0110110 */ | ||
2991 | 0x6c, /* 0110110 */ | ||
2992 | 0x6c, /* 0110110 */ | ||
2993 | 0x6c, /* 0110110 */ | ||
2994 | 0x6c, /* 0110110 */ | ||
2995 | 0x6c, /* 0110110 */ | ||
2996 | 0x6c, /* 0110110 */ | ||
2997 | 0x6c, /* 0110110 */ | ||
2998 | 0x6c, /* 0110110 */ | ||
2999 | 0x6c, /* 0110110 */ | ||
3000 | 0x6c, /* 0110110 */ | ||
3001 | 0x6c, /* 0110110 */ | ||
3002 | 0x6c, /* 0110110 */ | ||
3003 | |||
3004 | /* 187 0xbb '»' */ | ||
3005 | 0x00, /* 0000000 */ | ||
3006 | 0x00, /* 0000000 */ | ||
3007 | 0x00, /* 0000000 */ | ||
3008 | 0x00, /* 0000000 */ | ||
3009 | 0xfc, /* 1111110 */ | ||
3010 | 0x0c, /* 0000110 */ | ||
3011 | 0xec, /* 1110110 */ | ||
3012 | 0x6c, /* 0110110 */ | ||
3013 | 0x6c, /* 0110110 */ | ||
3014 | 0x6c, /* 0110110 */ | ||
3015 | 0x6c, /* 0110110 */ | ||
3016 | 0x6c, /* 0110110 */ | ||
3017 | 0x6c, /* 0110110 */ | ||
3018 | 0x6c, /* 0110110 */ | ||
3019 | |||
3020 | /* 188 0xbc '¼' */ | ||
3021 | 0x6c, /* 0110110 */ | ||
3022 | 0x6c, /* 0110110 */ | ||
3023 | 0x6c, /* 0110110 */ | ||
3024 | 0x6c, /* 0110110 */ | ||
3025 | 0xec, /* 1110110 */ | ||
3026 | 0x0c, /* 0000110 */ | ||
3027 | 0xfc, /* 1111110 */ | ||
3028 | 0x00, /* 0000000 */ | ||
3029 | 0x00, /* 0000000 */ | ||
3030 | 0x00, /* 0000000 */ | ||
3031 | 0x00, /* 0000000 */ | ||
3032 | 0x00, /* 0000000 */ | ||
3033 | 0x00, /* 0000000 */ | ||
3034 | 0x00, /* 0000000 */ | ||
3035 | |||
3036 | /* 189 0xbd '½' */ | ||
3037 | 0x6c, /* 0110110 */ | ||
3038 | 0x6c, /* 0110110 */ | ||
3039 | 0x6c, /* 0110110 */ | ||
3040 | 0x6c, /* 0110110 */ | ||
3041 | 0x6c, /* 0110110 */ | ||
3042 | 0x6c, /* 0110110 */ | ||
3043 | 0xfc, /* 1111110 */ | ||
3044 | 0x00, /* 0000000 */ | ||
3045 | 0x00, /* 0000000 */ | ||
3046 | 0x00, /* 0000000 */ | ||
3047 | 0x00, /* 0000000 */ | ||
3048 | 0x00, /* 0000000 */ | ||
3049 | 0x00, /* 0000000 */ | ||
3050 | 0x00, /* 0000000 */ | ||
3051 | |||
3052 | /* 190 0xbe '¾' */ | ||
3053 | 0x30, /* 0011000 */ | ||
3054 | 0x30, /* 0011000 */ | ||
3055 | 0x30, /* 0011000 */ | ||
3056 | 0x30, /* 0011000 */ | ||
3057 | 0xf0, /* 1111000 */ | ||
3058 | 0x30, /* 0011000 */ | ||
3059 | 0xf0, /* 1111000 */ | ||
3060 | 0x00, /* 0000000 */ | ||
3061 | 0x00, /* 0000000 */ | ||
3062 | 0x00, /* 0000000 */ | ||
3063 | 0x00, /* 0000000 */ | ||
3064 | 0x00, /* 0000000 */ | ||
3065 | 0x00, /* 0000000 */ | ||
3066 | 0x00, /* 0000000 */ | ||
3067 | |||
3068 | /* 191 0xbf '¿' */ | ||
3069 | 0x00, /* 0000000 */ | ||
3070 | 0x00, /* 0000000 */ | ||
3071 | 0x00, /* 0000000 */ | ||
3072 | 0x00, /* 0000000 */ | ||
3073 | 0x00, /* 0000000 */ | ||
3074 | 0x00, /* 0000000 */ | ||
3075 | 0xf0, /* 1111000 */ | ||
3076 | 0x30, /* 0011000 */ | ||
3077 | 0x30, /* 0011000 */ | ||
3078 | 0x30, /* 0011000 */ | ||
3079 | 0x30, /* 0011000 */ | ||
3080 | 0x30, /* 0011000 */ | ||
3081 | 0x30, /* 0011000 */ | ||
3082 | 0x30, /* 0011000 */ | ||
3083 | |||
3084 | /* 192 0xc0 'À' */ | ||
3085 | 0x30, /* 0011000 */ | ||
3086 | 0x30, /* 0011000 */ | ||
3087 | 0x30, /* 0011000 */ | ||
3088 | 0x30, /* 0011000 */ | ||
3089 | 0x30, /* 0011000 */ | ||
3090 | 0x30, /* 0011000 */ | ||
3091 | 0x3e, /* 0011111 */ | ||
3092 | 0x00, /* 0000000 */ | ||
3093 | 0x00, /* 0000000 */ | ||
3094 | 0x00, /* 0000000 */ | ||
3095 | 0x00, /* 0000000 */ | ||
3096 | 0x00, /* 0000000 */ | ||
3097 | 0x00, /* 0000000 */ | ||
3098 | 0x00, /* 0000000 */ | ||
3099 | |||
3100 | /* 193 0xc1 'Á' */ | ||
3101 | 0x30, /* 0011000 */ | ||
3102 | 0x30, /* 0011000 */ | ||
3103 | 0x30, /* 0011000 */ | ||
3104 | 0x30, /* 0011000 */ | ||
3105 | 0x30, /* 0011000 */ | ||
3106 | 0x30, /* 0011000 */ | ||
3107 | 0xfe, /* 1111111 */ | ||
3108 | 0x00, /* 0000000 */ | ||
3109 | 0x00, /* 0000000 */ | ||
3110 | 0x00, /* 0000000 */ | ||
3111 | 0x00, /* 0000000 */ | ||
3112 | 0x00, /* 0000000 */ | ||
3113 | 0x00, /* 0000000 */ | ||
3114 | 0x00, /* 0000000 */ | ||
3115 | |||
3116 | /* 194 0xc2 'Â' */ | ||
3117 | 0x00, /* 0000000 */ | ||
3118 | 0x00, /* 0000000 */ | ||
3119 | 0x00, /* 0000000 */ | ||
3120 | 0x00, /* 0000000 */ | ||
3121 | 0x00, /* 0000000 */ | ||
3122 | 0x00, /* 0000000 */ | ||
3123 | 0xfe, /* 1111111 */ | ||
3124 | 0x30, /* 0011000 */ | ||
3125 | 0x30, /* 0011000 */ | ||
3126 | 0x30, /* 0011000 */ | ||
3127 | 0x30, /* 0011000 */ | ||
3128 | 0x30, /* 0011000 */ | ||
3129 | 0x30, /* 0011000 */ | ||
3130 | 0x30, /* 0011000 */ | ||
3131 | |||
3132 | /* 195 0xc3 'Ã' */ | ||
3133 | 0x30, /* 0011000 */ | ||
3134 | 0x30, /* 0011000 */ | ||
3135 | 0x30, /* 0011000 */ | ||
3136 | 0x30, /* 0011000 */ | ||
3137 | 0x30, /* 0011000 */ | ||
3138 | 0x30, /* 0011000 */ | ||
3139 | 0x3e, /* 0011111 */ | ||
3140 | 0x30, /* 0011000 */ | ||
3141 | 0x30, /* 0011000 */ | ||
3142 | 0x30, /* 0011000 */ | ||
3143 | 0x30, /* 0011000 */ | ||
3144 | 0x30, /* 0011000 */ | ||
3145 | 0x30, /* 0011000 */ | ||
3146 | 0x30, /* 0011000 */ | ||
3147 | |||
3148 | /* 196 0xc4 'Ä' */ | ||
3149 | 0x00, /* 0000000 */ | ||
3150 | 0x00, /* 0000000 */ | ||
3151 | 0x00, /* 0000000 */ | ||
3152 | 0x00, /* 0000000 */ | ||
3153 | 0x00, /* 0000000 */ | ||
3154 | 0x00, /* 0000000 */ | ||
3155 | 0xfe, /* 1111111 */ | ||
3156 | 0x00, /* 0000000 */ | ||
3157 | 0x00, /* 0000000 */ | ||
3158 | 0x00, /* 0000000 */ | ||
3159 | 0x00, /* 0000000 */ | ||
3160 | 0x00, /* 0000000 */ | ||
3161 | 0x00, /* 0000000 */ | ||
3162 | 0x00, /* 0000000 */ | ||
3163 | |||
3164 | /* 197 0xc5 'Å' */ | ||
3165 | 0x30, /* 0011000 */ | ||
3166 | 0x30, /* 0011000 */ | ||
3167 | 0x30, /* 0011000 */ | ||
3168 | 0x30, /* 0011000 */ | ||
3169 | 0x30, /* 0011000 */ | ||
3170 | 0x30, /* 0011000 */ | ||
3171 | 0xfe, /* 1111111 */ | ||
3172 | 0x30, /* 0011000 */ | ||
3173 | 0x30, /* 0011000 */ | ||
3174 | 0x30, /* 0011000 */ | ||
3175 | 0x30, /* 0011000 */ | ||
3176 | 0x30, /* 0011000 */ | ||
3177 | 0x30, /* 0011000 */ | ||
3178 | 0x30, /* 0011000 */ | ||
3179 | |||
3180 | /* 198 0xc6 'Æ' */ | ||
3181 | 0x30, /* 0011000 */ | ||
3182 | 0x30, /* 0011000 */ | ||
3183 | 0x30, /* 0011000 */ | ||
3184 | 0x30, /* 0011000 */ | ||
3185 | 0x3e, /* 0011111 */ | ||
3186 | 0x30, /* 0011000 */ | ||
3187 | 0x3e, /* 0011111 */ | ||
3188 | 0x30, /* 0011000 */ | ||
3189 | 0x30, /* 0011000 */ | ||
3190 | 0x30, /* 0011000 */ | ||
3191 | 0x30, /* 0011000 */ | ||
3192 | 0x30, /* 0011000 */ | ||
3193 | 0x30, /* 0011000 */ | ||
3194 | 0x30, /* 0011000 */ | ||
3195 | |||
3196 | /* 199 0xc7 'Ç' */ | ||
3197 | 0x6c, /* 0110110 */ | ||
3198 | 0x6c, /* 0110110 */ | ||
3199 | 0x6c, /* 0110110 */ | ||
3200 | 0x6c, /* 0110110 */ | ||
3201 | 0x6c, /* 0110110 */ | ||
3202 | 0x6c, /* 0110110 */ | ||
3203 | 0x6e, /* 0110111 */ | ||
3204 | 0x6c, /* 0110110 */ | ||
3205 | 0x6c, /* 0110110 */ | ||
3206 | 0x6c, /* 0110110 */ | ||
3207 | 0x6c, /* 0110110 */ | ||
3208 | 0x6c, /* 0110110 */ | ||
3209 | 0x6c, /* 0110110 */ | ||
3210 | 0x6c, /* 0110110 */ | ||
3211 | |||
3212 | /* 200 0xc8 'È' */ | ||
3213 | 0x6c, /* 0110110 */ | ||
3214 | 0x6c, /* 0110110 */ | ||
3215 | 0x6c, /* 0110110 */ | ||
3216 | 0x6c, /* 0110110 */ | ||
3217 | 0x6e, /* 0110111 */ | ||
3218 | 0x60, /* 0110000 */ | ||
3219 | 0x7e, /* 0111111 */ | ||
3220 | 0x00, /* 0000000 */ | ||
3221 | 0x00, /* 0000000 */ | ||
3222 | 0x00, /* 0000000 */ | ||
3223 | 0x00, /* 0000000 */ | ||
3224 | 0x00, /* 0000000 */ | ||
3225 | 0x00, /* 0000000 */ | ||
3226 | 0x00, /* 0000000 */ | ||
3227 | |||
3228 | /* 201 0xc9 'É' */ | ||
3229 | 0x00, /* 0000000 */ | ||
3230 | 0x00, /* 0000000 */ | ||
3231 | 0x00, /* 0000000 */ | ||
3232 | 0x00, /* 0000000 */ | ||
3233 | 0x7e, /* 0111111 */ | ||
3234 | 0x60, /* 0110000 */ | ||
3235 | 0x6e, /* 0110111 */ | ||
3236 | 0x6c, /* 0110110 */ | ||
3237 | 0x6c, /* 0110110 */ | ||
3238 | 0x6c, /* 0110110 */ | ||
3239 | 0x6c, /* 0110110 */ | ||
3240 | 0x6c, /* 0110110 */ | ||
3241 | 0x6c, /* 0110110 */ | ||
3242 | 0x6c, /* 0110110 */ | ||
3243 | |||
3244 | /* 202 0xca 'Ê' */ | ||
3245 | 0x6c, /* 0110110 */ | ||
3246 | 0x6c, /* 0110110 */ | ||
3247 | 0x6c, /* 0110110 */ | ||
3248 | 0x6c, /* 0110110 */ | ||
3249 | 0xee, /* 1110111 */ | ||
3250 | 0x00, /* 0000000 */ | ||
3251 | 0xfe, /* 1111111 */ | ||
3252 | 0x00, /* 0000000 */ | ||
3253 | 0x00, /* 0000000 */ | ||
3254 | 0x00, /* 0000000 */ | ||
3255 | 0x00, /* 0000000 */ | ||
3256 | 0x00, /* 0000000 */ | ||
3257 | 0x00, /* 0000000 */ | ||
3258 | 0x00, /* 0000000 */ | ||
3259 | |||
3260 | /* 203 0xcb 'Ë' */ | ||
3261 | 0x00, /* 0000000 */ | ||
3262 | 0x00, /* 0000000 */ | ||
3263 | 0x00, /* 0000000 */ | ||
3264 | 0x00, /* 0000000 */ | ||
3265 | 0xfe, /* 1111111 */ | ||
3266 | 0x00, /* 0000000 */ | ||
3267 | 0xee, /* 1110111 */ | ||
3268 | 0x6c, /* 0110110 */ | ||
3269 | 0x6c, /* 0110110 */ | ||
3270 | 0x6c, /* 0110110 */ | ||
3271 | 0x6c, /* 0110110 */ | ||
3272 | 0x6c, /* 0110110 */ | ||
3273 | 0x6c, /* 0110110 */ | ||
3274 | 0x6c, /* 0110110 */ | ||
3275 | |||
3276 | /* 204 0xcc 'Ì' */ | ||
3277 | 0x6c, /* 0110110 */ | ||
3278 | 0x6c, /* 0110110 */ | ||
3279 | 0x6c, /* 0110110 */ | ||
3280 | 0x6c, /* 0110110 */ | ||
3281 | 0x6e, /* 0110111 */ | ||
3282 | 0x60, /* 0110000 */ | ||
3283 | 0x6e, /* 0110111 */ | ||
3284 | 0x6c, /* 0110110 */ | ||
3285 | 0x6c, /* 0110110 */ | ||
3286 | 0x6c, /* 0110110 */ | ||
3287 | 0x6c, /* 0110110 */ | ||
3288 | 0x6c, /* 0110110 */ | ||
3289 | 0x6c, /* 0110110 */ | ||
3290 | 0x6c, /* 0110110 */ | ||
3291 | |||
3292 | /* 205 0xcd 'Í' */ | ||
3293 | 0x00, /* 0000000 */ | ||
3294 | 0x00, /* 0000000 */ | ||
3295 | 0x00, /* 0000000 */ | ||
3296 | 0x00, /* 0000000 */ | ||
3297 | 0xfe, /* 1111111 */ | ||
3298 | 0x00, /* 0000000 */ | ||
3299 | 0xfe, /* 1111111 */ | ||
3300 | 0x00, /* 0000000 */ | ||
3301 | 0x00, /* 0000000 */ | ||
3302 | 0x00, /* 0000000 */ | ||
3303 | 0x00, /* 0000000 */ | ||
3304 | 0x00, /* 0000000 */ | ||
3305 | 0x00, /* 0000000 */ | ||
3306 | 0x00, /* 0000000 */ | ||
3307 | |||
3308 | /* 206 0xce 'Î' */ | ||
3309 | 0x6c, /* 0110110 */ | ||
3310 | 0x6c, /* 0110110 */ | ||
3311 | 0x6c, /* 0110110 */ | ||
3312 | 0x6c, /* 0110110 */ | ||
3313 | 0xee, /* 1110111 */ | ||
3314 | 0x00, /* 0000000 */ | ||
3315 | 0xee, /* 1110111 */ | ||
3316 | 0x6c, /* 0110110 */ | ||
3317 | 0x6c, /* 0110110 */ | ||
3318 | 0x6c, /* 0110110 */ | ||
3319 | 0x6c, /* 0110110 */ | ||
3320 | 0x6c, /* 0110110 */ | ||
3321 | 0x6c, /* 0110110 */ | ||
3322 | 0x6c, /* 0110110 */ | ||
3323 | |||
3324 | /* 207 0xcf 'Ï' */ | ||
3325 | 0x30, /* 0011000 */ | ||
3326 | 0x30, /* 0011000 */ | ||
3327 | 0x30, /* 0011000 */ | ||
3328 | 0x30, /* 0011000 */ | ||
3329 | 0xfe, /* 1111111 */ | ||
3330 | 0x00, /* 0000000 */ | ||
3331 | 0xfe, /* 1111111 */ | ||
3332 | 0x00, /* 0000000 */ | ||
3333 | 0x00, /* 0000000 */ | ||
3334 | 0x00, /* 0000000 */ | ||
3335 | 0x00, /* 0000000 */ | ||
3336 | 0x00, /* 0000000 */ | ||
3337 | 0x00, /* 0000000 */ | ||
3338 | 0x00, /* 0000000 */ | ||
3339 | |||
3340 | /* 208 0xd0 'Ð' */ | ||
3341 | 0x6c, /* 0110110 */ | ||
3342 | 0x6c, /* 0110110 */ | ||
3343 | 0x6c, /* 0110110 */ | ||
3344 | 0x6c, /* 0110110 */ | ||
3345 | 0x6c, /* 0110110 */ | ||
3346 | 0x6c, /* 0110110 */ | ||
3347 | 0xfe, /* 1111111 */ | ||
3348 | 0x00, /* 0000000 */ | ||
3349 | 0x00, /* 0000000 */ | ||
3350 | 0x00, /* 0000000 */ | ||
3351 | 0x00, /* 0000000 */ | ||
3352 | 0x00, /* 0000000 */ | ||
3353 | 0x00, /* 0000000 */ | ||
3354 | 0x00, /* 0000000 */ | ||
3355 | |||
3356 | /* 209 0xd1 'Ñ' */ | ||
3357 | 0x00, /* 0000000 */ | ||
3358 | 0x00, /* 0000000 */ | ||
3359 | 0x00, /* 0000000 */ | ||
3360 | 0x00, /* 0000000 */ | ||
3361 | 0xfe, /* 1111111 */ | ||
3362 | 0x00, /* 0000000 */ | ||
3363 | 0xfe, /* 1111111 */ | ||
3364 | 0x30, /* 0011000 */ | ||
3365 | 0x30, /* 0011000 */ | ||
3366 | 0x30, /* 0011000 */ | ||
3367 | 0x30, /* 0011000 */ | ||
3368 | 0x30, /* 0011000 */ | ||
3369 | 0x30, /* 0011000 */ | ||
3370 | 0x30, /* 0011000 */ | ||
3371 | |||
3372 | /* 210 0xd2 'Ò' */ | ||
3373 | 0x00, /* 0000000 */ | ||
3374 | 0x00, /* 0000000 */ | ||
3375 | 0x00, /* 0000000 */ | ||
3376 | 0x00, /* 0000000 */ | ||
3377 | 0x00, /* 0000000 */ | ||
3378 | 0x00, /* 0000000 */ | ||
3379 | 0xfe, /* 1111111 */ | ||
3380 | 0x6c, /* 0110110 */ | ||
3381 | 0x6c, /* 0110110 */ | ||
3382 | 0x6c, /* 0110110 */ | ||
3383 | 0x6c, /* 0110110 */ | ||
3384 | 0x6c, /* 0110110 */ | ||
3385 | 0x6c, /* 0110110 */ | ||
3386 | 0x6c, /* 0110110 */ | ||
3387 | |||
3388 | /* 211 0xd3 'Ó' */ | ||
3389 | 0x6c, /* 0110110 */ | ||
3390 | 0x6c, /* 0110110 */ | ||
3391 | 0x6c, /* 0110110 */ | ||
3392 | 0x6c, /* 0110110 */ | ||
3393 | 0x6c, /* 0110110 */ | ||
3394 | 0x6c, /* 0110110 */ | ||
3395 | 0x7e, /* 0111111 */ | ||
3396 | 0x00, /* 0000000 */ | ||
3397 | 0x00, /* 0000000 */ | ||
3398 | 0x00, /* 0000000 */ | ||
3399 | 0x00, /* 0000000 */ | ||
3400 | 0x00, /* 0000000 */ | ||
3401 | 0x00, /* 0000000 */ | ||
3402 | 0x00, /* 0000000 */ | ||
3403 | |||
3404 | /* 212 0xd4 'Ô' */ | ||
3405 | 0x30, /* 0011000 */ | ||
3406 | 0x30, /* 0011000 */ | ||
3407 | 0x30, /* 0011000 */ | ||
3408 | 0x30, /* 0011000 */ | ||
3409 | 0x3e, /* 0011111 */ | ||
3410 | 0x30, /* 0011000 */ | ||
3411 | 0x3e, /* 0011111 */ | ||
3412 | 0x00, /* 0000000 */ | ||
3413 | 0x00, /* 0000000 */ | ||
3414 | 0x00, /* 0000000 */ | ||
3415 | 0x00, /* 0000000 */ | ||
3416 | 0x00, /* 0000000 */ | ||
3417 | 0x00, /* 0000000 */ | ||
3418 | 0x00, /* 0000000 */ | ||
3419 | |||
3420 | /* 213 0xd5 'Õ' */ | ||
3421 | 0x00, /* 0000000 */ | ||
3422 | 0x00, /* 0000000 */ | ||
3423 | 0x00, /* 0000000 */ | ||
3424 | 0x00, /* 0000000 */ | ||
3425 | 0x3e, /* 0011111 */ | ||
3426 | 0x30, /* 0011000 */ | ||
3427 | 0x3e, /* 0011111 */ | ||
3428 | 0x30, /* 0011000 */ | ||
3429 | 0x30, /* 0011000 */ | ||
3430 | 0x30, /* 0011000 */ | ||
3431 | 0x30, /* 0011000 */ | ||
3432 | 0x30, /* 0011000 */ | ||
3433 | 0x30, /* 0011000 */ | ||
3434 | 0x30, /* 0011000 */ | ||
3435 | |||
3436 | /* 214 0xd6 'Ö' */ | ||
3437 | 0x00, /* 0000000 */ | ||
3438 | 0x00, /* 0000000 */ | ||
3439 | 0x00, /* 0000000 */ | ||
3440 | 0x00, /* 0000000 */ | ||
3441 | 0x00, /* 0000000 */ | ||
3442 | 0x00, /* 0000000 */ | ||
3443 | 0x7e, /* 0111111 */ | ||
3444 | 0x6c, /* 0110110 */ | ||
3445 | 0x6c, /* 0110110 */ | ||
3446 | 0x6c, /* 0110110 */ | ||
3447 | 0x6c, /* 0110110 */ | ||
3448 | 0x6c, /* 0110110 */ | ||
3449 | 0x6c, /* 0110110 */ | ||
3450 | 0x6c, /* 0110110 */ | ||
3451 | |||
3452 | /* 215 0xd7 '×' */ | ||
3453 | 0x6c, /* 0110110 */ | ||
3454 | 0x6c, /* 0110110 */ | ||
3455 | 0x6c, /* 0110110 */ | ||
3456 | 0x6c, /* 0110110 */ | ||
3457 | 0x6c, /* 0110110 */ | ||
3458 | 0x6c, /* 0110110 */ | ||
3459 | 0xfe, /* 1111111 */ | ||
3460 | 0x6c, /* 0110110 */ | ||
3461 | 0x6c, /* 0110110 */ | ||
3462 | 0x6c, /* 0110110 */ | ||
3463 | 0x6c, /* 0110110 */ | ||
3464 | 0x6c, /* 0110110 */ | ||
3465 | 0x6c, /* 0110110 */ | ||
3466 | 0x6c, /* 0110110 */ | ||
3467 | |||
3468 | /* 216 0xd8 'Ø' */ | ||
3469 | 0x30, /* 0011000 */ | ||
3470 | 0x30, /* 0011000 */ | ||
3471 | 0x30, /* 0011000 */ | ||
3472 | 0x30, /* 0011000 */ | ||
3473 | 0xfe, /* 1111111 */ | ||
3474 | 0x30, /* 0011000 */ | ||
3475 | 0xfe, /* 1111111 */ | ||
3476 | 0x30, /* 0011000 */ | ||
3477 | 0x30, /* 0011000 */ | ||
3478 | 0x30, /* 0011000 */ | ||
3479 | 0x30, /* 0011000 */ | ||
3480 | 0x30, /* 0011000 */ | ||
3481 | 0x30, /* 0011000 */ | ||
3482 | 0x30, /* 0011000 */ | ||
3483 | |||
3484 | /* 217 0xd9 'Ù' */ | ||
3485 | 0x30, /* 0011000 */ | ||
3486 | 0x30, /* 0011000 */ | ||
3487 | 0x30, /* 0011000 */ | ||
3488 | 0x30, /* 0011000 */ | ||
3489 | 0x30, /* 0011000 */ | ||
3490 | 0x30, /* 0011000 */ | ||
3491 | 0xf0, /* 1111000 */ | ||
3492 | 0x00, /* 0000000 */ | ||
3493 | 0x00, /* 0000000 */ | ||
3494 | 0x00, /* 0000000 */ | ||
3495 | 0x00, /* 0000000 */ | ||
3496 | 0x00, /* 0000000 */ | ||
3497 | 0x00, /* 0000000 */ | ||
3498 | 0x00, /* 0000000 */ | ||
3499 | |||
3500 | /* 218 0xda 'Ú' */ | ||
3501 | 0x00, /* 0000000 */ | ||
3502 | 0x00, /* 0000000 */ | ||
3503 | 0x00, /* 0000000 */ | ||
3504 | 0x00, /* 0000000 */ | ||
3505 | 0x00, /* 0000000 */ | ||
3506 | 0x00, /* 0000000 */ | ||
3507 | 0x3e, /* 0011111 */ | ||
3508 | 0x30, /* 0011000 */ | ||
3509 | 0x30, /* 0011000 */ | ||
3510 | 0x30, /* 0011000 */ | ||
3511 | 0x30, /* 0011000 */ | ||
3512 | 0x30, /* 0011000 */ | ||
3513 | 0x30, /* 0011000 */ | ||
3514 | 0x30, /* 0011000 */ | ||
3515 | |||
3516 | /* 219 0xdb 'Û' */ | ||
3517 | 0xfe, /* 1111111 */ | ||
3518 | 0xfe, /* 1111111 */ | ||
3519 | 0xfe, /* 1111111 */ | ||
3520 | 0xfe, /* 1111111 */ | ||
3521 | 0xfe, /* 1111111 */ | ||
3522 | 0xfe, /* 1111111 */ | ||
3523 | 0xfe, /* 1111111 */ | ||
3524 | 0xfe, /* 1111111 */ | ||
3525 | 0xfe, /* 1111111 */ | ||
3526 | 0xfe, /* 1111111 */ | ||
3527 | 0xfe, /* 1111111 */ | ||
3528 | 0xfe, /* 1111111 */ | ||
3529 | 0xfe, /* 1111111 */ | ||
3530 | 0xfe, /* 1111111 */ | ||
3531 | |||
3532 | /* 220 0xdc 'Ü' */ | ||
3533 | 0x00, /* 0000000 */ | ||
3534 | 0x00, /* 0000000 */ | ||
3535 | 0x00, /* 0000000 */ | ||
3536 | 0x00, /* 0000000 */ | ||
3537 | 0x00, /* 0000000 */ | ||
3538 | 0x00, /* 0000000 */ | ||
3539 | 0xfe, /* 1111111 */ | ||
3540 | 0xfe, /* 1111111 */ | ||
3541 | 0xfe, /* 1111111 */ | ||
3542 | 0xfe, /* 1111111 */ | ||
3543 | 0xfe, /* 1111111 */ | ||
3544 | 0xfe, /* 1111111 */ | ||
3545 | 0xfe, /* 1111111 */ | ||
3546 | 0xfe, /* 1111111 */ | ||
3547 | |||
3548 | /* 221 0xdd 'Ý' */ | ||
3549 | 0xe0, /* 1110000 */ | ||
3550 | 0xe0, /* 1110000 */ | ||
3551 | 0xe0, /* 1110000 */ | ||
3552 | 0xe0, /* 1110000 */ | ||
3553 | 0xe0, /* 1110000 */ | ||
3554 | 0xe0, /* 1110000 */ | ||
3555 | 0xe0, /* 1110000 */ | ||
3556 | 0xe0, /* 1110000 */ | ||
3557 | 0xe0, /* 1110000 */ | ||
3558 | 0xe0, /* 1110000 */ | ||
3559 | 0xe0, /* 1110000 */ | ||
3560 | 0xe0, /* 1110000 */ | ||
3561 | 0xe0, /* 1110000 */ | ||
3562 | 0xe0, /* 1110000 */ | ||
3563 | |||
3564 | /* 222 0xde 'Þ' */ | ||
3565 | 0x1e, /* 0001111 */ | ||
3566 | 0x1e, /* 0001111 */ | ||
3567 | 0x1e, /* 0001111 */ | ||
3568 | 0x1e, /* 0001111 */ | ||
3569 | 0x1e, /* 0001111 */ | ||
3570 | 0x1e, /* 0001111 */ | ||
3571 | 0x1e, /* 0001111 */ | ||
3572 | 0x1e, /* 0001111 */ | ||
3573 | 0x1e, /* 0001111 */ | ||
3574 | 0x1e, /* 0001111 */ | ||
3575 | 0x1e, /* 0001111 */ | ||
3576 | 0x1e, /* 0001111 */ | ||
3577 | 0x1e, /* 0001111 */ | ||
3578 | 0x1e, /* 0001111 */ | ||
3579 | |||
3580 | /* 223 0xdf 'ß' */ | ||
3581 | 0xfe, /* 1111111 */ | ||
3582 | 0xfe, /* 1111111 */ | ||
3583 | 0xfe, /* 1111111 */ | ||
3584 | 0xfe, /* 1111111 */ | ||
3585 | 0xfe, /* 1111111 */ | ||
3586 | 0xfe, /* 1111111 */ | ||
3587 | 0x00, /* 0000000 */ | ||
3588 | 0x00, /* 0000000 */ | ||
3589 | 0x00, /* 0000000 */ | ||
3590 | 0x00, /* 0000000 */ | ||
3591 | 0x00, /* 0000000 */ | ||
3592 | 0x00, /* 0000000 */ | ||
3593 | 0x00, /* 0000000 */ | ||
3594 | 0x00, /* 0000000 */ | ||
3595 | |||
3596 | /* 224 0xe0 'à' */ | ||
3597 | 0x00, /* 0000000 */ | ||
3598 | 0x00, /* 0000000 */ | ||
3599 | 0x00, /* 0000000 */ | ||
3600 | 0x00, /* 0000000 */ | ||
3601 | 0x76, /* 0111011 */ | ||
3602 | 0xdc, /* 1101110 */ | ||
3603 | 0xd8, /* 1101100 */ | ||
3604 | 0xd8, /* 1101100 */ | ||
3605 | 0xd8, /* 1101100 */ | ||
3606 | 0xdc, /* 1101110 */ | ||
3607 | 0x76, /* 0111011 */ | ||
3608 | 0x00, /* 0000000 */ | ||
3609 | 0x00, /* 0000000 */ | ||
3610 | 0x00, /* 0000000 */ | ||
3611 | |||
3612 | /* 225 0xe1 'á' */ | ||
3613 | 0x00, /* 0000000 */ | ||
3614 | 0x78, /* 0111100 */ | ||
3615 | 0xcc, /* 1100110 */ | ||
3616 | 0xcc, /* 1100110 */ | ||
3617 | 0xcc, /* 1100110 */ | ||
3618 | 0xd8, /* 1101100 */ | ||
3619 | 0xcc, /* 1100110 */ | ||
3620 | 0xc6, /* 1100011 */ | ||
3621 | 0xc6, /* 1100011 */ | ||
3622 | 0xc6, /* 1100011 */ | ||
3623 | 0xcc, /* 1100110 */ | ||
3624 | 0x00, /* 0000000 */ | ||
3625 | 0x00, /* 0000000 */ | ||
3626 | 0x00, /* 0000000 */ | ||
3627 | |||
3628 | /* 226 0xe2 'â' */ | ||
3629 | 0x00, /* 0000000 */ | ||
3630 | 0xfc, /* 1111110 */ | ||
3631 | 0xcc, /* 1100110 */ | ||
3632 | 0xcc, /* 1100110 */ | ||
3633 | 0xc0, /* 1100000 */ | ||
3634 | 0xc0, /* 1100000 */ | ||
3635 | 0xc0, /* 1100000 */ | ||
3636 | 0xc0, /* 1100000 */ | ||
3637 | 0xc0, /* 1100000 */ | ||
3638 | 0xc0, /* 1100000 */ | ||
3639 | 0xc0, /* 1100000 */ | ||
3640 | 0x00, /* 0000000 */ | ||
3641 | 0x00, /* 0000000 */ | ||
3642 | 0x00, /* 0000000 */ | ||
3643 | |||
3644 | /* 227 0xe3 'ã' */ | ||
3645 | 0x00, /* 0000000 */ | ||
3646 | 0x00, /* 0000000 */ | ||
3647 | 0xfe, /* 1111111 */ | ||
3648 | 0xfe, /* 1111111 */ | ||
3649 | 0x6c, /* 0110110 */ | ||
3650 | 0x6c, /* 0110110 */ | ||
3651 | 0x6c, /* 0110110 */ | ||
3652 | 0x6c, /* 0110110 */ | ||
3653 | 0x6c, /* 0110110 */ | ||
3654 | 0x6c, /* 0110110 */ | ||
3655 | 0x6c, /* 0110110 */ | ||
3656 | 0x00, /* 0000000 */ | ||
3657 | 0x00, /* 0000000 */ | ||
3658 | 0x00, /* 0000000 */ | ||
3659 | |||
3660 | /* 228 0xe4 'ä' */ | ||
3661 | 0x00, /* 0000000 */ | ||
3662 | 0xfc, /* 1111110 */ | ||
3663 | 0xcc, /* 1100110 */ | ||
3664 | 0x60, /* 0110000 */ | ||
3665 | 0x30, /* 0011000 */ | ||
3666 | 0x18, /* 0001100 */ | ||
3667 | 0x18, /* 0001100 */ | ||
3668 | 0x30, /* 0011000 */ | ||
3669 | 0x60, /* 0110000 */ | ||
3670 | 0xcc, /* 1100110 */ | ||
3671 | 0xfc, /* 1111110 */ | ||
3672 | 0x00, /* 0000000 */ | ||
3673 | 0x00, /* 0000000 */ | ||
3674 | 0x00, /* 0000000 */ | ||
3675 | |||
3676 | /* 229 0xe5 'å' */ | ||
3677 | 0x00, /* 0000000 */ | ||
3678 | 0x00, /* 0000000 */ | ||
3679 | 0x00, /* 0000000 */ | ||
3680 | 0x00, /* 0000000 */ | ||
3681 | 0x7e, /* 0111111 */ | ||
3682 | 0xd8, /* 1101100 */ | ||
3683 | 0xd8, /* 1101100 */ | ||
3684 | 0xd8, /* 1101100 */ | ||
3685 | 0xd8, /* 1101100 */ | ||
3686 | 0xd8, /* 1101100 */ | ||
3687 | 0x70, /* 0111000 */ | ||
3688 | 0x00, /* 0000000 */ | ||
3689 | 0x00, /* 0000000 */ | ||
3690 | 0x00, /* 0000000 */ | ||
3691 | |||
3692 | /* 230 0xe6 'æ' */ | ||
3693 | 0x00, /* 0000000 */ | ||
3694 | 0x00, /* 0000000 */ | ||
3695 | 0x00, /* 0000000 */ | ||
3696 | 0x00, /* 0000000 */ | ||
3697 | 0xcc, /* 1100110 */ | ||
3698 | 0xcc, /* 1100110 */ | ||
3699 | 0xcc, /* 1100110 */ | ||
3700 | 0xcc, /* 1100110 */ | ||
3701 | 0xcc, /* 1100110 */ | ||
3702 | 0xcc, /* 1100110 */ | ||
3703 | 0xf8, /* 1111100 */ | ||
3704 | 0xc0, /* 1100000 */ | ||
3705 | 0xc0, /* 1100000 */ | ||
3706 | 0x80, /* 1000000 */ | ||
3707 | |||
3708 | /* 231 0xe7 'ç' */ | ||
3709 | 0x00, /* 0000000 */ | ||
3710 | 0x00, /* 0000000 */ | ||
3711 | 0x00, /* 0000000 */ | ||
3712 | 0x76, /* 0111011 */ | ||
3713 | 0xdc, /* 1101110 */ | ||
3714 | 0x18, /* 0001100 */ | ||
3715 | 0x18, /* 0001100 */ | ||
3716 | 0x18, /* 0001100 */ | ||
3717 | 0x18, /* 0001100 */ | ||
3718 | 0x18, /* 0001100 */ | ||
3719 | 0x18, /* 0001100 */ | ||
3720 | 0x00, /* 0000000 */ | ||
3721 | 0x00, /* 0000000 */ | ||
3722 | 0x00, /* 0000000 */ | ||
3723 | |||
3724 | /* 232 0xe8 'è' */ | ||
3725 | 0x00, /* 0000000 */ | ||
3726 | 0xfc, /* 1111110 */ | ||
3727 | 0x30, /* 0011000 */ | ||
3728 | 0x78, /* 0111100 */ | ||
3729 | 0xcc, /* 1100110 */ | ||
3730 | 0xcc, /* 1100110 */ | ||
3731 | 0xcc, /* 1100110 */ | ||
3732 | 0xcc, /* 1100110 */ | ||
3733 | 0x78, /* 0111100 */ | ||
3734 | 0x30, /* 0011000 */ | ||
3735 | 0xfc, /* 1111110 */ | ||
3736 | 0x00, /* 0000000 */ | ||
3737 | 0x00, /* 0000000 */ | ||
3738 | 0x00, /* 0000000 */ | ||
3739 | |||
3740 | /* 233 0xe9 'é' */ | ||
3741 | 0x00, /* 0000000 */ | ||
3742 | 0x38, /* 0011100 */ | ||
3743 | 0x6c, /* 0110110 */ | ||
3744 | 0xcc, /* 1100110 */ | ||
3745 | 0xcc, /* 1100110 */ | ||
3746 | 0xfc, /* 1111110 */ | ||
3747 | 0xcc, /* 1100110 */ | ||
3748 | 0xcc, /* 1100110 */ | ||
3749 | 0xcc, /* 1100110 */ | ||
3750 | 0x6c, /* 0110110 */ | ||
3751 | 0x38, /* 0011100 */ | ||
3752 | 0x00, /* 0000000 */ | ||
3753 | 0x00, /* 0000000 */ | ||
3754 | 0x00, /* 0000000 */ | ||
3755 | |||
3756 | /* 234 0xea 'ê' */ | ||
3757 | 0x00, /* 0000000 */ | ||
3758 | 0x38, /* 0011100 */ | ||
3759 | 0x6c, /* 0110110 */ | ||
3760 | 0xc6, /* 1100011 */ | ||
3761 | 0xc6, /* 1100011 */ | ||
3762 | 0xc6, /* 1100011 */ | ||
3763 | 0x6c, /* 0110110 */ | ||
3764 | 0x6c, /* 0110110 */ | ||
3765 | 0x6c, /* 0110110 */ | ||
3766 | 0x6c, /* 0110110 */ | ||
3767 | 0xee, /* 1110111 */ | ||
3768 | 0x00, /* 0000000 */ | ||
3769 | 0x00, /* 0000000 */ | ||
3770 | 0x00, /* 0000000 */ | ||
3771 | |||
3772 | /* 235 0xeb 'ë' */ | ||
3773 | 0x00, /* 0000000 */ | ||
3774 | 0x3c, /* 0011110 */ | ||
3775 | 0x60, /* 0110000 */ | ||
3776 | 0x30, /* 0011000 */ | ||
3777 | 0x18, /* 0001100 */ | ||
3778 | 0x7c, /* 0111110 */ | ||
3779 | 0xcc, /* 1100110 */ | ||
3780 | 0xcc, /* 1100110 */ | ||
3781 | 0xcc, /* 1100110 */ | ||
3782 | 0xcc, /* 1100110 */ | ||
3783 | 0x78, /* 0111100 */ | ||
3784 | 0x00, /* 0000000 */ | ||
3785 | 0x00, /* 0000000 */ | ||
3786 | 0x00, /* 0000000 */ | ||
3787 | |||
3788 | /* 236 0xec 'ì' */ | ||
3789 | 0x00, /* 0000000 */ | ||
3790 | 0x00, /* 0000000 */ | ||
3791 | 0x00, /* 0000000 */ | ||
3792 | 0x00, /* 0000000 */ | ||
3793 | 0x7c, /* 0111110 */ | ||
3794 | 0xd6, /* 1101011 */ | ||
3795 | 0xd6, /* 1101011 */ | ||
3796 | 0xd6, /* 1101011 */ | ||
3797 | 0x7c, /* 0111110 */ | ||
3798 | 0x00, /* 0000000 */ | ||
3799 | 0x00, /* 0000000 */ | ||
3800 | 0x00, /* 0000000 */ | ||
3801 | 0x00, /* 0000000 */ | ||
3802 | 0x00, /* 0000000 */ | ||
3803 | |||
3804 | /* 237 0xed 'í' */ | ||
3805 | 0x00, /* 0000000 */ | ||
3806 | 0x00, /* 0000000 */ | ||
3807 | 0x06, /* 0000011 */ | ||
3808 | 0x0c, /* 0000110 */ | ||
3809 | 0x7c, /* 0111110 */ | ||
3810 | 0xd6, /* 1101011 */ | ||
3811 | 0xd6, /* 1101011 */ | ||
3812 | 0xe6, /* 1110011 */ | ||
3813 | 0x7c, /* 0111110 */ | ||
3814 | 0x60, /* 0110000 */ | ||
3815 | 0xc0, /* 1100000 */ | ||
3816 | 0x00, /* 0000000 */ | ||
3817 | 0x00, /* 0000000 */ | ||
3818 | 0x00, /* 0000000 */ | ||
3819 | |||
3820 | /* 238 0xee 'î' */ | ||
3821 | 0x00, /* 0000000 */ | ||
3822 | 0x1c, /* 0001110 */ | ||
3823 | 0x30, /* 0011000 */ | ||
3824 | 0x60, /* 0110000 */ | ||
3825 | 0x60, /* 0110000 */ | ||
3826 | 0x7c, /* 0111110 */ | ||
3827 | 0x60, /* 0110000 */ | ||
3828 | 0x60, /* 0110000 */ | ||
3829 | 0x60, /* 0110000 */ | ||
3830 | 0x30, /* 0011000 */ | ||
3831 | 0x1c, /* 0001110 */ | ||
3832 | 0x00, /* 0000000 */ | ||
3833 | 0x00, /* 0000000 */ | ||
3834 | 0x00, /* 0000000 */ | ||
3835 | |||
3836 | /* 239 0xef 'ï' */ | ||
3837 | 0x00, /* 0000000 */ | ||
3838 | 0x00, /* 0000000 */ | ||
3839 | 0x78, /* 0111100 */ | ||
3840 | 0xcc, /* 1100110 */ | ||
3841 | 0xcc, /* 1100110 */ | ||
3842 | 0xcc, /* 1100110 */ | ||
3843 | 0xcc, /* 1100110 */ | ||
3844 | 0xcc, /* 1100110 */ | ||
3845 | 0xcc, /* 1100110 */ | ||
3846 | 0xcc, /* 1100110 */ | ||
3847 | 0xcc, /* 1100110 */ | ||
3848 | 0x00, /* 0000000 */ | ||
3849 | 0x00, /* 0000000 */ | ||
3850 | 0x00, /* 0000000 */ | ||
3851 | |||
3852 | /* 240 0xf0 'ð' */ | ||
3853 | 0x00, /* 0000000 */ | ||
3854 | 0x00, /* 0000000 */ | ||
3855 | 0x00, /* 0000000 */ | ||
3856 | 0xfc, /* 1111110 */ | ||
3857 | 0x00, /* 0000000 */ | ||
3858 | 0x00, /* 0000000 */ | ||
3859 | 0xfc, /* 1111110 */ | ||
3860 | 0x00, /* 0000000 */ | ||
3861 | 0x00, /* 0000000 */ | ||
3862 | 0xfc, /* 1111110 */ | ||
3863 | 0x00, /* 0000000 */ | ||
3864 | 0x00, /* 0000000 */ | ||
3865 | 0x00, /* 0000000 */ | ||
3866 | 0x00, /* 0000000 */ | ||
3867 | |||
3868 | /* 241 0xf1 'ñ' */ | ||
3869 | 0x00, /* 0000000 */ | ||
3870 | 0x00, /* 0000000 */ | ||
3871 | 0x00, /* 0000000 */ | ||
3872 | 0x30, /* 0011000 */ | ||
3873 | 0x30, /* 0011000 */ | ||
3874 | 0xfc, /* 1111110 */ | ||
3875 | 0x30, /* 0011000 */ | ||
3876 | 0x30, /* 0011000 */ | ||
3877 | 0x00, /* 0000000 */ | ||
3878 | 0x00, /* 0000000 */ | ||
3879 | 0xfc, /* 1111110 */ | ||
3880 | 0x00, /* 0000000 */ | ||
3881 | 0x00, /* 0000000 */ | ||
3882 | 0x00, /* 0000000 */ | ||
3883 | |||
3884 | /* 242 0xf2 'ò' */ | ||
3885 | 0x00, /* 0000000 */ | ||
3886 | 0x00, /* 0000000 */ | ||
3887 | 0x60, /* 0110000 */ | ||
3888 | 0x30, /* 0011000 */ | ||
3889 | 0x18, /* 0001100 */ | ||
3890 | 0x0c, /* 0000110 */ | ||
3891 | 0x18, /* 0001100 */ | ||
3892 | 0x30, /* 0011000 */ | ||
3893 | 0x60, /* 0110000 */ | ||
3894 | 0x00, /* 0000000 */ | ||
3895 | 0xfc, /* 1111110 */ | ||
3896 | 0x00, /* 0000000 */ | ||
3897 | 0x00, /* 0000000 */ | ||
3898 | 0x00, /* 0000000 */ | ||
3899 | |||
3900 | /* 243 0xf3 'ó' */ | ||
3901 | 0x00, /* 0000000 */ | ||
3902 | 0x00, /* 0000000 */ | ||
3903 | 0x18, /* 0001100 */ | ||
3904 | 0x30, /* 0011000 */ | ||
3905 | 0x60, /* 0110000 */ | ||
3906 | 0xc0, /* 1100000 */ | ||
3907 | 0x60, /* 0110000 */ | ||
3908 | 0x30, /* 0011000 */ | ||
3909 | 0x18, /* 0001100 */ | ||
3910 | 0x00, /* 0000000 */ | ||
3911 | 0xfc, /* 1111110 */ | ||
3912 | 0x00, /* 0000000 */ | ||
3913 | 0x00, /* 0000000 */ | ||
3914 | 0x00, /* 0000000 */ | ||
3915 | |||
3916 | /* 244 0xf4 'ô' */ | ||
3917 | 0x00, /* 0000000 */ | ||
3918 | 0x1c, /* 0001110 */ | ||
3919 | 0x36, /* 0011011 */ | ||
3920 | 0x36, /* 0011011 */ | ||
3921 | 0x30, /* 0011000 */ | ||
3922 | 0x30, /* 0011000 */ | ||
3923 | 0x30, /* 0011000 */ | ||
3924 | 0x30, /* 0011000 */ | ||
3925 | 0x30, /* 0011000 */ | ||
3926 | 0x30, /* 0011000 */ | ||
3927 | 0x30, /* 0011000 */ | ||
3928 | 0x30, /* 0011000 */ | ||
3929 | 0x30, /* 0011000 */ | ||
3930 | 0x30, /* 0011000 */ | ||
3931 | |||
3932 | /* 245 0xf5 'õ' */ | ||
3933 | 0x18, /* 0001100 */ | ||
3934 | 0x18, /* 0001100 */ | ||
3935 | 0x18, /* 0001100 */ | ||
3936 | 0x18, /* 0001100 */ | ||
3937 | 0x18, /* 0001100 */ | ||
3938 | 0x18, /* 0001100 */ | ||
3939 | 0x18, /* 0001100 */ | ||
3940 | 0x18, /* 0001100 */ | ||
3941 | 0xd8, /* 1101100 */ | ||
3942 | 0xd8, /* 1101100 */ | ||
3943 | 0xd8, /* 1101100 */ | ||
3944 | 0x70, /* 0111000 */ | ||
3945 | 0x00, /* 0000000 */ | ||
3946 | 0x00, /* 0000000 */ | ||
3947 | |||
3948 | /* 246 0xf6 'ö' */ | ||
3949 | 0x00, /* 0000000 */ | ||
3950 | 0x00, /* 0000000 */ | ||
3951 | 0x00, /* 0000000 */ | ||
3952 | 0x00, /* 0000000 */ | ||
3953 | 0x30, /* 0011000 */ | ||
3954 | 0x00, /* 0000000 */ | ||
3955 | 0xfc, /* 1111110 */ | ||
3956 | 0x00, /* 0000000 */ | ||
3957 | 0x30, /* 0011000 */ | ||
3958 | 0x00, /* 0000000 */ | ||
3959 | 0x00, /* 0000000 */ | ||
3960 | 0x00, /* 0000000 */ | ||
3961 | 0x00, /* 0000000 */ | ||
3962 | 0x00, /* 0000000 */ | ||
3963 | |||
3964 | /* 247 0xf7 '÷' */ | ||
3965 | 0x00, /* 0000000 */ | ||
3966 | 0x00, /* 0000000 */ | ||
3967 | 0x00, /* 0000000 */ | ||
3968 | 0x00, /* 0000000 */ | ||
3969 | 0x76, /* 0111011 */ | ||
3970 | 0xdc, /* 1101110 */ | ||
3971 | 0x00, /* 0000000 */ | ||
3972 | 0x76, /* 0111011 */ | ||
3973 | 0xdc, /* 1101110 */ | ||
3974 | 0x00, /* 0000000 */ | ||
3975 | 0x00, /* 0000000 */ | ||
3976 | 0x00, /* 0000000 */ | ||
3977 | 0x00, /* 0000000 */ | ||
3978 | 0x00, /* 0000000 */ | ||
3979 | |||
3980 | /* 248 0xf8 'ø' */ | ||
3981 | 0x38, /* 0011100 */ | ||
3982 | 0x6c, /* 0110110 */ | ||
3983 | 0x6c, /* 0110110 */ | ||
3984 | 0x38, /* 0011100 */ | ||
3985 | 0x00, /* 0000000 */ | ||
3986 | 0x00, /* 0000000 */ | ||
3987 | 0x00, /* 0000000 */ | ||
3988 | 0x00, /* 0000000 */ | ||
3989 | 0x00, /* 0000000 */ | ||
3990 | 0x00, /* 0000000 */ | ||
3991 | 0x00, /* 0000000 */ | ||
3992 | 0x00, /* 0000000 */ | ||
3993 | 0x00, /* 0000000 */ | ||
3994 | 0x00, /* 0000000 */ | ||
3995 | |||
3996 | /* 249 0xf9 'ù' */ | ||
3997 | 0x00, /* 0000000 */ | ||
3998 | 0x00, /* 0000000 */ | ||
3999 | 0x00, /* 0000000 */ | ||
4000 | 0x00, /* 0000000 */ | ||
4001 | 0x00, /* 0000000 */ | ||
4002 | 0x00, /* 0000000 */ | ||
4003 | 0x30, /* 0011000 */ | ||
4004 | 0x30, /* 0011000 */ | ||
4005 | 0x00, /* 0000000 */ | ||
4006 | 0x00, /* 0000000 */ | ||
4007 | 0x00, /* 0000000 */ | ||
4008 | 0x00, /* 0000000 */ | ||
4009 | 0x00, /* 0000000 */ | ||
4010 | 0x00, /* 0000000 */ | ||
4011 | |||
4012 | /* 250 0xfa 'ú' */ | ||
4013 | 0x00, /* 0000000 */ | ||
4014 | 0x00, /* 0000000 */ | ||
4015 | 0x00, /* 0000000 */ | ||
4016 | 0x00, /* 0000000 */ | ||
4017 | 0x00, /* 0000000 */ | ||
4018 | 0x00, /* 0000000 */ | ||
4019 | 0x30, /* 0011000 */ | ||
4020 | 0x00, /* 0000000 */ | ||
4021 | 0x00, /* 0000000 */ | ||
4022 | 0x00, /* 0000000 */ | ||
4023 | 0x00, /* 0000000 */ | ||
4024 | 0x00, /* 0000000 */ | ||
4025 | 0x00, /* 0000000 */ | ||
4026 | 0x00, /* 0000000 */ | ||
4027 | |||
4028 | /* 251 0xfb 'û' */ | ||
4029 | 0x1e, /* 0001111 */ | ||
4030 | 0x18, /* 0001100 */ | ||
4031 | 0x18, /* 0001100 */ | ||
4032 | 0x18, /* 0001100 */ | ||
4033 | 0x18, /* 0001100 */ | ||
4034 | 0x18, /* 0001100 */ | ||
4035 | 0xd8, /* 1101100 */ | ||
4036 | 0xd8, /* 1101100 */ | ||
4037 | 0xd8, /* 1101100 */ | ||
4038 | 0x78, /* 0111100 */ | ||
4039 | 0x38, /* 0011100 */ | ||
4040 | 0x00, /* 0000000 */ | ||
4041 | 0x00, /* 0000000 */ | ||
4042 | 0x00, /* 0000000 */ | ||
4043 | |||
4044 | /* 252 0xfc 'ü' */ | ||
4045 | 0xd8, /* 1101100 */ | ||
4046 | 0x6c, /* 0110110 */ | ||
4047 | 0x6c, /* 0110110 */ | ||
4048 | 0x6c, /* 0110110 */ | ||
4049 | 0x6c, /* 0110110 */ | ||
4050 | 0x6c, /* 0110110 */ | ||
4051 | 0x00, /* 0000000 */ | ||
4052 | 0x00, /* 0000000 */ | ||
4053 | 0x00, /* 0000000 */ | ||
4054 | 0x00, /* 0000000 */ | ||
4055 | 0x00, /* 0000000 */ | ||
4056 | 0x00, /* 0000000 */ | ||
4057 | 0x00, /* 0000000 */ | ||
4058 | 0x00, /* 0000000 */ | ||
4059 | |||
4060 | /* 253 0xfd 'ý' */ | ||
4061 | 0x78, /* 0111100 */ | ||
4062 | 0xcc, /* 1100110 */ | ||
4063 | 0x18, /* 0001100 */ | ||
4064 | 0x30, /* 0011000 */ | ||
4065 | 0x64, /* 0110010 */ | ||
4066 | 0xfc, /* 1111110 */ | ||
4067 | 0x00, /* 0000000 */ | ||
4068 | 0x00, /* 0000000 */ | ||
4069 | 0x00, /* 0000000 */ | ||
4070 | 0x00, /* 0000000 */ | ||
4071 | 0x00, /* 0000000 */ | ||
4072 | 0x00, /* 0000000 */ | ||
4073 | 0x00, /* 0000000 */ | ||
4074 | 0x00, /* 0000000 */ | ||
4075 | |||
4076 | /* 254 0xfe 'þ' */ | ||
4077 | 0x00, /* 0000000 */ | ||
4078 | 0x00, /* 0000000 */ | ||
4079 | 0x00, /* 0000000 */ | ||
4080 | 0x7c, /* 0111110 */ | ||
4081 | 0x7c, /* 0111110 */ | ||
4082 | 0x7c, /* 0111110 */ | ||
4083 | 0x7c, /* 0111110 */ | ||
4084 | 0x7c, /* 0111110 */ | ||
4085 | 0x7c, /* 0111110 */ | ||
4086 | 0x7c, /* 0111110 */ | ||
4087 | 0x00, /* 0000000 */ | ||
4088 | 0x00, /* 0000000 */ | ||
4089 | 0x00, /* 0000000 */ | ||
4090 | 0x00, /* 0000000 */ | ||
4091 | |||
4092 | /* 255 0xff 'ÿ' */ | ||
4093 | 0x00, /* 0000000 */ | ||
4094 | 0x00, /* 0000000 */ | ||
4095 | 0x00, /* 0000000 */ | ||
4096 | 0x00, /* 0000000 */ | ||
4097 | 0x00, /* 0000000 */ | ||
4098 | 0x00, /* 0000000 */ | ||
4099 | 0x00, /* 0000000 */ | ||
4100 | 0x00, /* 0000000 */ | ||
4101 | 0x00, /* 0000000 */ | ||
4102 | 0x00, /* 0000000 */ | ||
4103 | 0x00, /* 0000000 */ | ||
4104 | 0x00, /* 0000000 */ | ||
4105 | 0x00, /* 0000000 */ | ||
4106 | 0x00, /* 0000000 */ | ||
4107 | |||
4108 | }; | ||
4109 | |||
4110 | |||
4111 | struct font_desc font_7x14 = { | ||
4112 | FONT7x14_IDX, | ||
4113 | "7x14", | ||
4114 | 7, | ||
4115 | 14, | ||
4116 | fontdata_7x14, | ||
4117 | 0 | ||
4118 | }; | ||
diff --git a/drivers/video/console/font_sun12x22.c b/drivers/video/console/font_sun12x22.c index 05215d0c3e09..c7bd967ea100 100644 --- a/drivers/video/console/font_sun12x22.c +++ b/drivers/video/console/font_sun12x22.c | |||
@@ -29,24 +29,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
29 | 0x00, 0x00, /* 000000000000 */ | 29 | 0x00, 0x00, /* 000000000000 */ |
30 | 30 | ||
31 | /* 1 0x01 '^A' */ | 31 | /* 1 0x01 '^A' */ |
32 | /* FIXME */ | ||
33 | 0x00, 0x00, /* 000000000000 */ | 32 | 0x00, 0x00, /* 000000000000 */ |
34 | 0x00, 0x00, /* 000000000000 */ | 33 | 0x00, 0x00, /* 000000000000 */ |
35 | 0x00, 0x00, /* 000000000000 */ | 34 | 0x00, 0x00, /* 000000000000 */ |
36 | 0x00, 0x00, /* 000000000000 */ | 35 | 0x00, 0x00, /* 000000000000 */ |
36 | 0x1f, 0xc0, /* 000111111100 */ | ||
37 | 0x30, 0x60, /* 001100000110 */ | ||
38 | 0x65, 0x30, /* 011001010011 */ | ||
39 | 0x6d, 0xb0, /* 011011011011 */ | ||
40 | 0x60, 0x30, /* 011000000011 */ | ||
41 | 0x62, 0x30, /* 011000100011 */ | ||
42 | 0x62, 0x30, /* 011000100011 */ | ||
43 | 0x60, 0x30, /* 011000000011 */ | ||
44 | 0x6f, 0xb0, /* 011011111011 */ | ||
45 | 0x67, 0x30, /* 011001110011 */ | ||
46 | 0x30, 0x60, /* 001100000110 */ | ||
47 | 0x1f, 0xc0, /* 000111111100 */ | ||
37 | 0x00, 0x00, /* 000000000000 */ | 48 | 0x00, 0x00, /* 000000000000 */ |
38 | 0x3f, 0xc0, /* 001111111100 */ | ||
39 | 0x3f, 0xc0, /* 001111111100 */ | ||
40 | 0x3f, 0xc0, /* 001111111100 */ | ||
41 | 0x3f, 0xc0, /* 001111111100 */ | ||
42 | 0x3f, 0xc0, /* 001111111100 */ | ||
43 | 0x3f, 0xc0, /* 001111111100 */ | ||
44 | 0x3f, 0xc0, /* 001111111100 */ | ||
45 | 0x3f, 0xc0, /* 001111111100 */ | ||
46 | 0x3f, 0xc0, /* 001111111100 */ | ||
47 | 0x3f, 0xc0, /* 001111111100 */ | ||
48 | 0x3f, 0xc0, /* 001111111100 */ | ||
49 | 0x3f, 0xc0, /* 001111111100 */ | ||
50 | 0x00, 0x00, /* 000000000000 */ | 49 | 0x00, 0x00, /* 000000000000 */ |
51 | 0x00, 0x00, /* 000000000000 */ | 50 | 0x00, 0x00, /* 000000000000 */ |
52 | 0x00, 0x00, /* 000000000000 */ | 51 | 0x00, 0x00, /* 000000000000 */ |
@@ -54,24 +53,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
54 | 0x00, 0x00, /* 000000000000 */ | 53 | 0x00, 0x00, /* 000000000000 */ |
55 | 54 | ||
56 | /* 2 0x02 '^B' */ | 55 | /* 2 0x02 '^B' */ |
57 | /* FIXME */ | ||
58 | 0x00, 0x00, /* 000000000000 */ | 56 | 0x00, 0x00, /* 000000000000 */ |
59 | 0x00, 0x00, /* 000000000000 */ | 57 | 0x00, 0x00, /* 000000000000 */ |
60 | 0x00, 0x00, /* 000000000000 */ | 58 | 0x00, 0x00, /* 000000000000 */ |
61 | 0x00, 0x00, /* 000000000000 */ | 59 | 0x00, 0x00, /* 000000000000 */ |
60 | 0x1f, 0xc0, /* 000111111100 */ | ||
61 | 0x3f, 0xe0, /* 001111111110 */ | ||
62 | 0x7a, 0xf0, /* 011110101111 */ | ||
63 | 0x72, 0x70, /* 011100100111 */ | ||
64 | 0x7f, 0xf0, /* 011111111111 */ | ||
65 | 0x7d, 0xf0, /* 011111011111 */ | ||
66 | 0x7d, 0xf0, /* 011111011111 */ | ||
67 | 0x7f, 0xf0, /* 011111111111 */ | ||
68 | 0x70, 0x70, /* 011100000111 */ | ||
69 | 0x78, 0xf0, /* 011110001111 */ | ||
70 | 0x3f, 0xe0, /* 001111111110 */ | ||
71 | 0x1f, 0xc0, /* 000111111100 */ | ||
62 | 0x00, 0x00, /* 000000000000 */ | 72 | 0x00, 0x00, /* 000000000000 */ |
63 | 0x3f, 0xc0, /* 001111111100 */ | ||
64 | 0x3f, 0xc0, /* 001111111100 */ | ||
65 | 0x3f, 0xc0, /* 001111111100 */ | ||
66 | 0x3f, 0xc0, /* 001111111100 */ | ||
67 | 0x3f, 0xc0, /* 001111111100 */ | ||
68 | 0x3f, 0xc0, /* 001111111100 */ | ||
69 | 0x3f, 0xc0, /* 001111111100 */ | ||
70 | 0x3f, 0xc0, /* 001111111100 */ | ||
71 | 0x3f, 0xc0, /* 001111111100 */ | ||
72 | 0x3f, 0xc0, /* 001111111100 */ | ||
73 | 0x3f, 0xc0, /* 001111111100 */ | ||
74 | 0x3f, 0xc0, /* 001111111100 */ | ||
75 | 0x00, 0x00, /* 000000000000 */ | 73 | 0x00, 0x00, /* 000000000000 */ |
76 | 0x00, 0x00, /* 000000000000 */ | 74 | 0x00, 0x00, /* 000000000000 */ |
77 | 0x00, 0x00, /* 000000000000 */ | 75 | 0x00, 0x00, /* 000000000000 */ |
@@ -79,24 +77,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
79 | 0x00, 0x00, /* 000000000000 */ | 77 | 0x00, 0x00, /* 000000000000 */ |
80 | 78 | ||
81 | /* 3 0x03 '^C' */ | 79 | /* 3 0x03 '^C' */ |
82 | /* FIXME */ | ||
83 | 0x00, 0x00, /* 000000000000 */ | 80 | 0x00, 0x00, /* 000000000000 */ |
84 | 0x00, 0x00, /* 000000000000 */ | 81 | 0x00, 0x00, /* 000000000000 */ |
85 | 0x00, 0x00, /* 000000000000 */ | 82 | 0x00, 0x00, /* 000000000000 */ |
86 | 0x00, 0x00, /* 000000000000 */ | 83 | 0x00, 0x00, /* 000000000000 */ |
87 | 0x00, 0x00, /* 000000000000 */ | 84 | 0x00, 0x00, /* 000000000000 */ |
85 | 0x00, 0x00, /* 000000000000 */ | ||
86 | 0x19, 0x80, /* 000110011000 */ | ||
88 | 0x3f, 0xc0, /* 001111111100 */ | 87 | 0x3f, 0xc0, /* 001111111100 */ |
88 | 0x7f, 0xe0, /* 011111111110 */ | ||
89 | 0x3f, 0xc0, /* 001111111100 */ | 89 | 0x3f, 0xc0, /* 001111111100 */ |
90 | 0x3f, 0xc0, /* 001111111100 */ | 90 | 0x3f, 0xc0, /* 001111111100 */ |
91 | 0x3f, 0xc0, /* 001111111100 */ | 91 | 0x1f, 0x80, /* 000111111000 */ |
92 | 0x3f, 0xc0, /* 001111111100 */ | 92 | 0x1f, 0x80, /* 000111111000 */ |
93 | 0x3f, 0xc0, /* 001111111100 */ | 93 | 0x0f, 0x00, /* 000011110000 */ |
94 | 0x3f, 0xc0, /* 001111111100 */ | 94 | 0x0f, 0x00, /* 000011110000 */ |
95 | 0x3f, 0xc0, /* 001111111100 */ | 95 | 0x06, 0x00, /* 000001100000 */ |
96 | 0x3f, 0xc0, /* 001111111100 */ | 96 | 0x00, 0x00, /* 000000000000 */ |
97 | 0x3f, 0xc0, /* 001111111100 */ | ||
98 | 0x3f, 0xc0, /* 001111111100 */ | ||
99 | 0x3f, 0xc0, /* 001111111100 */ | ||
100 | 0x00, 0x00, /* 000000000000 */ | 97 | 0x00, 0x00, /* 000000000000 */ |
101 | 0x00, 0x00, /* 000000000000 */ | 98 | 0x00, 0x00, /* 000000000000 */ |
102 | 0x00, 0x00, /* 000000000000 */ | 99 | 0x00, 0x00, /* 000000000000 */ |
@@ -104,49 +101,47 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
104 | 0x00, 0x00, /* 000000000000 */ | 101 | 0x00, 0x00, /* 000000000000 */ |
105 | 102 | ||
106 | /* 4 0x04 '^D' */ | 103 | /* 4 0x04 '^D' */ |
107 | /* FIXME */ | ||
108 | 0x00, 0x00, /* 000000000000 */ | 104 | 0x00, 0x00, /* 000000000000 */ |
109 | 0x00, 0x00, /* 000000000000 */ | 105 | 0x00, 0x00, /* 000000000000 */ |
110 | 0x00, 0x00, /* 000000000000 */ | 106 | 0x00, 0x00, /* 000000000000 */ |
107 | 0x02, 0x00, /* 000000100000 */ | ||
108 | 0x07, 0x00, /* 000001110000 */ | ||
109 | 0x0f, 0x80, /* 000011111000 */ | ||
110 | 0x0f, 0x80, /* 000011111000 */ | ||
111 | 0x1f, 0xc0, /* 000111111100 */ | ||
112 | 0x1f, 0xc0, /* 000111111100 */ | ||
113 | 0x3f, 0xe0, /* 001111111110 */ | ||
114 | 0x1f, 0xc0, /* 000111111100 */ | ||
115 | 0x1f, 0xc0, /* 000111111100 */ | ||
116 | 0x0f, 0x80, /* 000011111000 */ | ||
117 | 0x0f, 0x80, /* 000011111000 */ | ||
118 | 0x07, 0x00, /* 000001110000 */ | ||
119 | 0x02, 0x00, /* 000000100000 */ | ||
111 | 0x00, 0x00, /* 000000000000 */ | 120 | 0x00, 0x00, /* 000000000000 */ |
112 | 0x00, 0x00, /* 000000000000 */ | 121 | 0x00, 0x00, /* 000000000000 */ |
113 | 0x3f, 0xc0, /* 001111111100 */ | ||
114 | 0x3f, 0xc0, /* 001111111100 */ | ||
115 | 0x3f, 0xc0, /* 001111111100 */ | ||
116 | 0x3f, 0xc0, /* 001111111100 */ | ||
117 | 0x3f, 0xc0, /* 001111111100 */ | ||
118 | 0x3f, 0xc0, /* 001111111100 */ | ||
119 | 0x3f, 0xc0, /* 001111111100 */ | ||
120 | 0x3f, 0xc0, /* 001111111100 */ | ||
121 | 0x3f, 0xc0, /* 001111111100 */ | ||
122 | 0x3f, 0xc0, /* 001111111100 */ | ||
123 | 0x3f, 0xc0, /* 001111111100 */ | ||
124 | 0x3f, 0xc0, /* 001111111100 */ | ||
125 | 0x00, 0x00, /* 000000000000 */ | ||
126 | 0x00, 0x00, /* 000000000000 */ | 122 | 0x00, 0x00, /* 000000000000 */ |
127 | 0x00, 0x00, /* 000000000000 */ | 123 | 0x00, 0x00, /* 000000000000 */ |
128 | 0x00, 0x00, /* 000000000000 */ | 124 | 0x00, 0x00, /* 000000000000 */ |
129 | 0x00, 0x00, /* 000000000000 */ | 125 | 0x00, 0x00, /* 000000000000 */ |
130 | 126 | ||
131 | /* 5 0x05 '^E' */ | 127 | /* 5 0x05 '^E' */ |
132 | /* FIXME */ | ||
133 | 0x00, 0x00, /* 000000000000 */ | 128 | 0x00, 0x00, /* 000000000000 */ |
134 | 0x00, 0x00, /* 000000000000 */ | 129 | 0x00, 0x00, /* 000000000000 */ |
135 | 0x00, 0x00, /* 000000000000 */ | 130 | 0x00, 0x00, /* 000000000000 */ |
136 | 0x00, 0x00, /* 000000000000 */ | 131 | 0x00, 0x00, /* 000000000000 */ |
132 | 0x02, 0x00, /* 000000100000 */ | ||
133 | 0x07, 0x00, /* 000001110000 */ | ||
134 | 0x07, 0x00, /* 000001110000 */ | ||
135 | 0x02, 0x00, /* 000000100000 */ | ||
136 | 0x18, 0xc0, /* 000110001100 */ | ||
137 | 0x3d, 0xe0, /* 001111011110 */ | ||
138 | 0x3d, 0xe0, /* 001111011110 */ | ||
139 | 0x1a, 0xc0, /* 000110101100 */ | ||
140 | 0x02, 0x00, /* 000000100000 */ | ||
141 | 0x07, 0x00, /* 000001110000 */ | ||
142 | 0x0f, 0x80, /* 000011111000 */ | ||
143 | 0x1f, 0xc0, /* 000111111100 */ | ||
137 | 0x00, 0x00, /* 000000000000 */ | 144 | 0x00, 0x00, /* 000000000000 */ |
138 | 0x3f, 0xc0, /* 001111111100 */ | ||
139 | 0x3f, 0xc0, /* 001111111100 */ | ||
140 | 0x3f, 0xc0, /* 001111111100 */ | ||
141 | 0x3f, 0xc0, /* 001111111100 */ | ||
142 | 0x3f, 0xc0, /* 001111111100 */ | ||
143 | 0x3f, 0xc0, /* 001111111100 */ | ||
144 | 0x3f, 0xc0, /* 001111111100 */ | ||
145 | 0x3f, 0xc0, /* 001111111100 */ | ||
146 | 0x3f, 0xc0, /* 001111111100 */ | ||
147 | 0x3f, 0xc0, /* 001111111100 */ | ||
148 | 0x3f, 0xc0, /* 001111111100 */ | ||
149 | 0x3f, 0xc0, /* 001111111100 */ | ||
150 | 0x00, 0x00, /* 000000000000 */ | 145 | 0x00, 0x00, /* 000000000000 */ |
151 | 0x00, 0x00, /* 000000000000 */ | 146 | 0x00, 0x00, /* 000000000000 */ |
152 | 0x00, 0x00, /* 000000000000 */ | 147 | 0x00, 0x00, /* 000000000000 */ |
@@ -154,23 +149,22 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
154 | 0x00, 0x00, /* 000000000000 */ | 149 | 0x00, 0x00, /* 000000000000 */ |
155 | 150 | ||
156 | /* 6 0x06 '^F' */ | 151 | /* 6 0x06 '^F' */ |
157 | /* FIXME */ | ||
158 | 0x00, 0x00, /* 000000000000 */ | ||
159 | 0x00, 0x00, /* 000000000000 */ | 152 | 0x00, 0x00, /* 000000000000 */ |
160 | 0x00, 0x00, /* 000000000000 */ | 153 | 0x00, 0x00, /* 000000000000 */ |
161 | 0x00, 0x00, /* 000000000000 */ | 154 | 0x00, 0x00, /* 000000000000 */ |
162 | 0x00, 0x00, /* 000000000000 */ | 155 | 0x00, 0x00, /* 000000000000 */ |
156 | 0x06, 0x00, /* 000001100000 */ | ||
157 | 0x0f, 0x00, /* 000011110000 */ | ||
158 | 0x1f, 0x80, /* 000111111000 */ | ||
159 | 0x1f, 0x80, /* 000111111000 */ | ||
163 | 0x3f, 0xc0, /* 001111111100 */ | 160 | 0x3f, 0xc0, /* 001111111100 */ |
164 | 0x3f, 0xc0, /* 001111111100 */ | 161 | 0x7f, 0xe0, /* 011111111110 */ |
165 | 0x3f, 0xc0, /* 001111111100 */ | 162 | 0x7f, 0xe0, /* 011111111110 */ |
166 | 0x3f, 0xc0, /* 001111111100 */ | 163 | 0x36, 0xc0, /* 001101101100 */ |
167 | 0x3f, 0xc0, /* 001111111100 */ | 164 | 0x06, 0x00, /* 000001100000 */ |
168 | 0x3f, 0xc0, /* 001111111100 */ | 165 | 0x06, 0x00, /* 000001100000 */ |
169 | 0x3f, 0xc0, /* 001111111100 */ | 166 | 0x0f, 0x00, /* 000011110000 */ |
170 | 0x3f, 0xc0, /* 001111111100 */ | 167 | 0x1f, 0x80, /* 000111111000 */ |
171 | 0x3f, 0xc0, /* 001111111100 */ | ||
172 | 0x3f, 0xc0, /* 001111111100 */ | ||
173 | 0x3f, 0xc0, /* 001111111100 */ | ||
174 | 0x3f, 0xc0, /* 001111111100 */ | 168 | 0x3f, 0xc0, /* 001111111100 */ |
175 | 0x00, 0x00, /* 000000000000 */ | 169 | 0x00, 0x00, /* 000000000000 */ |
176 | 0x00, 0x00, /* 000000000000 */ | 170 | 0x00, 0x00, /* 000000000000 */ |
@@ -179,24 +173,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
179 | 0x00, 0x00, /* 000000000000 */ | 173 | 0x00, 0x00, /* 000000000000 */ |
180 | 174 | ||
181 | /* 7 0x07 '^G' */ | 175 | /* 7 0x07 '^G' */ |
182 | /* FIXME */ | ||
183 | 0x00, 0x00, /* 000000000000 */ | ||
184 | 0x00, 0x00, /* 000000000000 */ | 176 | 0x00, 0x00, /* 000000000000 */ |
185 | 0x00, 0x00, /* 000000000000 */ | 177 | 0x00, 0x00, /* 000000000000 */ |
186 | 0x00, 0x00, /* 000000000000 */ | 178 | 0x00, 0x00, /* 000000000000 */ |
187 | 0x00, 0x00, /* 000000000000 */ | 179 | 0x00, 0x00, /* 000000000000 */ |
180 | 0x06, 0x00, /* 000001100000 */ | ||
181 | 0x0f, 0x00, /* 000011110000 */ | ||
182 | 0x0f, 0x00, /* 000011110000 */ | ||
183 | 0x1f, 0x80, /* 000111111000 */ | ||
184 | 0x1f, 0x80, /* 000111111000 */ | ||
188 | 0x3f, 0xc0, /* 001111111100 */ | 185 | 0x3f, 0xc0, /* 001111111100 */ |
189 | 0x3f, 0xc0, /* 001111111100 */ | 186 | 0x3f, 0xc0, /* 001111111100 */ |
190 | 0x3f, 0xc0, /* 001111111100 */ | 187 | 0x1f, 0x80, /* 000111111000 */ |
191 | 0x3f, 0xc0, /* 001111111100 */ | 188 | 0x1f, 0x80, /* 000111111000 */ |
192 | 0x3f, 0xc0, /* 001111111100 */ | 189 | 0x0f, 0x00, /* 000011110000 */ |
193 | 0x3f, 0xc0, /* 001111111100 */ | 190 | 0x0f, 0x00, /* 000011110000 */ |
194 | 0x3f, 0xc0, /* 001111111100 */ | 191 | 0x06, 0x00, /* 000001100000 */ |
195 | 0x3f, 0xc0, /* 001111111100 */ | 192 | 0x00, 0x00, /* 000000000000 */ |
196 | 0x3f, 0xc0, /* 001111111100 */ | ||
197 | 0x3f, 0xc0, /* 001111111100 */ | ||
198 | 0x3f, 0xc0, /* 001111111100 */ | ||
199 | 0x3f, 0xc0, /* 001111111100 */ | ||
200 | 0x00, 0x00, /* 000000000000 */ | 193 | 0x00, 0x00, /* 000000000000 */ |
201 | 0x00, 0x00, /* 000000000000 */ | 194 | 0x00, 0x00, /* 000000000000 */ |
202 | 0x00, 0x00, /* 000000000000 */ | 195 | 0x00, 0x00, /* 000000000000 */ |
@@ -204,49 +197,47 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
204 | 0x00, 0x00, /* 000000000000 */ | 197 | 0x00, 0x00, /* 000000000000 */ |
205 | 198 | ||
206 | /* 8 0x08 '^H' */ | 199 | /* 8 0x08 '^H' */ |
207 | /* FIXME */ | 200 | 0xff, 0xf0, /* 111111111111 */ |
208 | 0x00, 0x00, /* 000000000000 */ | 201 | 0xff, 0xf0, /* 111111111111 */ |
209 | 0x00, 0x00, /* 000000000000 */ | 202 | 0xff, 0xf0, /* 111111111111 */ |
210 | 0x00, 0x00, /* 000000000000 */ | 203 | 0xff, 0xf0, /* 111111111111 */ |
211 | 0x00, 0x00, /* 000000000000 */ | 204 | 0xf9, 0xf0, /* 111110011111 */ |
212 | 0x00, 0x00, /* 000000000000 */ | 205 | 0xf0, 0xf0, /* 111100001111 */ |
213 | 0x3f, 0xc0, /* 001111111100 */ | 206 | 0xf0, 0xf0, /* 111100001111 */ |
214 | 0x3f, 0xc0, /* 001111111100 */ | 207 | 0xe0, 0x70, /* 111000000111 */ |
215 | 0x3f, 0xc0, /* 001111111100 */ | 208 | 0xe0, 0x70, /* 111000000111 */ |
216 | 0x3f, 0xc0, /* 001111111100 */ | 209 | 0xc0, 0x30, /* 110000000011 */ |
217 | 0x3f, 0xc0, /* 001111111100 */ | 210 | 0xc0, 0x30, /* 110000000011 */ |
218 | 0x3f, 0xc0, /* 001111111100 */ | 211 | 0xe0, 0x70, /* 111000000111 */ |
219 | 0x3f, 0xc0, /* 001111111100 */ | 212 | 0xe0, 0x70, /* 111000000111 */ |
220 | 0x3f, 0xc0, /* 001111111100 */ | 213 | 0xf0, 0xf0, /* 111100001111 */ |
221 | 0x3f, 0xc0, /* 001111111100 */ | 214 | 0xf0, 0xf0, /* 111100001111 */ |
222 | 0x3f, 0xc0, /* 001111111100 */ | 215 | 0xf9, 0xf0, /* 111110011111 */ |
223 | 0x3f, 0xc0, /* 001111111100 */ | 216 | 0xff, 0xf0, /* 111111111111 */ |
224 | 0x3f, 0xc0, /* 001111111100 */ | 217 | 0xff, 0xf0, /* 111111111111 */ |
225 | 0x00, 0x00, /* 000000000000 */ | 218 | 0xff, 0xf0, /* 111111111111 */ |
226 | 0x00, 0x00, /* 000000000000 */ | 219 | 0xff, 0xf0, /* 111111111111 */ |
227 | 0x00, 0x00, /* 000000000000 */ | 220 | 0xff, 0xf0, /* 111111111111 */ |
228 | 0x00, 0x00, /* 000000000000 */ | 221 | 0xff, 0xf0, /* 111111111111 */ |
229 | 0x00, 0x00, /* 000000000000 */ | ||
230 | 222 | ||
231 | /* 9 0x09 '^I' */ | 223 | /* 9 0x09 '^I' */ |
232 | /* FIXME */ | ||
233 | 0x00, 0x00, /* 000000000000 */ | 224 | 0x00, 0x00, /* 000000000000 */ |
234 | 0x00, 0x00, /* 000000000000 */ | 225 | 0x00, 0x00, /* 000000000000 */ |
235 | 0x00, 0x00, /* 000000000000 */ | 226 | 0x00, 0x00, /* 000000000000 */ |
236 | 0x00, 0x00, /* 000000000000 */ | 227 | 0x00, 0x00, /* 000000000000 */ |
228 | 0x06, 0x00, /* 000001100000 */ | ||
229 | 0x0f, 0x00, /* 000011110000 */ | ||
230 | 0x0f, 0x00, /* 000011110000 */ | ||
231 | 0x19, 0x80, /* 000110011000 */ | ||
232 | 0x19, 0x80, /* 000110011000 */ | ||
233 | 0x30, 0xc0, /* 001100001100 */ | ||
234 | 0x30, 0xc0, /* 001100001100 */ | ||
235 | 0x19, 0x80, /* 000110011000 */ | ||
236 | 0x19, 0x80, /* 000110011000 */ | ||
237 | 0x0f, 0x00, /* 000011110000 */ | ||
238 | 0x0f, 0x00, /* 000011110000 */ | ||
239 | 0x06, 0x00, /* 000001100000 */ | ||
237 | 0x00, 0x00, /* 000000000000 */ | 240 | 0x00, 0x00, /* 000000000000 */ |
238 | 0x3f, 0xc0, /* 001111111100 */ | ||
239 | 0x3f, 0xc0, /* 001111111100 */ | ||
240 | 0x3f, 0xc0, /* 001111111100 */ | ||
241 | 0x3f, 0xc0, /* 001111111100 */ | ||
242 | 0x3f, 0xc0, /* 001111111100 */ | ||
243 | 0x3f, 0xc0, /* 001111111100 */ | ||
244 | 0x3f, 0xc0, /* 001111111100 */ | ||
245 | 0x3f, 0xc0, /* 001111111100 */ | ||
246 | 0x3f, 0xc0, /* 001111111100 */ | ||
247 | 0x3f, 0xc0, /* 001111111100 */ | ||
248 | 0x3f, 0xc0, /* 001111111100 */ | ||
249 | 0x3f, 0xc0, /* 001111111100 */ | ||
250 | 0x00, 0x00, /* 000000000000 */ | 241 | 0x00, 0x00, /* 000000000000 */ |
251 | 0x00, 0x00, /* 000000000000 */ | 242 | 0x00, 0x00, /* 000000000000 */ |
252 | 0x00, 0x00, /* 000000000000 */ | 243 | 0x00, 0x00, /* 000000000000 */ |
@@ -254,49 +245,47 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
254 | 0x00, 0x00, /* 000000000000 */ | 245 | 0x00, 0x00, /* 000000000000 */ |
255 | 246 | ||
256 | /* 10 0x0a '^J' */ | 247 | /* 10 0x0a '^J' */ |
257 | /* FIXME */ | 248 | 0xff, 0xf0, /* 111111111111 */ |
258 | 0x00, 0x00, /* 000000000000 */ | 249 | 0xff, 0xf0, /* 111111111111 */ |
259 | 0x00, 0x00, /* 000000000000 */ | 250 | 0xff, 0xf0, /* 111111111111 */ |
260 | 0x00, 0x00, /* 000000000000 */ | 251 | 0xff, 0xf0, /* 111111111111 */ |
261 | 0x00, 0x00, /* 000000000000 */ | 252 | 0xf9, 0xf0, /* 111110011111 */ |
262 | 0x00, 0x00, /* 000000000000 */ | 253 | 0xf0, 0xf0, /* 111100001111 */ |
263 | 0x3f, 0xc0, /* 001111111100 */ | 254 | 0xf0, 0xf0, /* 111100001111 */ |
264 | 0x3f, 0xc0, /* 001111111100 */ | 255 | 0xe6, 0x70, /* 111001100111 */ |
265 | 0x3f, 0xc0, /* 001111111100 */ | 256 | 0xe6, 0x70, /* 111001100111 */ |
266 | 0x3f, 0xc0, /* 001111111100 */ | 257 | 0xcf, 0x30, /* 110011110011 */ |
267 | 0x3f, 0xc0, /* 001111111100 */ | 258 | 0xcf, 0x30, /* 110011110011 */ |
268 | 0x3f, 0xc0, /* 001111111100 */ | 259 | 0xe6, 0x70, /* 111001100111 */ |
269 | 0x3f, 0xc0, /* 001111111100 */ | 260 | 0xe6, 0x70, /* 111001100111 */ |
270 | 0x3f, 0xc0, /* 001111111100 */ | 261 | 0xf0, 0xf0, /* 111100001111 */ |
271 | 0x3f, 0xc0, /* 001111111100 */ | 262 | 0xf0, 0xf0, /* 111100001111 */ |
272 | 0x3f, 0xc0, /* 001111111100 */ | 263 | 0xf9, 0xf0, /* 111110011111 */ |
273 | 0x3f, 0xc0, /* 001111111100 */ | 264 | 0xff, 0xf0, /* 111111111111 */ |
274 | 0x3f, 0xc0, /* 001111111100 */ | 265 | 0xff, 0xf0, /* 111111111111 */ |
275 | 0x00, 0x00, /* 000000000000 */ | 266 | 0xff, 0xf0, /* 111111111111 */ |
276 | 0x00, 0x00, /* 000000000000 */ | 267 | 0xff, 0xf0, /* 111111111111 */ |
277 | 0x00, 0x00, /* 000000000000 */ | 268 | 0xff, 0xf0, /* 111111111111 */ |
278 | 0x00, 0x00, /* 000000000000 */ | 269 | 0xff, 0xf0, /* 111111111111 */ |
279 | 0x00, 0x00, /* 000000000000 */ | ||
280 | 270 | ||
281 | /* 11 0x0b '^K' */ | 271 | /* 11 0x0b '^K' */ |
282 | /* FIXME */ | ||
283 | 0x00, 0x00, /* 000000000000 */ | ||
284 | 0x00, 0x00, /* 000000000000 */ | ||
285 | 0x00, 0x00, /* 000000000000 */ | 272 | 0x00, 0x00, /* 000000000000 */ |
286 | 0x00, 0x00, /* 000000000000 */ | 273 | 0x00, 0x00, /* 000000000000 */ |
274 | 0x0f, 0xe0, /* 000011111110 */ | ||
275 | 0x0f, 0xe0, /* 000011111110 */ | ||
276 | 0x01, 0xe0, /* 000000011110 */ | ||
277 | 0x03, 0x60, /* 000000110110 */ | ||
278 | 0x06, 0x60, /* 000001100110 */ | ||
279 | 0x1e, 0x00, /* 000111100000 */ | ||
280 | 0x33, 0x00, /* 001100110000 */ | ||
281 | 0x33, 0x00, /* 001100110000 */ | ||
282 | 0x61, 0x80, /* 011000011000 */ | ||
283 | 0x61, 0x80, /* 011000011000 */ | ||
284 | 0x33, 0x00, /* 001100110000 */ | ||
285 | 0x33, 0x00, /* 001100110000 */ | ||
286 | 0x1e, 0x00, /* 000111100000 */ | ||
287 | 0x0c, 0x00, /* 000011000000 */ | ||
287 | 0x00, 0x00, /* 000000000000 */ | 288 | 0x00, 0x00, /* 000000000000 */ |
288 | 0x3f, 0xc0, /* 001111111100 */ | ||
289 | 0x3f, 0xc0, /* 001111111100 */ | ||
290 | 0x3f, 0xc0, /* 001111111100 */ | ||
291 | 0x3f, 0xc0, /* 001111111100 */ | ||
292 | 0x3f, 0xc0, /* 001111111100 */ | ||
293 | 0x3f, 0xc0, /* 001111111100 */ | ||
294 | 0x3f, 0xc0, /* 001111111100 */ | ||
295 | 0x3f, 0xc0, /* 001111111100 */ | ||
296 | 0x3f, 0xc0, /* 001111111100 */ | ||
297 | 0x3f, 0xc0, /* 001111111100 */ | ||
298 | 0x3f, 0xc0, /* 001111111100 */ | ||
299 | 0x3f, 0xc0, /* 001111111100 */ | ||
300 | 0x00, 0x00, /* 000000000000 */ | 289 | 0x00, 0x00, /* 000000000000 */ |
301 | 0x00, 0x00, /* 000000000000 */ | 290 | 0x00, 0x00, /* 000000000000 */ |
302 | 0x00, 0x00, /* 000000000000 */ | 291 | 0x00, 0x00, /* 000000000000 */ |
@@ -304,24 +293,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
304 | 0x00, 0x00, /* 000000000000 */ | 293 | 0x00, 0x00, /* 000000000000 */ |
305 | 294 | ||
306 | /* 12 0x0c '^L' */ | 295 | /* 12 0x0c '^L' */ |
307 | /* FIXME */ | ||
308 | 0x00, 0x00, /* 000000000000 */ | ||
309 | 0x00, 0x00, /* 000000000000 */ | ||
310 | 0x00, 0x00, /* 000000000000 */ | ||
311 | 0x00, 0x00, /* 000000000000 */ | 296 | 0x00, 0x00, /* 000000000000 */ |
312 | 0x00, 0x00, /* 000000000000 */ | 297 | 0x00, 0x00, /* 000000000000 */ |
298 | 0x06, 0x00, /* 000001100000 */ | ||
299 | 0x0f, 0x00, /* 000011110000 */ | ||
300 | 0x19, 0x80, /* 000110011000 */ | ||
301 | 0x30, 0xc0, /* 001100001100 */ | ||
302 | 0x30, 0xc0, /* 001100001100 */ | ||
303 | 0x19, 0x80, /* 000110011000 */ | ||
304 | 0x0f, 0x00, /* 000011110000 */ | ||
305 | 0x06, 0x00, /* 000001100000 */ | ||
306 | 0x06, 0x00, /* 000001100000 */ | ||
307 | 0x06, 0x00, /* 000001100000 */ | ||
313 | 0x3f, 0xc0, /* 001111111100 */ | 308 | 0x3f, 0xc0, /* 001111111100 */ |
314 | 0x3f, 0xc0, /* 001111111100 */ | 309 | 0x3f, 0xc0, /* 001111111100 */ |
315 | 0x3f, 0xc0, /* 001111111100 */ | 310 | 0x06, 0x00, /* 000001100000 */ |
316 | 0x3f, 0xc0, /* 001111111100 */ | 311 | 0x06, 0x00, /* 000001100000 */ |
317 | 0x3f, 0xc0, /* 001111111100 */ | 312 | 0x00, 0x00, /* 000000000000 */ |
318 | 0x3f, 0xc0, /* 001111111100 */ | ||
319 | 0x3f, 0xc0, /* 001111111100 */ | ||
320 | 0x3f, 0xc0, /* 001111111100 */ | ||
321 | 0x3f, 0xc0, /* 001111111100 */ | ||
322 | 0x3f, 0xc0, /* 001111111100 */ | ||
323 | 0x3f, 0xc0, /* 001111111100 */ | ||
324 | 0x3f, 0xc0, /* 001111111100 */ | ||
325 | 0x00, 0x00, /* 000000000000 */ | 313 | 0x00, 0x00, /* 000000000000 */ |
326 | 0x00, 0x00, /* 000000000000 */ | 314 | 0x00, 0x00, /* 000000000000 */ |
327 | 0x00, 0x00, /* 000000000000 */ | 315 | 0x00, 0x00, /* 000000000000 */ |
@@ -329,149 +317,143 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
329 | 0x00, 0x00, /* 000000000000 */ | 317 | 0x00, 0x00, /* 000000000000 */ |
330 | 318 | ||
331 | /* 13 0x0d '^M' */ | 319 | /* 13 0x0d '^M' */ |
332 | /* FIXME */ | ||
333 | 0x00, 0x00, /* 000000000000 */ | ||
334 | 0x00, 0x00, /* 000000000000 */ | ||
335 | 0x00, 0x00, /* 000000000000 */ | ||
336 | 0x00, 0x00, /* 000000000000 */ | ||
337 | 0x00, 0x00, /* 000000000000 */ | ||
338 | 0x3f, 0xc0, /* 001111111100 */ | ||
339 | 0x3f, 0xc0, /* 001111111100 */ | ||
340 | 0x3f, 0xc0, /* 001111111100 */ | ||
341 | 0x3f, 0xc0, /* 001111111100 */ | ||
342 | 0x3f, 0xc0, /* 001111111100 */ | ||
343 | 0x3f, 0xc0, /* 001111111100 */ | ||
344 | 0x3f, 0xc0, /* 001111111100 */ | ||
345 | 0x3f, 0xc0, /* 001111111100 */ | ||
346 | 0x3f, 0xc0, /* 001111111100 */ | ||
347 | 0x3f, 0xc0, /* 001111111100 */ | ||
348 | 0x3f, 0xc0, /* 001111111100 */ | ||
349 | 0x3f, 0xc0, /* 001111111100 */ | ||
350 | 0x00, 0x00, /* 000000000000 */ | 320 | 0x00, 0x00, /* 000000000000 */ |
351 | 0x00, 0x00, /* 000000000000 */ | 321 | 0x00, 0x00, /* 000000000000 */ |
322 | 0x0f, 0xe0, /* 000011111110 */ | ||
323 | 0x0c, 0x60, /* 000011000110 */ | ||
324 | 0x0c, 0x60, /* 000011000110 */ | ||
325 | 0x0f, 0xe0, /* 000011111110 */ | ||
326 | 0x0c, 0x00, /* 000011000000 */ | ||
327 | 0x0c, 0x00, /* 000011000000 */ | ||
328 | 0x0c, 0x00, /* 000011000000 */ | ||
329 | 0x0c, 0x00, /* 000011000000 */ | ||
330 | 0x0c, 0x00, /* 000011000000 */ | ||
331 | 0x0c, 0x00, /* 000011000000 */ | ||
332 | 0x0c, 0x00, /* 000011000000 */ | ||
333 | 0x0c, 0x00, /* 000011000000 */ | ||
334 | 0x0c, 0x00, /* 000011000000 */ | ||
335 | 0x3c, 0x00, /* 001111000000 */ | ||
336 | 0x7c, 0x00, /* 011111000000 */ | ||
337 | 0x78, 0x00, /* 011110000000 */ | ||
338 | 0x30, 0x00, /* 001100000000 */ | ||
352 | 0x00, 0x00, /* 000000000000 */ | 339 | 0x00, 0x00, /* 000000000000 */ |
353 | 0x00, 0x00, /* 000000000000 */ | 340 | 0x00, 0x00, /* 000000000000 */ |
354 | 0x00, 0x00, /* 000000000000 */ | 341 | 0x00, 0x00, /* 000000000000 */ |
355 | 342 | ||
356 | /* 14 0x0e '^N' */ | 343 | /* 14 0x0e '^N' */ |
357 | /* FIXME */ | ||
358 | 0x00, 0x00, /* 000000000000 */ | ||
359 | 0x00, 0x00, /* 000000000000 */ | ||
360 | 0x00, 0x00, /* 000000000000 */ | ||
361 | 0x00, 0x00, /* 000000000000 */ | ||
362 | 0x00, 0x00, /* 000000000000 */ | ||
363 | 0x3f, 0xc0, /* 001111111100 */ | ||
364 | 0x3f, 0xc0, /* 001111111100 */ | ||
365 | 0x3f, 0xc0, /* 001111111100 */ | ||
366 | 0x3f, 0xc0, /* 001111111100 */ | ||
367 | 0x3f, 0xc0, /* 001111111100 */ | ||
368 | 0x3f, 0xc0, /* 001111111100 */ | ||
369 | 0x3f, 0xc0, /* 001111111100 */ | ||
370 | 0x3f, 0xc0, /* 001111111100 */ | ||
371 | 0x3f, 0xc0, /* 001111111100 */ | ||
372 | 0x3f, 0xc0, /* 001111111100 */ | ||
373 | 0x3f, 0xc0, /* 001111111100 */ | ||
374 | 0x3f, 0xc0, /* 001111111100 */ | ||
375 | 0x00, 0x00, /* 000000000000 */ | 344 | 0x00, 0x00, /* 000000000000 */ |
376 | 0x00, 0x00, /* 000000000000 */ | 345 | 0x00, 0x00, /* 000000000000 */ |
346 | 0x1f, 0xe0, /* 000111111110 */ | ||
347 | 0x18, 0x60, /* 000110000110 */ | ||
348 | 0x18, 0x60, /* 000110000110 */ | ||
349 | 0x1f, 0xe0, /* 000111111110 */ | ||
350 | 0x18, 0x60, /* 000110000110 */ | ||
351 | 0x18, 0x60, /* 000110000110 */ | ||
352 | 0x18, 0x60, /* 000110000110 */ | ||
353 | 0x18, 0x60, /* 000110000110 */ | ||
354 | 0x18, 0x60, /* 000110000110 */ | ||
355 | 0x18, 0x60, /* 000110000110 */ | ||
356 | 0x19, 0xe0, /* 000110011110 */ | ||
357 | 0x1b, 0xe0, /* 000110111110 */ | ||
358 | 0x1b, 0xc0, /* 000110111100 */ | ||
359 | 0x79, 0x80, /* 011110011000 */ | ||
360 | 0xf8, 0x00, /* 111110000000 */ | ||
361 | 0xf0, 0x00, /* 111100000000 */ | ||
362 | 0x60, 0x00, /* 011000000000 */ | ||
377 | 0x00, 0x00, /* 000000000000 */ | 363 | 0x00, 0x00, /* 000000000000 */ |
378 | 0x00, 0x00, /* 000000000000 */ | 364 | 0x00, 0x00, /* 000000000000 */ |
379 | 0x00, 0x00, /* 000000000000 */ | 365 | 0x00, 0x00, /* 000000000000 */ |
380 | 366 | ||
381 | /* 15 0x0f '^O' */ | 367 | /* 15 0x0f '^O' */ |
382 | /* FIXME */ | ||
383 | 0x00, 0x00, /* 000000000000 */ | ||
384 | 0x00, 0x00, /* 000000000000 */ | 368 | 0x00, 0x00, /* 000000000000 */ |
385 | 0x00, 0x00, /* 000000000000 */ | 369 | 0x00, 0x00, /* 000000000000 */ |
386 | 0x00, 0x00, /* 000000000000 */ | 370 | 0x00, 0x00, /* 000000000000 */ |
387 | 0x00, 0x00, /* 000000000000 */ | 371 | 0x00, 0x00, /* 000000000000 */ |
388 | 0x3f, 0xc0, /* 001111111100 */ | ||
389 | 0x3f, 0xc0, /* 001111111100 */ | ||
390 | 0x3f, 0xc0, /* 001111111100 */ | ||
391 | 0x3f, 0xc0, /* 001111111100 */ | ||
392 | 0x3f, 0xc0, /* 001111111100 */ | ||
393 | 0x3f, 0xc0, /* 001111111100 */ | ||
394 | 0x3f, 0xc0, /* 001111111100 */ | ||
395 | 0x3f, 0xc0, /* 001111111100 */ | ||
396 | 0x3f, 0xc0, /* 001111111100 */ | ||
397 | 0x3f, 0xc0, /* 001111111100 */ | ||
398 | 0x3f, 0xc0, /* 001111111100 */ | ||
399 | 0x3f, 0xc0, /* 001111111100 */ | ||
400 | 0x00, 0x00, /* 000000000000 */ | ||
401 | 0x00, 0x00, /* 000000000000 */ | ||
402 | 0x00, 0x00, /* 000000000000 */ | 372 | 0x00, 0x00, /* 000000000000 */ |
403 | 0x00, 0x00, /* 000000000000 */ | 373 | 0x00, 0x00, /* 000000000000 */ |
404 | 0x00, 0x00, /* 000000000000 */ | 374 | 0x00, 0x00, /* 000000000000 */ |
405 | 375 | 0x18, 0xc0, /* 000110001100 */ | |
406 | /* 16 0x10 '^P' */ | 376 | 0x0d, 0x80, /* 000011011000 */ |
407 | /* FIXME */ | 377 | 0x6d, 0xb0, /* 011011011011 */ |
378 | 0x3d, 0xe0, /* 001111011110 */ | ||
408 | 0x00, 0x00, /* 000000000000 */ | 379 | 0x00, 0x00, /* 000000000000 */ |
380 | 0x3d, 0xe0, /* 001111011110 */ | ||
381 | 0x6d, 0xb0, /* 011011011011 */ | ||
382 | 0x0d, 0x80, /* 000011011000 */ | ||
383 | 0x18, 0xc0, /* 000110001100 */ | ||
409 | 0x00, 0x00, /* 000000000000 */ | 384 | 0x00, 0x00, /* 000000000000 */ |
410 | 0x00, 0x00, /* 000000000000 */ | 385 | 0x00, 0x00, /* 000000000000 */ |
411 | 0x00, 0x00, /* 000000000000 */ | 386 | 0x00, 0x00, /* 000000000000 */ |
412 | 0x00, 0x00, /* 000000000000 */ | 387 | 0x00, 0x00, /* 000000000000 */ |
413 | 0x3f, 0xc0, /* 001111111100 */ | ||
414 | 0x3f, 0xc0, /* 001111111100 */ | ||
415 | 0x3f, 0xc0, /* 001111111100 */ | ||
416 | 0x3f, 0xc0, /* 001111111100 */ | ||
417 | 0x3f, 0xc0, /* 001111111100 */ | ||
418 | 0x3f, 0xc0, /* 001111111100 */ | ||
419 | 0x3f, 0xc0, /* 001111111100 */ | ||
420 | 0x3f, 0xc0, /* 001111111100 */ | ||
421 | 0x3f, 0xc0, /* 001111111100 */ | ||
422 | 0x3f, 0xc0, /* 001111111100 */ | ||
423 | 0x3f, 0xc0, /* 001111111100 */ | ||
424 | 0x3f, 0xc0, /* 001111111100 */ | ||
425 | 0x00, 0x00, /* 000000000000 */ | 388 | 0x00, 0x00, /* 000000000000 */ |
426 | 0x00, 0x00, /* 000000000000 */ | 389 | 0x00, 0x00, /* 000000000000 */ |
390 | |||
391 | /* 16 0x10 '^P' */ | ||
427 | 0x00, 0x00, /* 000000000000 */ | 392 | 0x00, 0x00, /* 000000000000 */ |
393 | 0x00, 0x20, /* 000000000010 */ | ||
394 | 0x00, 0x60, /* 000000000110 */ | ||
395 | 0x00, 0xe0, /* 000000001110 */ | ||
396 | 0x01, 0xe0, /* 000000011110 */ | ||
397 | 0x03, 0xe0, /* 000000111110 */ | ||
398 | 0x07, 0xe0, /* 000001111110 */ | ||
399 | 0x0f, 0xe0, /* 000011111110 */ | ||
400 | 0x1f, 0xe0, /* 000111111110 */ | ||
401 | 0x3f, 0xe0, /* 001111111110 */ | ||
402 | 0x7f, 0xe0, /* 011111111110 */ | ||
403 | 0x3f, 0xe0, /* 001111111110 */ | ||
404 | 0x1f, 0xe0, /* 000111111110 */ | ||
405 | 0x0f, 0xe0, /* 000011111110 */ | ||
406 | 0x07, 0xe0, /* 000001111110 */ | ||
407 | 0x03, 0xe0, /* 000000111110 */ | ||
408 | 0x01, 0xe0, /* 000000011110 */ | ||
409 | 0x00, 0xe0, /* 000000001110 */ | ||
410 | 0x00, 0x60, /* 000000000110 */ | ||
411 | 0x00, 0x20, /* 000000000010 */ | ||
428 | 0x00, 0x00, /* 000000000000 */ | 412 | 0x00, 0x00, /* 000000000000 */ |
429 | 0x00, 0x00, /* 000000000000 */ | 413 | 0x00, 0x00, /* 000000000000 */ |
430 | 414 | ||
431 | /* 17 0x11 '^Q' */ | 415 | /* 17 0x11 '^Q' */ |
432 | /* FIXME */ | ||
433 | 0x00, 0x00, /* 000000000000 */ | ||
434 | 0x00, 0x00, /* 000000000000 */ | ||
435 | 0x00, 0x00, /* 000000000000 */ | ||
436 | 0x00, 0x00, /* 000000000000 */ | ||
437 | 0x00, 0x00, /* 000000000000 */ | ||
438 | 0x3f, 0xc0, /* 001111111100 */ | ||
439 | 0x3f, 0xc0, /* 001111111100 */ | ||
440 | 0x3f, 0xc0, /* 001111111100 */ | ||
441 | 0x3f, 0xc0, /* 001111111100 */ | ||
442 | 0x3f, 0xc0, /* 001111111100 */ | ||
443 | 0x3f, 0xc0, /* 001111111100 */ | ||
444 | 0x3f, 0xc0, /* 001111111100 */ | ||
445 | 0x3f, 0xc0, /* 001111111100 */ | ||
446 | 0x3f, 0xc0, /* 001111111100 */ | ||
447 | 0x3f, 0xc0, /* 001111111100 */ | ||
448 | 0x3f, 0xc0, /* 001111111100 */ | ||
449 | 0x3f, 0xc0, /* 001111111100 */ | ||
450 | 0x00, 0x00, /* 000000000000 */ | ||
451 | 0x00, 0x00, /* 000000000000 */ | ||
452 | 0x00, 0x00, /* 000000000000 */ | 416 | 0x00, 0x00, /* 000000000000 */ |
417 | 0x40, 0x00, /* 010000000000 */ | ||
418 | 0x60, 0x00, /* 011000000000 */ | ||
419 | 0x70, 0x00, /* 011100000000 */ | ||
420 | 0x78, 0x00, /* 011110000000 */ | ||
421 | 0x7c, 0x00, /* 011111000000 */ | ||
422 | 0x7e, 0x00, /* 011111100000 */ | ||
423 | 0x7f, 0x00, /* 011111110000 */ | ||
424 | 0x7f, 0x80, /* 011111111000 */ | ||
425 | 0x7f, 0xc0, /* 011111111100 */ | ||
426 | 0x7f, 0xe0, /* 011111111110 */ | ||
427 | 0x7f, 0xc0, /* 011111111100 */ | ||
428 | 0x7f, 0x80, /* 011111111000 */ | ||
429 | 0x7f, 0x00, /* 011111110000 */ | ||
430 | 0x7e, 0x00, /* 011111100000 */ | ||
431 | 0x7c, 0x00, /* 011111000000 */ | ||
432 | 0x78, 0x00, /* 011110000000 */ | ||
433 | 0x70, 0x00, /* 011100000000 */ | ||
434 | 0x60, 0x00, /* 011000000000 */ | ||
435 | 0x40, 0x00, /* 010000000000 */ | ||
453 | 0x00, 0x00, /* 000000000000 */ | 436 | 0x00, 0x00, /* 000000000000 */ |
454 | 0x00, 0x00, /* 000000000000 */ | 437 | 0x00, 0x00, /* 000000000000 */ |
455 | 438 | ||
456 | /* 18 0x12 '^R' */ | 439 | /* 18 0x12 '^R' */ |
457 | /* FIXME */ | ||
458 | 0x00, 0x00, /* 000000000000 */ | 440 | 0x00, 0x00, /* 000000000000 */ |
459 | 0x00, 0x00, /* 000000000000 */ | 441 | 0x00, 0x00, /* 000000000000 */ |
460 | 0x00, 0x00, /* 000000000000 */ | 442 | 0x00, 0x00, /* 000000000000 */ |
461 | 0x00, 0x00, /* 000000000000 */ | 443 | 0x00, 0x00, /* 000000000000 */ |
444 | 0x04, 0x00, /* 000001000000 */ | ||
445 | 0x0e, 0x00, /* 000011100000 */ | ||
446 | 0x1f, 0x00, /* 000111110000 */ | ||
447 | 0x3f, 0x80, /* 001111111000 */ | ||
448 | 0x7f, 0xc0, /* 011111111100 */ | ||
449 | 0x0e, 0x00, /* 000011100000 */ | ||
450 | 0x0e, 0x00, /* 000011100000 */ | ||
451 | 0x7f, 0xc0, /* 011111111100 */ | ||
452 | 0x3f, 0x80, /* 001111111000 */ | ||
453 | 0x1f, 0x00, /* 000111110000 */ | ||
454 | 0x0e, 0x00, /* 000011100000 */ | ||
455 | 0x04, 0x00, /* 000001000000 */ | ||
462 | 0x00, 0x00, /* 000000000000 */ | 456 | 0x00, 0x00, /* 000000000000 */ |
463 | 0x3f, 0xc0, /* 001111111100 */ | ||
464 | 0x3f, 0xc0, /* 001111111100 */ | ||
465 | 0x3f, 0xc0, /* 001111111100 */ | ||
466 | 0x3f, 0xc0, /* 001111111100 */ | ||
467 | 0x3f, 0xc0, /* 001111111100 */ | ||
468 | 0x3f, 0xc0, /* 001111111100 */ | ||
469 | 0x3f, 0xc0, /* 001111111100 */ | ||
470 | 0x3f, 0xc0, /* 001111111100 */ | ||
471 | 0x3f, 0xc0, /* 001111111100 */ | ||
472 | 0x3f, 0xc0, /* 001111111100 */ | ||
473 | 0x3f, 0xc0, /* 001111111100 */ | ||
474 | 0x3f, 0xc0, /* 001111111100 */ | ||
475 | 0x00, 0x00, /* 000000000000 */ | 457 | 0x00, 0x00, /* 000000000000 */ |
476 | 0x00, 0x00, /* 000000000000 */ | 458 | 0x00, 0x00, /* 000000000000 */ |
477 | 0x00, 0x00, /* 000000000000 */ | 459 | 0x00, 0x00, /* 000000000000 */ |
@@ -551,99 +533,95 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
551 | 0x00, 0x00, /* 000000000000 */ | 533 | 0x00, 0x00, /* 000000000000 */ |
552 | 534 | ||
553 | /* 22 0x16 '^V' */ | 535 | /* 22 0x16 '^V' */ |
554 | /* FIXME */ | ||
555 | 0x00, 0x00, /* 000000000000 */ | 536 | 0x00, 0x00, /* 000000000000 */ |
556 | 0x00, 0x00, /* 000000000000 */ | 537 | 0x00, 0x00, /* 000000000000 */ |
557 | 0x00, 0x00, /* 000000000000 */ | 538 | 0x00, 0x00, /* 000000000000 */ |
558 | 0x00, 0x00, /* 000000000000 */ | 539 | 0x00, 0x00, /* 000000000000 */ |
559 | 0x00, 0x00, /* 000000000000 */ | 540 | 0x00, 0x00, /* 000000000000 */ |
560 | 0x3f, 0xc0, /* 001111111100 */ | ||
561 | 0x3f, 0xc0, /* 001111111100 */ | ||
562 | 0x3f, 0xc0, /* 001111111100 */ | ||
563 | 0x3f, 0xc0, /* 001111111100 */ | ||
564 | 0x3f, 0xc0, /* 001111111100 */ | ||
565 | 0x3f, 0xc0, /* 001111111100 */ | ||
566 | 0x3f, 0xc0, /* 001111111100 */ | ||
567 | 0x3f, 0xc0, /* 001111111100 */ | ||
568 | 0x3f, 0xc0, /* 001111111100 */ | ||
569 | 0x3f, 0xc0, /* 001111111100 */ | ||
570 | 0x3f, 0xc0, /* 001111111100 */ | ||
571 | 0x3f, 0xc0, /* 001111111100 */ | ||
572 | 0x00, 0x00, /* 000000000000 */ | ||
573 | 0x00, 0x00, /* 000000000000 */ | 541 | 0x00, 0x00, /* 000000000000 */ |
574 | 0x00, 0x00, /* 000000000000 */ | 542 | 0x00, 0x00, /* 000000000000 */ |
575 | 0x00, 0x00, /* 000000000000 */ | 543 | 0x00, 0x00, /* 000000000000 */ |
576 | 0x00, 0x00, /* 000000000000 */ | 544 | 0x00, 0x00, /* 000000000000 */ |
577 | |||
578 | /* 23 0x17 '^W' */ | ||
579 | /* FIXME */ | ||
580 | 0x00, 0x00, /* 000000000000 */ | 545 | 0x00, 0x00, /* 000000000000 */ |
581 | 0x00, 0x00, /* 000000000000 */ | 546 | 0x00, 0x00, /* 000000000000 */ |
582 | 0x00, 0x00, /* 000000000000 */ | 547 | 0x00, 0x00, /* 000000000000 */ |
583 | 0x00, 0x00, /* 000000000000 */ | 548 | 0x00, 0x00, /* 000000000000 */ |
549 | 0x7f, 0xe0, /* 011111111110 */ | ||
550 | 0x7f, 0xe0, /* 011111111110 */ | ||
551 | 0x7f, 0xe0, /* 011111111110 */ | ||
584 | 0x00, 0x00, /* 000000000000 */ | 552 | 0x00, 0x00, /* 000000000000 */ |
585 | 0x3f, 0xc0, /* 001111111100 */ | ||
586 | 0x3f, 0xc0, /* 001111111100 */ | ||
587 | 0x3f, 0xc0, /* 001111111100 */ | ||
588 | 0x3f, 0xc0, /* 001111111100 */ | ||
589 | 0x3f, 0xc0, /* 001111111100 */ | ||
590 | 0x3f, 0xc0, /* 001111111100 */ | ||
591 | 0x3f, 0xc0, /* 001111111100 */ | ||
592 | 0x3f, 0xc0, /* 001111111100 */ | ||
593 | 0x3f, 0xc0, /* 001111111100 */ | ||
594 | 0x3f, 0xc0, /* 001111111100 */ | ||
595 | 0x3f, 0xc0, /* 001111111100 */ | ||
596 | 0x3f, 0xc0, /* 001111111100 */ | ||
597 | 0x00, 0x00, /* 000000000000 */ | 553 | 0x00, 0x00, /* 000000000000 */ |
598 | 0x00, 0x00, /* 000000000000 */ | 554 | 0x00, 0x00, /* 000000000000 */ |
599 | 0x00, 0x00, /* 000000000000 */ | 555 | 0x00, 0x00, /* 000000000000 */ |
600 | 0x00, 0x00, /* 000000000000 */ | 556 | 0x00, 0x00, /* 000000000000 */ |
601 | 0x00, 0x00, /* 000000000000 */ | 557 | 0x00, 0x00, /* 000000000000 */ |
602 | 558 | ||
603 | /* 24 0x18 '^X' */ | 559 | /* 23 0x17 '^W' */ |
604 | /* FIXME */ | ||
605 | 0x00, 0x00, /* 000000000000 */ | 560 | 0x00, 0x00, /* 000000000000 */ |
606 | 0x00, 0x00, /* 000000000000 */ | 561 | 0x00, 0x00, /* 000000000000 */ |
562 | 0x04, 0x00, /* 000001000000 */ | ||
563 | 0x0e, 0x00, /* 000011100000 */ | ||
564 | 0x1f, 0x00, /* 000111110000 */ | ||
565 | 0x3f, 0x80, /* 001111111000 */ | ||
566 | 0x7f, 0xc0, /* 011111111100 */ | ||
567 | 0x0e, 0x00, /* 000011100000 */ | ||
568 | 0x0e, 0x00, /* 000011100000 */ | ||
569 | 0x7f, 0xc0, /* 011111111100 */ | ||
570 | 0x3f, 0x80, /* 001111111000 */ | ||
571 | 0x1f, 0x00, /* 000111110000 */ | ||
572 | 0x0e, 0x00, /* 000011100000 */ | ||
573 | 0x04, 0x00, /* 000001000000 */ | ||
607 | 0x00, 0x00, /* 000000000000 */ | 574 | 0x00, 0x00, /* 000000000000 */ |
575 | 0x7f, 0xe0, /* 011111111110 */ | ||
576 | 0x7f, 0xe0, /* 011111111110 */ | ||
608 | 0x00, 0x00, /* 000000000000 */ | 577 | 0x00, 0x00, /* 000000000000 */ |
609 | 0x00, 0x00, /* 000000000000 */ | 578 | 0x00, 0x00, /* 000000000000 */ |
610 | 0x3f, 0xc0, /* 001111111100 */ | ||
611 | 0x3f, 0xc0, /* 001111111100 */ | ||
612 | 0x3f, 0xc0, /* 001111111100 */ | ||
613 | 0x3f, 0xc0, /* 001111111100 */ | ||
614 | 0x3f, 0xc0, /* 001111111100 */ | ||
615 | 0x3f, 0xc0, /* 001111111100 */ | ||
616 | 0x3f, 0xc0, /* 001111111100 */ | ||
617 | 0x3f, 0xc0, /* 001111111100 */ | ||
618 | 0x3f, 0xc0, /* 001111111100 */ | ||
619 | 0x3f, 0xc0, /* 001111111100 */ | ||
620 | 0x3f, 0xc0, /* 001111111100 */ | ||
621 | 0x3f, 0xc0, /* 001111111100 */ | ||
622 | 0x00, 0x00, /* 000000000000 */ | 579 | 0x00, 0x00, /* 000000000000 */ |
623 | 0x00, 0x00, /* 000000000000 */ | 580 | 0x00, 0x00, /* 000000000000 */ |
624 | 0x00, 0x00, /* 000000000000 */ | 581 | 0x00, 0x00, /* 000000000000 */ |
582 | |||
583 | /* 24 0x18 '^X' */ | ||
625 | 0x00, 0x00, /* 000000000000 */ | 584 | 0x00, 0x00, /* 000000000000 */ |
626 | 0x00, 0x00, /* 000000000000 */ | 585 | 0x00, 0x00, /* 000000000000 */ |
627 | 586 | 0x04, 0x00, /* 000001000000 */ | |
628 | /* 25 0x19 '^Y' */ | 587 | 0x0e, 0x00, /* 000011100000 */ |
629 | /* FIXME */ | 588 | 0x1f, 0x00, /* 000111110000 */ |
589 | 0x3f, 0x80, /* 001111111000 */ | ||
590 | 0x7f, 0xc0, /* 011111111100 */ | ||
591 | 0x0e, 0x00, /* 000011100000 */ | ||
592 | 0x0e, 0x00, /* 000011100000 */ | ||
593 | 0x0e, 0x00, /* 000011100000 */ | ||
594 | 0x0e, 0x00, /* 000011100000 */ | ||
595 | 0x0e, 0x00, /* 000011100000 */ | ||
596 | 0x0e, 0x00, /* 000011100000 */ | ||
597 | 0x0e, 0x00, /* 000011100000 */ | ||
598 | 0x0e, 0x00, /* 000011100000 */ | ||
599 | 0x0e, 0x00, /* 000011100000 */ | ||
630 | 0x00, 0x00, /* 000000000000 */ | 600 | 0x00, 0x00, /* 000000000000 */ |
631 | 0x00, 0x00, /* 000000000000 */ | 601 | 0x00, 0x00, /* 000000000000 */ |
632 | 0x00, 0x00, /* 000000000000 */ | 602 | 0x00, 0x00, /* 000000000000 */ |
633 | 0x00, 0x00, /* 000000000000 */ | 603 | 0x00, 0x00, /* 000000000000 */ |
634 | 0x00, 0x00, /* 000000000000 */ | 604 | 0x00, 0x00, /* 000000000000 */ |
635 | 0x3f, 0xc0, /* 001111111100 */ | 605 | 0x00, 0x00, /* 000000000000 */ |
636 | 0x3f, 0xc0, /* 001111111100 */ | 606 | |
637 | 0x3f, 0xc0, /* 001111111100 */ | 607 | /* 25 0x19 '^Y' */ |
638 | 0x3f, 0xc0, /* 001111111100 */ | 608 | 0x00, 0x00, /* 000000000000 */ |
639 | 0x3f, 0xc0, /* 001111111100 */ | 609 | 0x00, 0x00, /* 000000000000 */ |
640 | 0x3f, 0xc0, /* 001111111100 */ | 610 | 0x0e, 0x00, /* 000011100000 */ |
641 | 0x3f, 0xc0, /* 001111111100 */ | 611 | 0x0e, 0x00, /* 000011100000 */ |
642 | 0x3f, 0xc0, /* 001111111100 */ | 612 | 0x0e, 0x00, /* 000011100000 */ |
643 | 0x3f, 0xc0, /* 001111111100 */ | 613 | 0x0e, 0x00, /* 000011100000 */ |
644 | 0x3f, 0xc0, /* 001111111100 */ | 614 | 0x0e, 0x00, /* 000011100000 */ |
645 | 0x3f, 0xc0, /* 001111111100 */ | 615 | 0x0e, 0x00, /* 000011100000 */ |
646 | 0x3f, 0xc0, /* 001111111100 */ | 616 | 0x0e, 0x00, /* 000011100000 */ |
617 | 0x0e, 0x00, /* 000011100000 */ | ||
618 | 0x0e, 0x00, /* 000011100000 */ | ||
619 | 0x0e, 0x00, /* 000011100000 */ | ||
620 | 0x7f, 0xc0, /* 011111111100 */ | ||
621 | 0x3f, 0x80, /* 001111111000 */ | ||
622 | 0x1f, 0x00, /* 000111110000 */ | ||
623 | 0x0e, 0x00, /* 000011100000 */ | ||
624 | 0x04, 0x00, /* 000001000000 */ | ||
647 | 0x00, 0x00, /* 000000000000 */ | 625 | 0x00, 0x00, /* 000000000000 */ |
648 | 0x00, 0x00, /* 000000000000 */ | 626 | 0x00, 0x00, /* 000000000000 */ |
649 | 0x00, 0x00, /* 000000000000 */ | 627 | 0x00, 0x00, /* 000000000000 */ |
@@ -651,24 +629,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
651 | 0x00, 0x00, /* 000000000000 */ | 629 | 0x00, 0x00, /* 000000000000 */ |
652 | 630 | ||
653 | /* 26 0x1a '^Z' */ | 631 | /* 26 0x1a '^Z' */ |
654 | /* FIXME */ | ||
655 | 0x00, 0x00, /* 000000000000 */ | 632 | 0x00, 0x00, /* 000000000000 */ |
656 | 0x00, 0x00, /* 000000000000 */ | 633 | 0x00, 0x00, /* 000000000000 */ |
657 | 0x00, 0x00, /* 000000000000 */ | 634 | 0x00, 0x00, /* 000000000000 */ |
658 | 0x00, 0x00, /* 000000000000 */ | 635 | 0x00, 0x00, /* 000000000000 */ |
659 | 0x00, 0x00, /* 000000000000 */ | 636 | 0x00, 0x00, /* 000000000000 */ |
660 | 0x3f, 0xc0, /* 001111111100 */ | 637 | 0x00, 0x00, /* 000000000000 */ |
661 | 0x3f, 0xc0, /* 001111111100 */ | 638 | 0x08, 0x00, /* 000010000000 */ |
662 | 0x3f, 0xc0, /* 001111111100 */ | 639 | 0x18, 0x00, /* 000110000000 */ |
663 | 0x3f, 0xc0, /* 001111111100 */ | 640 | 0x38, 0x00, /* 001110000000 */ |
664 | 0x3f, 0xc0, /* 001111111100 */ | 641 | 0x7f, 0xe0, /* 011111111110 */ |
665 | 0x3f, 0xc0, /* 001111111100 */ | 642 | 0xff, 0xe0, /* 111111111110 */ |
666 | 0x3f, 0xc0, /* 001111111100 */ | 643 | 0x7f, 0xe0, /* 011111111110 */ |
667 | 0x3f, 0xc0, /* 001111111100 */ | 644 | 0x38, 0x00, /* 001110000000 */ |
668 | 0x3f, 0xc0, /* 001111111100 */ | 645 | 0x18, 0x00, /* 000110000000 */ |
669 | 0x3f, 0xc0, /* 001111111100 */ | 646 | 0x08, 0x00, /* 000010000000 */ |
670 | 0x3f, 0xc0, /* 001111111100 */ | 647 | 0x00, 0x00, /* 000000000000 */ |
671 | 0x3f, 0xc0, /* 001111111100 */ | 648 | 0x00, 0x00, /* 000000000000 */ |
672 | 0x00, 0x00, /* 000000000000 */ | 649 | 0x00, 0x00, /* 000000000000 */ |
673 | 0x00, 0x00, /* 000000000000 */ | 650 | 0x00, 0x00, /* 000000000000 */ |
674 | 0x00, 0x00, /* 000000000000 */ | 651 | 0x00, 0x00, /* 000000000000 */ |
@@ -676,24 +653,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
676 | 0x00, 0x00, /* 000000000000 */ | 653 | 0x00, 0x00, /* 000000000000 */ |
677 | 654 | ||
678 | /* 27 0x1b '^[' */ | 655 | /* 27 0x1b '^[' */ |
679 | /* FIXME */ | ||
680 | 0x00, 0x00, /* 000000000000 */ | 656 | 0x00, 0x00, /* 000000000000 */ |
681 | 0x00, 0x00, /* 000000000000 */ | 657 | 0x00, 0x00, /* 000000000000 */ |
682 | 0x00, 0x00, /* 000000000000 */ | 658 | 0x00, 0x00, /* 000000000000 */ |
683 | 0x00, 0x00, /* 000000000000 */ | 659 | 0x00, 0x00, /* 000000000000 */ |
684 | 0x00, 0x00, /* 000000000000 */ | 660 | 0x00, 0x00, /* 000000000000 */ |
685 | 0x3f, 0xc0, /* 001111111100 */ | 661 | 0x00, 0x00, /* 000000000000 */ |
686 | 0x3f, 0xc0, /* 001111111100 */ | 662 | 0x01, 0x00, /* 000000010000 */ |
687 | 0x3f, 0xc0, /* 001111111100 */ | 663 | 0x01, 0x80, /* 000000011000 */ |
688 | 0x3f, 0xc0, /* 001111111100 */ | 664 | 0x01, 0xc0, /* 000000011100 */ |
689 | 0x3f, 0xc0, /* 001111111100 */ | 665 | 0x7f, 0xe0, /* 011111111110 */ |
690 | 0x3f, 0xc0, /* 001111111100 */ | 666 | 0x7f, 0xf0, /* 011111111111 */ |
691 | 0x3f, 0xc0, /* 001111111100 */ | 667 | 0x7f, 0xe0, /* 011111111110 */ |
692 | 0x3f, 0xc0, /* 001111111100 */ | 668 | 0x01, 0xc0, /* 000000011100 */ |
693 | 0x3f, 0xc0, /* 001111111100 */ | 669 | 0x01, 0x80, /* 000000011000 */ |
694 | 0x3f, 0xc0, /* 001111111100 */ | 670 | 0x01, 0x00, /* 000000010000 */ |
695 | 0x3f, 0xc0, /* 001111111100 */ | 671 | 0x00, 0x00, /* 000000000000 */ |
696 | 0x3f, 0xc0, /* 001111111100 */ | 672 | 0x00, 0x00, /* 000000000000 */ |
697 | 0x00, 0x00, /* 000000000000 */ | 673 | 0x00, 0x00, /* 000000000000 */ |
698 | 0x00, 0x00, /* 000000000000 */ | 674 | 0x00, 0x00, /* 000000000000 */ |
699 | 0x00, 0x00, /* 000000000000 */ | 675 | 0x00, 0x00, /* 000000000000 */ |
@@ -701,24 +677,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
701 | 0x00, 0x00, /* 000000000000 */ | 677 | 0x00, 0x00, /* 000000000000 */ |
702 | 678 | ||
703 | /* 28 0x1c '^\' */ | 679 | /* 28 0x1c '^\' */ |
704 | /* FIXME */ | ||
705 | 0x00, 0x00, /* 000000000000 */ | 680 | 0x00, 0x00, /* 000000000000 */ |
706 | 0x00, 0x00, /* 000000000000 */ | 681 | 0x00, 0x00, /* 000000000000 */ |
707 | 0x00, 0x00, /* 000000000000 */ | 682 | 0x00, 0x00, /* 000000000000 */ |
708 | 0x00, 0x00, /* 000000000000 */ | 683 | 0x00, 0x00, /* 000000000000 */ |
709 | 0x00, 0x00, /* 000000000000 */ | 684 | 0x00, 0x00, /* 000000000000 */ |
710 | 0x3f, 0xc0, /* 001111111100 */ | 685 | 0x00, 0x00, /* 000000000000 */ |
711 | 0x3f, 0xc0, /* 001111111100 */ | 686 | 0x00, 0x00, /* 000000000000 */ |
712 | 0x3f, 0xc0, /* 001111111100 */ | 687 | 0x00, 0x00, /* 000000000000 */ |
713 | 0x3f, 0xc0, /* 001111111100 */ | 688 | 0x00, 0x00, /* 000000000000 */ |
714 | 0x3f, 0xc0, /* 001111111100 */ | 689 | 0x00, 0x00, /* 000000000000 */ |
715 | 0x3f, 0xc0, /* 001111111100 */ | 690 | 0x00, 0x00, /* 000000000000 */ |
716 | 0x3f, 0xc0, /* 001111111100 */ | 691 | 0x00, 0x00, /* 000000000000 */ |
717 | 0x3f, 0xc0, /* 001111111100 */ | 692 | 0x00, 0x00, /* 000000000000 */ |
718 | 0x3f, 0xc0, /* 001111111100 */ | 693 | 0x30, 0x00, /* 001100000000 */ |
719 | 0x3f, 0xc0, /* 001111111100 */ | 694 | 0x30, 0x00, /* 001100000000 */ |
720 | 0x3f, 0xc0, /* 001111111100 */ | 695 | 0x3f, 0xe0, /* 001111111110 */ |
721 | 0x3f, 0xc0, /* 001111111100 */ | 696 | 0x3f, 0xe0, /* 001111111110 */ |
722 | 0x00, 0x00, /* 000000000000 */ | 697 | 0x00, 0x00, /* 000000000000 */ |
723 | 0x00, 0x00, /* 000000000000 */ | 698 | 0x00, 0x00, /* 000000000000 */ |
724 | 0x00, 0x00, /* 000000000000 */ | 699 | 0x00, 0x00, /* 000000000000 */ |
@@ -726,24 +701,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
726 | 0x00, 0x00, /* 000000000000 */ | 701 | 0x00, 0x00, /* 000000000000 */ |
727 | 702 | ||
728 | /* 29 0x1d '^]' */ | 703 | /* 29 0x1d '^]' */ |
729 | /* FIXME */ | ||
730 | 0x00, 0x00, /* 000000000000 */ | 704 | 0x00, 0x00, /* 000000000000 */ |
731 | 0x00, 0x00, /* 000000000000 */ | 705 | 0x00, 0x00, /* 000000000000 */ |
732 | 0x00, 0x00, /* 000000000000 */ | 706 | 0x00, 0x00, /* 000000000000 */ |
733 | 0x00, 0x00, /* 000000000000 */ | 707 | 0x00, 0x00, /* 000000000000 */ |
734 | 0x00, 0x00, /* 000000000000 */ | 708 | 0x00, 0x00, /* 000000000000 */ |
735 | 0x3f, 0xc0, /* 001111111100 */ | 709 | 0x00, 0x00, /* 000000000000 */ |
736 | 0x3f, 0xc0, /* 001111111100 */ | 710 | 0x09, 0x00, /* 000010010000 */ |
737 | 0x3f, 0xc0, /* 001111111100 */ | 711 | 0x19, 0x80, /* 000110011000 */ |
738 | 0x3f, 0xc0, /* 001111111100 */ | 712 | 0x39, 0xc0, /* 001110011100 */ |
739 | 0x3f, 0xc0, /* 001111111100 */ | 713 | 0x7f, 0xe0, /* 011111111110 */ |
740 | 0x3f, 0xc0, /* 001111111100 */ | 714 | 0xff, 0xf0, /* 111111111111 */ |
741 | 0x3f, 0xc0, /* 001111111100 */ | 715 | 0x7f, 0xe0, /* 011111111110 */ |
742 | 0x3f, 0xc0, /* 001111111100 */ | 716 | 0x39, 0xc0, /* 001110011100 */ |
743 | 0x3f, 0xc0, /* 001111111100 */ | 717 | 0x19, 0x80, /* 000110011000 */ |
744 | 0x3f, 0xc0, /* 001111111100 */ | 718 | 0x09, 0x00, /* 000010010000 */ |
745 | 0x3f, 0xc0, /* 001111111100 */ | 719 | 0x00, 0x00, /* 000000000000 */ |
746 | 0x3f, 0xc0, /* 001111111100 */ | 720 | 0x00, 0x00, /* 000000000000 */ |
747 | 0x00, 0x00, /* 000000000000 */ | 721 | 0x00, 0x00, /* 000000000000 */ |
748 | 0x00, 0x00, /* 000000000000 */ | 722 | 0x00, 0x00, /* 000000000000 */ |
749 | 0x00, 0x00, /* 000000000000 */ | 723 | 0x00, 0x00, /* 000000000000 */ |
@@ -751,24 +725,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
751 | 0x00, 0x00, /* 000000000000 */ | 725 | 0x00, 0x00, /* 000000000000 */ |
752 | 726 | ||
753 | /* 30 0x1e '^^' */ | 727 | /* 30 0x1e '^^' */ |
754 | /* FIXME */ | ||
755 | 0x00, 0x00, /* 000000000000 */ | 728 | 0x00, 0x00, /* 000000000000 */ |
756 | 0x00, 0x00, /* 000000000000 */ | 729 | 0x00, 0x00, /* 000000000000 */ |
757 | 0x00, 0x00, /* 000000000000 */ | 730 | 0x00, 0x00, /* 000000000000 */ |
758 | 0x00, 0x00, /* 000000000000 */ | 731 | 0x00, 0x00, /* 000000000000 */ |
759 | 0x00, 0x00, /* 000000000000 */ | 732 | 0x00, 0x00, /* 000000000000 */ |
760 | 0x3f, 0xc0, /* 001111111100 */ | 733 | 0x00, 0x00, /* 000000000000 */ |
761 | 0x3f, 0xc0, /* 001111111100 */ | 734 | 0x04, 0x00, /* 000001000000 */ |
762 | 0x3f, 0xc0, /* 001111111100 */ | 735 | 0x04, 0x00, /* 000001000000 */ |
763 | 0x3f, 0xc0, /* 001111111100 */ | 736 | 0x0e, 0x00, /* 000011100000 */ |
764 | 0x3f, 0xc0, /* 001111111100 */ | 737 | 0x0e, 0x00, /* 000011100000 */ |
765 | 0x3f, 0xc0, /* 001111111100 */ | 738 | 0x1f, 0x00, /* 000111110000 */ |
766 | 0x3f, 0xc0, /* 001111111100 */ | 739 | 0x1f, 0x00, /* 000111110000 */ |
767 | 0x3f, 0xc0, /* 001111111100 */ | 740 | 0x3f, 0x80, /* 001111111000 */ |
768 | 0x3f, 0xc0, /* 001111111100 */ | 741 | 0x3f, 0x80, /* 001111111000 */ |
769 | 0x3f, 0xc0, /* 001111111100 */ | 742 | 0x7f, 0xc0, /* 011111111100 */ |
770 | 0x3f, 0xc0, /* 001111111100 */ | 743 | 0x7f, 0xc0, /* 011111111100 */ |
771 | 0x3f, 0xc0, /* 001111111100 */ | 744 | 0x00, 0x00, /* 000000000000 */ |
772 | 0x00, 0x00, /* 000000000000 */ | 745 | 0x00, 0x00, /* 000000000000 */ |
773 | 0x00, 0x00, /* 000000000000 */ | 746 | 0x00, 0x00, /* 000000000000 */ |
774 | 0x00, 0x00, /* 000000000000 */ | 747 | 0x00, 0x00, /* 000000000000 */ |
@@ -776,24 +749,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
776 | 0x00, 0x00, /* 000000000000 */ | 749 | 0x00, 0x00, /* 000000000000 */ |
777 | 750 | ||
778 | /* 31 0x1f '^_' */ | 751 | /* 31 0x1f '^_' */ |
779 | /* FIXME */ | ||
780 | 0x00, 0x00, /* 000000000000 */ | 752 | 0x00, 0x00, /* 000000000000 */ |
781 | 0x00, 0x00, /* 000000000000 */ | 753 | 0x00, 0x00, /* 000000000000 */ |
782 | 0x00, 0x00, /* 000000000000 */ | 754 | 0x00, 0x00, /* 000000000000 */ |
783 | 0x00, 0x00, /* 000000000000 */ | 755 | 0x00, 0x00, /* 000000000000 */ |
784 | 0x00, 0x00, /* 000000000000 */ | 756 | 0x00, 0x00, /* 000000000000 */ |
785 | 0x3f, 0xc0, /* 001111111100 */ | 757 | 0x00, 0x00, /* 000000000000 */ |
786 | 0x3f, 0xc0, /* 001111111100 */ | 758 | 0x7f, 0xc0, /* 011111111100 */ |
787 | 0x3f, 0xc0, /* 001111111100 */ | 759 | 0x7f, 0xc0, /* 011111111100 */ |
788 | 0x3f, 0xc0, /* 001111111100 */ | 760 | 0x3f, 0x80, /* 001111111000 */ |
789 | 0x3f, 0xc0, /* 001111111100 */ | 761 | 0x3f, 0x80, /* 001111111000 */ |
790 | 0x3f, 0xc0, /* 001111111100 */ | 762 | 0x1f, 0x00, /* 000111110000 */ |
791 | 0x3f, 0xc0, /* 001111111100 */ | 763 | 0x1f, 0x00, /* 000111110000 */ |
792 | 0x3f, 0xc0, /* 001111111100 */ | 764 | 0x0e, 0x00, /* 000011100000 */ |
793 | 0x3f, 0xc0, /* 001111111100 */ | 765 | 0x0e, 0x00, /* 000011100000 */ |
794 | 0x3f, 0xc0, /* 001111111100 */ | 766 | 0x04, 0x00, /* 000001000000 */ |
795 | 0x3f, 0xc0, /* 001111111100 */ | 767 | 0x04, 0x00, /* 000001000000 */ |
796 | 0x3f, 0xc0, /* 001111111100 */ | 768 | 0x00, 0x00, /* 000000000000 */ |
797 | 0x00, 0x00, /* 000000000000 */ | 769 | 0x00, 0x00, /* 000000000000 */ |
798 | 0x00, 0x00, /* 000000000000 */ | 770 | 0x00, 0x00, /* 000000000000 */ |
799 | 0x00, 0x00, /* 000000000000 */ | 771 | 0x00, 0x00, /* 000000000000 */ |
@@ -3081,29 +3053,28 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
3081 | 0x00, 0x00, /* 000000000000 */ | 3053 | 0x00, 0x00, /* 000000000000 */ |
3082 | 3054 | ||
3083 | /* 127 0x7f '.' */ | 3055 | /* 127 0x7f '.' */ |
3084 | /* FIXME */ | ||
3085 | 0x00, 0x00, /* 000000000000 */ | 3056 | 0x00, 0x00, /* 000000000000 */ |
3086 | 0x00, 0x00, /* 000000000000 */ | 3057 | 0x00, 0x00, /* 000000000000 */ |
3087 | 0x00, 0x00, /* 000000000000 */ | 3058 | 0x00, 0x00, /* 000000000000 */ |
3088 | 0x00, 0x00, /* 000000000000 */ | 3059 | 0x00, 0x00, /* 000000000000 */ |
3089 | 0x00, 0x00, /* 000000000000 */ | 3060 | 0x00, 0x00, /* 000000000000 */ |
3090 | 0x3f, 0xc0, /* 001111111100 */ | ||
3091 | 0x3f, 0xc0, /* 001111111100 */ | ||
3092 | 0x3f, 0xc0, /* 001111111100 */ | ||
3093 | 0x3f, 0xc0, /* 001111111100 */ | ||
3094 | 0x3f, 0xc0, /* 001111111100 */ | ||
3095 | 0x3f, 0xc0, /* 001111111100 */ | ||
3096 | 0x3f, 0xc0, /* 001111111100 */ | ||
3097 | 0x3f, 0xc0, /* 001111111100 */ | ||
3098 | 0x3f, 0xc0, /* 001111111100 */ | ||
3099 | 0x3f, 0xc0, /* 001111111100 */ | ||
3100 | 0x3f, 0xc0, /* 001111111100 */ | ||
3101 | 0x3f, 0xc0, /* 001111111100 */ | ||
3102 | 0x00, 0x00, /* 000000000000 */ | 3061 | 0x00, 0x00, /* 000000000000 */ |
3103 | 0x00, 0x00, /* 000000000000 */ | 3062 | 0x00, 0x00, /* 000000000000 */ |
3104 | 0x00, 0x00, /* 000000000000 */ | 3063 | 0x00, 0x00, /* 000000000000 */ |
3105 | 0x00, 0x00, /* 000000000000 */ | 3064 | 0x00, 0x00, /* 000000000000 */ |
3106 | 0x00, 0x00, /* 000000000000 */ | 3065 | 0x00, 0x00, /* 000000000000 */ |
3066 | 0x00, 0x00, /* 000000000000 */ | ||
3067 | 0x00, 0x00, /* 000000000000 */ | ||
3068 | 0x00, 0x00, /* 000000000000 */ | ||
3069 | 0x00, 0x00, /* 000000000000 */ | ||
3070 | 0x00, 0x00, /* 000000000000 */ | ||
3071 | 0x00, 0x00, /* 000000000000 */ | ||
3072 | 0x00, 0x00, /* 000000000000 */ | ||
3073 | 0x00, 0x00, /* 000000000000 */ | ||
3074 | 0x00, 0x00, /* 000000000000 */ | ||
3075 | 0xff, 0xf0, /* 111111111111 */ | ||
3076 | 0xff, 0xf0, /* 111111111111 */ | ||
3077 | 0x00, 0x00, /* 000000000000 */ | ||
3107 | 3078 | ||
3108 | /* 128 0x80 '.' */ | 3079 | /* 128 0x80 '.' */ |
3109 | 0x00, 0x00, /* 000000000000 */ | 3080 | 0x00, 0x00, /* 000000000000 */ |
@@ -3826,24 +3797,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
3826 | 0x00, 0x00, /* 000000000000 */ | 3797 | 0x00, 0x00, /* 000000000000 */ |
3827 | 3798 | ||
3828 | /* 158 0x9e '.' */ | 3799 | /* 158 0x9e '.' */ |
3829 | /* FIXME */ | ||
3830 | 0x00, 0x00, /* 000000000000 */ | ||
3831 | 0x00, 0x00, /* 000000000000 */ | ||
3832 | 0x00, 0x00, /* 000000000000 */ | ||
3833 | 0x00, 0x00, /* 000000000000 */ | 3800 | 0x00, 0x00, /* 000000000000 */ |
3801 | 0x7f, 0x80, /* 011111111000 */ | ||
3802 | 0x30, 0xc0, /* 001100001100 */ | ||
3803 | 0x30, 0x60, /* 001100000110 */ | ||
3804 | 0x30, 0x60, /* 001100000110 */ | ||
3805 | 0x30, 0x60, /* 001100000110 */ | ||
3806 | 0x30, 0xc0, /* 001100001100 */ | ||
3807 | 0x37, 0x80, /* 001101111000 */ | ||
3808 | 0x30, 0x00, /* 001100000000 */ | ||
3809 | 0x33, 0x00, /* 001100110000 */ | ||
3810 | 0x37, 0x80, /* 001101111000 */ | ||
3811 | 0x33, 0x00, /* 001100110000 */ | ||
3812 | 0x33, 0x00, /* 001100110000 */ | ||
3813 | 0x33, 0x30, /* 001100110011 */ | ||
3814 | 0x31, 0xe0, /* 001100011110 */ | ||
3815 | 0x78, 0xc0, /* 011110001100 */ | ||
3834 | 0x00, 0x00, /* 000000000000 */ | 3816 | 0x00, 0x00, /* 000000000000 */ |
3835 | 0x3f, 0xc0, /* 001111111100 */ | ||
3836 | 0x3f, 0xc0, /* 001111111100 */ | ||
3837 | 0x3f, 0xc0, /* 001111111100 */ | ||
3838 | 0x3f, 0xc0, /* 001111111100 */ | ||
3839 | 0x3f, 0xc0, /* 001111111100 */ | ||
3840 | 0x3f, 0xc0, /* 001111111100 */ | ||
3841 | 0x3f, 0xc0, /* 001111111100 */ | ||
3842 | 0x3f, 0xc0, /* 001111111100 */ | ||
3843 | 0x3f, 0xc0, /* 001111111100 */ | ||
3844 | 0x3f, 0xc0, /* 001111111100 */ | ||
3845 | 0x3f, 0xc0, /* 001111111100 */ | ||
3846 | 0x3f, 0xc0, /* 001111111100 */ | ||
3847 | 0x00, 0x00, /* 000000000000 */ | 3817 | 0x00, 0x00, /* 000000000000 */ |
3848 | 0x00, 0x00, /* 000000000000 */ | 3818 | 0x00, 0x00, /* 000000000000 */ |
3849 | 0x00, 0x00, /* 000000000000 */ | 3819 | 0x00, 0x00, /* 000000000000 */ |
@@ -3851,28 +3821,27 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
3851 | 0x00, 0x00, /* 000000000000 */ | 3821 | 0x00, 0x00, /* 000000000000 */ |
3852 | 3822 | ||
3853 | /* 159 0x9f '.' */ | 3823 | /* 159 0x9f '.' */ |
3854 | /* FIXME */ | ||
3855 | 0x00, 0x00, /* 000000000000 */ | ||
3856 | 0x00, 0x00, /* 000000000000 */ | ||
3857 | 0x00, 0x00, /* 000000000000 */ | ||
3858 | 0x00, 0x00, /* 000000000000 */ | ||
3859 | 0x00, 0x00, /* 000000000000 */ | ||
3860 | 0x3f, 0xc0, /* 001111111100 */ | ||
3861 | 0x3f, 0xc0, /* 001111111100 */ | ||
3862 | 0x3f, 0xc0, /* 001111111100 */ | ||
3863 | 0x3f, 0xc0, /* 001111111100 */ | ||
3864 | 0x3f, 0xc0, /* 001111111100 */ | ||
3865 | 0x3f, 0xc0, /* 001111111100 */ | ||
3866 | 0x3f, 0xc0, /* 001111111100 */ | ||
3867 | 0x3f, 0xc0, /* 001111111100 */ | ||
3868 | 0x3f, 0xc0, /* 001111111100 */ | ||
3869 | 0x3f, 0xc0, /* 001111111100 */ | ||
3870 | 0x3f, 0xc0, /* 001111111100 */ | ||
3871 | 0x3f, 0xc0, /* 001111111100 */ | ||
3872 | 0x00, 0x00, /* 000000000000 */ | ||
3873 | 0x00, 0x00, /* 000000000000 */ | ||
3874 | 0x00, 0x00, /* 000000000000 */ | ||
3875 | 0x00, 0x00, /* 000000000000 */ | 3824 | 0x00, 0x00, /* 000000000000 */ |
3825 | 0x00, 0xc0, /* 000000001100 */ | ||
3826 | 0x01, 0xe0, /* 000000011110 */ | ||
3827 | 0x03, 0x30, /* 000000110011 */ | ||
3828 | 0x06, 0x00, /* 000001100000 */ | ||
3829 | 0x06, 0x00, /* 000001100000 */ | ||
3830 | 0x06, 0x00, /* 000001100000 */ | ||
3831 | 0x06, 0x00, /* 000001100000 */ | ||
3832 | 0x06, 0x00, /* 000001100000 */ | ||
3833 | 0x06, 0x00, /* 000001100000 */ | ||
3834 | 0x3f, 0xe0, /* 001111111110 */ | ||
3835 | 0x7f, 0xc0, /* 011111111100 */ | ||
3836 | 0x06, 0x00, /* 000001100000 */ | ||
3837 | 0x06, 0x00, /* 000001100000 */ | ||
3838 | 0x06, 0x00, /* 000001100000 */ | ||
3839 | 0x06, 0x00, /* 000001100000 */ | ||
3840 | 0x06, 0x00, /* 000001100000 */ | ||
3841 | 0x06, 0x00, /* 000001100000 */ | ||
3842 | 0xcc, 0x00, /* 110011000000 */ | ||
3843 | 0x78, 0x00, /* 011110000000 */ | ||
3844 | 0x30, 0x00, /* 001100000000 */ | ||
3876 | 0x00, 0x00, /* 000000000000 */ | 3845 | 0x00, 0x00, /* 000000000000 */ |
3877 | 3846 | ||
3878 | /* 160 0xa0 '.' */ | 3847 | /* 160 0xa0 '.' */ |
@@ -4092,24 +4061,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
4092 | 0x00, 0x00, /* 000000000000 */ | 4061 | 0x00, 0x00, /* 000000000000 */ |
4093 | 4062 | ||
4094 | /* 169 0xa9 '.' */ | 4063 | /* 169 0xa9 '.' */ |
4095 | /* FIXME */ | ||
4096 | 0x00, 0x00, /* 000000000000 */ | ||
4097 | 0x00, 0x00, /* 000000000000 */ | 4064 | 0x00, 0x00, /* 000000000000 */ |
4098 | 0x00, 0x00, /* 000000000000 */ | 4065 | 0x00, 0x00, /* 000000000000 */ |
4099 | 0x00, 0x00, /* 000000000000 */ | 4066 | 0x00, 0x00, /* 000000000000 */ |
4100 | 0x00, 0x00, /* 000000000000 */ | 4067 | 0x00, 0x00, /* 000000000000 */ |
4101 | 0x3f, 0xc0, /* 001111111100 */ | 4068 | 0x3f, 0xc0, /* 001111111100 */ |
4102 | 0x3f, 0xc0, /* 001111111100 */ | 4069 | 0x3f, 0xc0, /* 001111111100 */ |
4103 | 0x3f, 0xc0, /* 001111111100 */ | 4070 | 0x30, 0x00, /* 001100000000 */ |
4104 | 0x3f, 0xc0, /* 001111111100 */ | 4071 | 0x30, 0x00, /* 001100000000 */ |
4105 | 0x3f, 0xc0, /* 001111111100 */ | 4072 | 0x30, 0x00, /* 001100000000 */ |
4106 | 0x3f, 0xc0, /* 001111111100 */ | 4073 | 0x00, 0x00, /* 000000000000 */ |
4107 | 0x3f, 0xc0, /* 001111111100 */ | 4074 | 0x00, 0x00, /* 000000000000 */ |
4108 | 0x3f, 0xc0, /* 001111111100 */ | 4075 | 0x00, 0x00, /* 000000000000 */ |
4109 | 0x3f, 0xc0, /* 001111111100 */ | 4076 | 0x00, 0x00, /* 000000000000 */ |
4110 | 0x3f, 0xc0, /* 001111111100 */ | 4077 | 0x00, 0x00, /* 000000000000 */ |
4111 | 0x3f, 0xc0, /* 001111111100 */ | 4078 | 0x00, 0x00, /* 000000000000 */ |
4112 | 0x3f, 0xc0, /* 001111111100 */ | 4079 | 0x00, 0x00, /* 000000000000 */ |
4080 | 0x00, 0x00, /* 000000000000 */ | ||
4113 | 0x00, 0x00, /* 000000000000 */ | 4081 | 0x00, 0x00, /* 000000000000 */ |
4114 | 0x00, 0x00, /* 000000000000 */ | 4082 | 0x00, 0x00, /* 000000000000 */ |
4115 | 0x00, 0x00, /* 000000000000 */ | 4083 | 0x00, 0x00, /* 000000000000 */ |
@@ -5413,24 +5381,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5413 | 0x00, 0x00, /* 000000000000 */ | 5381 | 0x00, 0x00, /* 000000000000 */ |
5414 | 5382 | ||
5415 | /* 224 0xe0 '.' */ | 5383 | /* 224 0xe0 '.' */ |
5416 | /* FIXME */ | ||
5417 | 0x00, 0x00, /* 000000000000 */ | 5384 | 0x00, 0x00, /* 000000000000 */ |
5418 | 0x00, 0x00, /* 000000000000 */ | 5385 | 0x00, 0x00, /* 000000000000 */ |
5419 | 0x00, 0x00, /* 000000000000 */ | 5386 | 0x00, 0x00, /* 000000000000 */ |
5420 | 0x00, 0x00, /* 000000000000 */ | 5387 | 0x00, 0x00, /* 000000000000 */ |
5421 | 0x00, 0x00, /* 000000000000 */ | 5388 | 0x00, 0x00, /* 000000000000 */ |
5422 | 0x3f, 0xc0, /* 001111111100 */ | 5389 | 0x00, 0x00, /* 000000000000 */ |
5423 | 0x3f, 0xc0, /* 001111111100 */ | 5390 | 0x0f, 0x60, /* 000011110110 */ |
5424 | 0x3f, 0xc0, /* 001111111100 */ | 5391 | 0x13, 0xe0, /* 000100111110 */ |
5425 | 0x3f, 0xc0, /* 001111111100 */ | 5392 | 0x21, 0xc0, /* 001000011100 */ |
5426 | 0x3f, 0xc0, /* 001111111100 */ | 5393 | 0x60, 0xc0, /* 011000001100 */ |
5427 | 0x3f, 0xc0, /* 001111111100 */ | 5394 | 0x60, 0xc0, /* 011000001100 */ |
5428 | 0x3f, 0xc0, /* 001111111100 */ | 5395 | 0x60, 0xc0, /* 011000001100 */ |
5429 | 0x3f, 0xc0, /* 001111111100 */ | 5396 | 0x60, 0xc0, /* 011000001100 */ |
5430 | 0x3f, 0xc0, /* 001111111100 */ | 5397 | 0x70, 0x80, /* 011100001000 */ |
5431 | 0x3f, 0xc0, /* 001111111100 */ | 5398 | 0x39, 0xc0, /* 001110011100 */ |
5432 | 0x3f, 0xc0, /* 001111111100 */ | 5399 | 0x1f, 0x60, /* 000111110110 */ |
5433 | 0x3f, 0xc0, /* 001111111100 */ | 5400 | 0x00, 0x00, /* 000000000000 */ |
5434 | 0x00, 0x00, /* 000000000000 */ | 5401 | 0x00, 0x00, /* 000000000000 */ |
5435 | 0x00, 0x00, /* 000000000000 */ | 5402 | 0x00, 0x00, /* 000000000000 */ |
5436 | 0x00, 0x00, /* 000000000000 */ | 5403 | 0x00, 0x00, /* 000000000000 */ |
@@ -5462,24 +5429,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5462 | 0x00, 0x00, /* 000000000000 */ | 5429 | 0x00, 0x00, /* 000000000000 */ |
5463 | 5430 | ||
5464 | /* 226 0xe2 '.' */ | 5431 | /* 226 0xe2 '.' */ |
5465 | /* FIXME */ | ||
5466 | 0x00, 0x00, /* 000000000000 */ | ||
5467 | 0x00, 0x00, /* 000000000000 */ | ||
5468 | 0x00, 0x00, /* 000000000000 */ | 5432 | 0x00, 0x00, /* 000000000000 */ |
5469 | 0x00, 0x00, /* 000000000000 */ | 5433 | 0x00, 0x00, /* 000000000000 */ |
5434 | 0x3f, 0xe0, /* 001111111110 */ | ||
5435 | 0x3f, 0xe0, /* 001111111110 */ | ||
5436 | 0x30, 0x60, /* 001100000110 */ | ||
5437 | 0x30, 0x60, /* 001100000110 */ | ||
5438 | 0x30, 0x00, /* 001100000000 */ | ||
5439 | 0x30, 0x00, /* 001100000000 */ | ||
5440 | 0x30, 0x00, /* 001100000000 */ | ||
5441 | 0x30, 0x00, /* 001100000000 */ | ||
5442 | 0x30, 0x00, /* 001100000000 */ | ||
5443 | 0x30, 0x00, /* 001100000000 */ | ||
5444 | 0x30, 0x00, /* 001100000000 */ | ||
5445 | 0x30, 0x00, /* 001100000000 */ | ||
5446 | 0x30, 0x00, /* 001100000000 */ | ||
5447 | 0x30, 0x00, /* 001100000000 */ | ||
5470 | 0x00, 0x00, /* 000000000000 */ | 5448 | 0x00, 0x00, /* 000000000000 */ |
5471 | 0x3f, 0xc0, /* 001111111100 */ | ||
5472 | 0x3f, 0xc0, /* 001111111100 */ | ||
5473 | 0x3f, 0xc0, /* 001111111100 */ | ||
5474 | 0x3f, 0xc0, /* 001111111100 */ | ||
5475 | 0x3f, 0xc0, /* 001111111100 */ | ||
5476 | 0x3f, 0xc0, /* 001111111100 */ | ||
5477 | 0x3f, 0xc0, /* 001111111100 */ | ||
5478 | 0x3f, 0xc0, /* 001111111100 */ | ||
5479 | 0x3f, 0xc0, /* 001111111100 */ | ||
5480 | 0x3f, 0xc0, /* 001111111100 */ | ||
5481 | 0x3f, 0xc0, /* 001111111100 */ | ||
5482 | 0x3f, 0xc0, /* 001111111100 */ | ||
5483 | 0x00, 0x00, /* 000000000000 */ | 5449 | 0x00, 0x00, /* 000000000000 */ |
5484 | 0x00, 0x00, /* 000000000000 */ | 5450 | 0x00, 0x00, /* 000000000000 */ |
5485 | 0x00, 0x00, /* 000000000000 */ | 5451 | 0x00, 0x00, /* 000000000000 */ |
@@ -5487,49 +5453,47 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5487 | 0x00, 0x00, /* 000000000000 */ | 5453 | 0x00, 0x00, /* 000000000000 */ |
5488 | 5454 | ||
5489 | /* 227 0xe3 '.' */ | 5455 | /* 227 0xe3 '.' */ |
5490 | /* FIXME */ | ||
5491 | 0x00, 0x00, /* 000000000000 */ | 5456 | 0x00, 0x00, /* 000000000000 */ |
5492 | 0x00, 0x00, /* 000000000000 */ | 5457 | 0x00, 0x00, /* 000000000000 */ |
5493 | 0x00, 0x00, /* 000000000000 */ | 5458 | 0x00, 0x00, /* 000000000000 */ |
5494 | 0x00, 0x00, /* 000000000000 */ | 5459 | 0x00, 0x00, /* 000000000000 */ |
5495 | 0x00, 0x00, /* 000000000000 */ | 5460 | 0x00, 0x00, /* 000000000000 */ |
5496 | 0x3f, 0xc0, /* 001111111100 */ | ||
5497 | 0x3f, 0xc0, /* 001111111100 */ | ||
5498 | 0x3f, 0xc0, /* 001111111100 */ | ||
5499 | 0x3f, 0xc0, /* 001111111100 */ | ||
5500 | 0x3f, 0xc0, /* 001111111100 */ | ||
5501 | 0x3f, 0xc0, /* 001111111100 */ | ||
5502 | 0x3f, 0xc0, /* 001111111100 */ | ||
5503 | 0x3f, 0xc0, /* 001111111100 */ | ||
5504 | 0x3f, 0xc0, /* 001111111100 */ | ||
5505 | 0x3f, 0xc0, /* 001111111100 */ | ||
5506 | 0x3f, 0xc0, /* 001111111100 */ | ||
5507 | 0x3f, 0xc0, /* 001111111100 */ | ||
5508 | 0x00, 0x00, /* 000000000000 */ | ||
5509 | 0x00, 0x00, /* 000000000000 */ | 5461 | 0x00, 0x00, /* 000000000000 */ |
5462 | 0x7f, 0xe0, /* 011111111110 */ | ||
5463 | 0x7f, 0xe0, /* 011111111110 */ | ||
5464 | 0x19, 0x80, /* 000110011000 */ | ||
5465 | 0x19, 0x80, /* 000110011000 */ | ||
5466 | 0x19, 0x80, /* 000110011000 */ | ||
5467 | 0x19, 0x80, /* 000110011000 */ | ||
5468 | 0x19, 0x80, /* 000110011000 */ | ||
5469 | 0x19, 0x80, /* 000110011000 */ | ||
5470 | 0x19, 0x80, /* 000110011000 */ | ||
5471 | 0x19, 0x80, /* 000110011000 */ | ||
5510 | 0x00, 0x00, /* 000000000000 */ | 5472 | 0x00, 0x00, /* 000000000000 */ |
5511 | 0x00, 0x00, /* 000000000000 */ | 5473 | 0x00, 0x00, /* 000000000000 */ |
5512 | 0x00, 0x00, /* 000000000000 */ | 5474 | 0x00, 0x00, /* 000000000000 */ |
5513 | |||
5514 | /* 228 0xe4 '.' */ | ||
5515 | /* FIXME */ | ||
5516 | 0x00, 0x00, /* 000000000000 */ | 5475 | 0x00, 0x00, /* 000000000000 */ |
5517 | 0x00, 0x00, /* 000000000000 */ | 5476 | 0x00, 0x00, /* 000000000000 */ |
5518 | 0x00, 0x00, /* 000000000000 */ | 5477 | 0x00, 0x00, /* 000000000000 */ |
5478 | |||
5479 | /* 228 0xe4 '.' */ | ||
5519 | 0x00, 0x00, /* 000000000000 */ | 5480 | 0x00, 0x00, /* 000000000000 */ |
5481 | 0x7f, 0xe0, /* 011111111110 */ | ||
5482 | 0x7f, 0xe0, /* 011111111110 */ | ||
5483 | 0x60, 0x60, /* 011000000110 */ | ||
5484 | 0x30, 0x60, /* 001100000110 */ | ||
5485 | 0x30, 0x00, /* 001100000000 */ | ||
5486 | 0x18, 0x00, /* 000110000000 */ | ||
5487 | 0x18, 0x00, /* 000110000000 */ | ||
5488 | 0x0c, 0x00, /* 000011000000 */ | ||
5489 | 0x18, 0x00, /* 000110000000 */ | ||
5490 | 0x18, 0x00, /* 000110000000 */ | ||
5491 | 0x30, 0x00, /* 001100000000 */ | ||
5492 | 0x30, 0x60, /* 001100000110 */ | ||
5493 | 0x60, 0x60, /* 011000000110 */ | ||
5494 | 0x7f, 0xe0, /* 011111111110 */ | ||
5495 | 0x7f, 0xe0, /* 011111111110 */ | ||
5520 | 0x00, 0x00, /* 000000000000 */ | 5496 | 0x00, 0x00, /* 000000000000 */ |
5521 | 0x3f, 0xc0, /* 001111111100 */ | ||
5522 | 0x3f, 0xc0, /* 001111111100 */ | ||
5523 | 0x3f, 0xc0, /* 001111111100 */ | ||
5524 | 0x3f, 0xc0, /* 001111111100 */ | ||
5525 | 0x3f, 0xc0, /* 001111111100 */ | ||
5526 | 0x3f, 0xc0, /* 001111111100 */ | ||
5527 | 0x3f, 0xc0, /* 001111111100 */ | ||
5528 | 0x3f, 0xc0, /* 001111111100 */ | ||
5529 | 0x3f, 0xc0, /* 001111111100 */ | ||
5530 | 0x3f, 0xc0, /* 001111111100 */ | ||
5531 | 0x3f, 0xc0, /* 001111111100 */ | ||
5532 | 0x3f, 0xc0, /* 001111111100 */ | ||
5533 | 0x00, 0x00, /* 000000000000 */ | 5497 | 0x00, 0x00, /* 000000000000 */ |
5534 | 0x00, 0x00, /* 000000000000 */ | 5498 | 0x00, 0x00, /* 000000000000 */ |
5535 | 0x00, 0x00, /* 000000000000 */ | 5499 | 0x00, 0x00, /* 000000000000 */ |
@@ -5537,24 +5501,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5537 | 0x00, 0x00, /* 000000000000 */ | 5501 | 0x00, 0x00, /* 000000000000 */ |
5538 | 5502 | ||
5539 | /* 229 0xe5 '.' */ | 5503 | /* 229 0xe5 '.' */ |
5540 | /* FIXME */ | ||
5541 | 0x00, 0x00, /* 000000000000 */ | 5504 | 0x00, 0x00, /* 000000000000 */ |
5542 | 0x00, 0x00, /* 000000000000 */ | 5505 | 0x00, 0x00, /* 000000000000 */ |
5543 | 0x00, 0x00, /* 000000000000 */ | 5506 | 0x00, 0x00, /* 000000000000 */ |
5544 | 0x00, 0x00, /* 000000000000 */ | 5507 | 0x00, 0x00, /* 000000000000 */ |
5545 | 0x00, 0x00, /* 000000000000 */ | 5508 | 0x00, 0x00, /* 000000000000 */ |
5546 | 0x3f, 0xc0, /* 001111111100 */ | 5509 | 0x07, 0xe0, /* 000001111110 */ |
5547 | 0x3f, 0xc0, /* 001111111100 */ | 5510 | 0x0f, 0xe0, /* 000011111110 */ |
5548 | 0x3f, 0xc0, /* 001111111100 */ | 5511 | 0x13, 0x80, /* 000100111000 */ |
5549 | 0x3f, 0xc0, /* 001111111100 */ | 5512 | 0x21, 0xc0, /* 001000011100 */ |
5550 | 0x3f, 0xc0, /* 001111111100 */ | 5513 | 0x60, 0xc0, /* 011000001100 */ |
5551 | 0x3f, 0xc0, /* 001111111100 */ | 5514 | 0x60, 0xc0, /* 011000001100 */ |
5552 | 0x3f, 0xc0, /* 001111111100 */ | 5515 | 0x60, 0xc0, /* 011000001100 */ |
5553 | 0x3f, 0xc0, /* 001111111100 */ | 5516 | 0x60, 0xc0, /* 011000001100 */ |
5554 | 0x3f, 0xc0, /* 001111111100 */ | 5517 | 0x70, 0x80, /* 011100001000 */ |
5555 | 0x3f, 0xc0, /* 001111111100 */ | 5518 | 0x39, 0x00, /* 001110010000 */ |
5556 | 0x3f, 0xc0, /* 001111111100 */ | 5519 | 0x1e, 0x00, /* 000111100000 */ |
5557 | 0x3f, 0xc0, /* 001111111100 */ | 5520 | 0x00, 0x00, /* 000000000000 */ |
5558 | 0x00, 0x00, /* 000000000000 */ | 5521 | 0x00, 0x00, /* 000000000000 */ |
5559 | 0x00, 0x00, /* 000000000000 */ | 5522 | 0x00, 0x00, /* 000000000000 */ |
5560 | 0x00, 0x00, /* 000000000000 */ | 5523 | 0x00, 0x00, /* 000000000000 */ |
@@ -5586,24 +5549,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5586 | 0x00, 0x00, /* 000000000000 */ | 5549 | 0x00, 0x00, /* 000000000000 */ |
5587 | 5550 | ||
5588 | /* 231 0xe7 '.' */ | 5551 | /* 231 0xe7 '.' */ |
5589 | /* FIXME */ | ||
5590 | 0x00, 0x00, /* 000000000000 */ | ||
5591 | 0x00, 0x00, /* 000000000000 */ | ||
5592 | 0x00, 0x00, /* 000000000000 */ | ||
5593 | 0x00, 0x00, /* 000000000000 */ | 5552 | 0x00, 0x00, /* 000000000000 */ |
5594 | 0x00, 0x00, /* 000000000000 */ | 5553 | 0x19, 0x80, /* 000110011000 */ |
5595 | 0x3f, 0xc0, /* 001111111100 */ | ||
5596 | 0x3f, 0xc0, /* 001111111100 */ | ||
5597 | 0x3f, 0xc0, /* 001111111100 */ | ||
5598 | 0x3f, 0xc0, /* 001111111100 */ | ||
5599 | 0x3f, 0xc0, /* 001111111100 */ | ||
5600 | 0x3f, 0xc0, /* 001111111100 */ | ||
5601 | 0x3f, 0xc0, /* 001111111100 */ | ||
5602 | 0x3f, 0xc0, /* 001111111100 */ | ||
5603 | 0x3f, 0xc0, /* 001111111100 */ | ||
5604 | 0x3f, 0xc0, /* 001111111100 */ | ||
5605 | 0x3f, 0xc0, /* 001111111100 */ | ||
5606 | 0x3f, 0xc0, /* 001111111100 */ | 5554 | 0x3f, 0xc0, /* 001111111100 */ |
5555 | 0x66, 0x60, /* 011001100110 */ | ||
5556 | 0x66, 0x60, /* 011001100110 */ | ||
5557 | 0x06, 0x00, /* 000001100000 */ | ||
5558 | 0x06, 0x00, /* 000001100000 */ | ||
5559 | 0x06, 0x00, /* 000001100000 */ | ||
5560 | 0x06, 0x00, /* 000001100000 */ | ||
5561 | 0x06, 0x00, /* 000001100000 */ | ||
5562 | 0x06, 0x00, /* 000001100000 */ | ||
5563 | 0x06, 0x00, /* 000001100000 */ | ||
5564 | 0x06, 0x00, /* 000001100000 */ | ||
5565 | 0x06, 0x00, /* 000001100000 */ | ||
5566 | 0x06, 0x00, /* 000001100000 */ | ||
5567 | 0x06, 0x00, /* 000001100000 */ | ||
5568 | 0x00, 0x00, /* 000000000000 */ | ||
5607 | 0x00, 0x00, /* 000000000000 */ | 5569 | 0x00, 0x00, /* 000000000000 */ |
5608 | 0x00, 0x00, /* 000000000000 */ | 5570 | 0x00, 0x00, /* 000000000000 */ |
5609 | 0x00, 0x00, /* 000000000000 */ | 5571 | 0x00, 0x00, /* 000000000000 */ |
@@ -5611,24 +5573,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5611 | 0x00, 0x00, /* 000000000000 */ | 5573 | 0x00, 0x00, /* 000000000000 */ |
5612 | 5574 | ||
5613 | /* 232 0xe8 '.' */ | 5575 | /* 232 0xe8 '.' */ |
5614 | /* FIXME */ | ||
5615 | 0x00, 0x00, /* 000000000000 */ | ||
5616 | 0x00, 0x00, /* 000000000000 */ | ||
5617 | 0x00, 0x00, /* 000000000000 */ | 5576 | 0x00, 0x00, /* 000000000000 */ |
5618 | 0x00, 0x00, /* 000000000000 */ | 5577 | 0x00, 0x00, /* 000000000000 */ |
5578 | 0x7f, 0xe0, /* 011111111110 */ | ||
5579 | 0x7f, 0xe0, /* 011111111110 */ | ||
5580 | 0x06, 0x00, /* 000001100000 */ | ||
5581 | 0x06, 0x00, /* 000001100000 */ | ||
5582 | 0x0f, 0x00, /* 000011110000 */ | ||
5583 | 0x19, 0x80, /* 000110011000 */ | ||
5584 | 0x30, 0xc0, /* 001100001100 */ | ||
5585 | 0x30, 0xc0, /* 001100001100 */ | ||
5586 | 0x19, 0x80, /* 000110011000 */ | ||
5587 | 0x0f, 0x00, /* 000011110000 */ | ||
5588 | 0x06, 0x00, /* 000001100000 */ | ||
5589 | 0x06, 0x00, /* 000001100000 */ | ||
5590 | 0x7f, 0xe0, /* 011111111110 */ | ||
5591 | 0x7f, 0xe0, /* 011111111110 */ | ||
5619 | 0x00, 0x00, /* 000000000000 */ | 5592 | 0x00, 0x00, /* 000000000000 */ |
5620 | 0x3f, 0xc0, /* 001111111100 */ | ||
5621 | 0x3f, 0xc0, /* 001111111100 */ | ||
5622 | 0x3f, 0xc0, /* 001111111100 */ | ||
5623 | 0x3f, 0xc0, /* 001111111100 */ | ||
5624 | 0x3f, 0xc0, /* 001111111100 */ | ||
5625 | 0x3f, 0xc0, /* 001111111100 */ | ||
5626 | 0x3f, 0xc0, /* 001111111100 */ | ||
5627 | 0x3f, 0xc0, /* 001111111100 */ | ||
5628 | 0x3f, 0xc0, /* 001111111100 */ | ||
5629 | 0x3f, 0xc0, /* 001111111100 */ | ||
5630 | 0x3f, 0xc0, /* 001111111100 */ | ||
5631 | 0x3f, 0xc0, /* 001111111100 */ | ||
5632 | 0x00, 0x00, /* 000000000000 */ | 5593 | 0x00, 0x00, /* 000000000000 */ |
5633 | 0x00, 0x00, /* 000000000000 */ | 5594 | 0x00, 0x00, /* 000000000000 */ |
5634 | 0x00, 0x00, /* 000000000000 */ | 5595 | 0x00, 0x00, /* 000000000000 */ |
@@ -5636,24 +5597,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5636 | 0x00, 0x00, /* 000000000000 */ | 5597 | 0x00, 0x00, /* 000000000000 */ |
5637 | 5598 | ||
5638 | /* 233 0xe9 '.' */ | 5599 | /* 233 0xe9 '.' */ |
5639 | /* FIXME */ | ||
5640 | 0x00, 0x00, /* 000000000000 */ | 5600 | 0x00, 0x00, /* 000000000000 */ |
5641 | 0x00, 0x00, /* 000000000000 */ | 5601 | 0x00, 0x00, /* 000000000000 */ |
5642 | 0x00, 0x00, /* 000000000000 */ | 5602 | 0x00, 0x00, /* 000000000000 */ |
5643 | 0x00, 0x00, /* 000000000000 */ | 5603 | 0x00, 0x00, /* 000000000000 */ |
5604 | 0x0f, 0x00, /* 000011110000 */ | ||
5605 | 0x1f, 0x80, /* 000111111000 */ | ||
5606 | 0x30, 0xc0, /* 001100001100 */ | ||
5607 | 0x60, 0x60, /* 011000000110 */ | ||
5608 | 0x60, 0x60, /* 011000000110 */ | ||
5609 | 0x7f, 0xe0, /* 011111111110 */ | ||
5610 | 0x7f, 0xe0, /* 011111111110 */ | ||
5611 | 0x60, 0x60, /* 011000000110 */ | ||
5612 | 0x60, 0x60, /* 011000000110 */ | ||
5613 | 0x30, 0xc0, /* 001100001100 */ | ||
5614 | 0x1f, 0x80, /* 000111111000 */ | ||
5615 | 0x0f, 0x00, /* 000011110000 */ | ||
5644 | 0x00, 0x00, /* 000000000000 */ | 5616 | 0x00, 0x00, /* 000000000000 */ |
5645 | 0x3f, 0xc0, /* 001111111100 */ | ||
5646 | 0x3f, 0xc0, /* 001111111100 */ | ||
5647 | 0x3f, 0xc0, /* 001111111100 */ | ||
5648 | 0x3f, 0xc0, /* 001111111100 */ | ||
5649 | 0x3f, 0xc0, /* 001111111100 */ | ||
5650 | 0x3f, 0xc0, /* 001111111100 */ | ||
5651 | 0x3f, 0xc0, /* 001111111100 */ | ||
5652 | 0x3f, 0xc0, /* 001111111100 */ | ||
5653 | 0x3f, 0xc0, /* 001111111100 */ | ||
5654 | 0x3f, 0xc0, /* 001111111100 */ | ||
5655 | 0x3f, 0xc0, /* 001111111100 */ | ||
5656 | 0x3f, 0xc0, /* 001111111100 */ | ||
5657 | 0x00, 0x00, /* 000000000000 */ | 5617 | 0x00, 0x00, /* 000000000000 */ |
5658 | 0x00, 0x00, /* 000000000000 */ | 5618 | 0x00, 0x00, /* 000000000000 */ |
5659 | 0x00, 0x00, /* 000000000000 */ | 5619 | 0x00, 0x00, /* 000000000000 */ |
@@ -5661,24 +5621,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5661 | 0x00, 0x00, /* 000000000000 */ | 5621 | 0x00, 0x00, /* 000000000000 */ |
5662 | 5622 | ||
5663 | /* 234 0xea '.' */ | 5623 | /* 234 0xea '.' */ |
5664 | /* FIXME */ | ||
5665 | 0x00, 0x00, /* 000000000000 */ | 5624 | 0x00, 0x00, /* 000000000000 */ |
5666 | 0x00, 0x00, /* 000000000000 */ | 5625 | 0x00, 0x00, /* 000000000000 */ |
5667 | 0x00, 0x00, /* 000000000000 */ | 5626 | 0x00, 0x00, /* 000000000000 */ |
5668 | 0x00, 0x00, /* 000000000000 */ | 5627 | 0x00, 0x00, /* 000000000000 */ |
5628 | 0x1f, 0x00, /* 000111110000 */ | ||
5629 | 0x31, 0x80, /* 001100011000 */ | ||
5630 | 0x30, 0xc0, /* 001100001100 */ | ||
5631 | 0x30, 0xc0, /* 001100001100 */ | ||
5632 | 0x60, 0x60, /* 011000000110 */ | ||
5633 | 0x60, 0x60, /* 011000000110 */ | ||
5634 | 0x30, 0xc0, /* 001100001100 */ | ||
5635 | 0x30, 0xc0, /* 001100001100 */ | ||
5636 | 0x19, 0x80, /* 000110011000 */ | ||
5637 | 0x19, 0x80, /* 000110011000 */ | ||
5638 | 0xd9, 0xb0, /* 110110011011 */ | ||
5639 | 0x79, 0xe0, /* 011110011110 */ | ||
5669 | 0x00, 0x00, /* 000000000000 */ | 5640 | 0x00, 0x00, /* 000000000000 */ |
5670 | 0x3f, 0xc0, /* 001111111100 */ | ||
5671 | 0x3f, 0xc0, /* 001111111100 */ | ||
5672 | 0x3f, 0xc0, /* 001111111100 */ | ||
5673 | 0x3f, 0xc0, /* 001111111100 */ | ||
5674 | 0x3f, 0xc0, /* 001111111100 */ | ||
5675 | 0x3f, 0xc0, /* 001111111100 */ | ||
5676 | 0x3f, 0xc0, /* 001111111100 */ | ||
5677 | 0x3f, 0xc0, /* 001111111100 */ | ||
5678 | 0x3f, 0xc0, /* 001111111100 */ | ||
5679 | 0x3f, 0xc0, /* 001111111100 */ | ||
5680 | 0x3f, 0xc0, /* 001111111100 */ | ||
5681 | 0x3f, 0xc0, /* 001111111100 */ | ||
5682 | 0x00, 0x00, /* 000000000000 */ | 5641 | 0x00, 0x00, /* 000000000000 */ |
5683 | 0x00, 0x00, /* 000000000000 */ | 5642 | 0x00, 0x00, /* 000000000000 */ |
5684 | 0x00, 0x00, /* 000000000000 */ | 5643 | 0x00, 0x00, /* 000000000000 */ |
@@ -5686,24 +5645,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5686 | 0x00, 0x00, /* 000000000000 */ | 5645 | 0x00, 0x00, /* 000000000000 */ |
5687 | 5646 | ||
5688 | /* 235 0xeb '.' */ | 5647 | /* 235 0xeb '.' */ |
5689 | /* FIXME */ | ||
5690 | 0x00, 0x00, /* 000000000000 */ | ||
5691 | 0x00, 0x00, /* 000000000000 */ | ||
5692 | 0x00, 0x00, /* 000000000000 */ | ||
5693 | 0x00, 0x00, /* 000000000000 */ | 5648 | 0x00, 0x00, /* 000000000000 */ |
5649 | 0x07, 0x80, /* 000001111000 */ | ||
5650 | 0x0c, 0xc0, /* 000011001100 */ | ||
5651 | 0x18, 0x60, /* 000110000110 */ | ||
5652 | 0x18, 0x00, /* 000110000000 */ | ||
5653 | 0x0c, 0x00, /* 000011000000 */ | ||
5654 | 0x06, 0x00, /* 000001100000 */ | ||
5655 | 0x03, 0x00, /* 000000110000 */ | ||
5656 | 0x0f, 0x80, /* 000011111000 */ | ||
5657 | 0x11, 0xc0, /* 000100011100 */ | ||
5658 | 0x20, 0xe0, /* 001000001110 */ | ||
5659 | 0x60, 0x60, /* 011000000110 */ | ||
5660 | 0x60, 0x60, /* 011000000110 */ | ||
5661 | 0x70, 0x40, /* 011100000100 */ | ||
5662 | 0x38, 0x80, /* 001110001000 */ | ||
5663 | 0x1f, 0x00, /* 000111110000 */ | ||
5694 | 0x00, 0x00, /* 000000000000 */ | 5664 | 0x00, 0x00, /* 000000000000 */ |
5695 | 0x3f, 0xc0, /* 001111111100 */ | ||
5696 | 0x3f, 0xc0, /* 001111111100 */ | ||
5697 | 0x3f, 0xc0, /* 001111111100 */ | ||
5698 | 0x3f, 0xc0, /* 001111111100 */ | ||
5699 | 0x3f, 0xc0, /* 001111111100 */ | ||
5700 | 0x3f, 0xc0, /* 001111111100 */ | ||
5701 | 0x3f, 0xc0, /* 001111111100 */ | ||
5702 | 0x3f, 0xc0, /* 001111111100 */ | ||
5703 | 0x3f, 0xc0, /* 001111111100 */ | ||
5704 | 0x3f, 0xc0, /* 001111111100 */ | ||
5705 | 0x3f, 0xc0, /* 001111111100 */ | ||
5706 | 0x3f, 0xc0, /* 001111111100 */ | ||
5707 | 0x00, 0x00, /* 000000000000 */ | 5665 | 0x00, 0x00, /* 000000000000 */ |
5708 | 0x00, 0x00, /* 000000000000 */ | 5666 | 0x00, 0x00, /* 000000000000 */ |
5709 | 0x00, 0x00, /* 000000000000 */ | 5667 | 0x00, 0x00, /* 000000000000 */ |
@@ -5711,99 +5669,95 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5711 | 0x00, 0x00, /* 000000000000 */ | 5669 | 0x00, 0x00, /* 000000000000 */ |
5712 | 5670 | ||
5713 | /* 236 0xec '.' */ | 5671 | /* 236 0xec '.' */ |
5714 | /* FIXME */ | ||
5715 | 0x00, 0x00, /* 000000000000 */ | 5672 | 0x00, 0x00, /* 000000000000 */ |
5716 | 0x00, 0x00, /* 000000000000 */ | 5673 | 0x00, 0x00, /* 000000000000 */ |
5717 | 0x00, 0x00, /* 000000000000 */ | 5674 | 0x00, 0x00, /* 000000000000 */ |
5718 | 0x00, 0x00, /* 000000000000 */ | 5675 | 0x00, 0x00, /* 000000000000 */ |
5719 | 0x00, 0x00, /* 000000000000 */ | 5676 | 0x00, 0x00, /* 000000000000 */ |
5720 | 0x3f, 0xc0, /* 001111111100 */ | ||
5721 | 0x3f, 0xc0, /* 001111111100 */ | ||
5722 | 0x3f, 0xc0, /* 001111111100 */ | ||
5723 | 0x3f, 0xc0, /* 001111111100 */ | ||
5724 | 0x3f, 0xc0, /* 001111111100 */ | ||
5725 | 0x3f, 0xc0, /* 001111111100 */ | ||
5726 | 0x3f, 0xc0, /* 001111111100 */ | ||
5727 | 0x3f, 0xc0, /* 001111111100 */ | ||
5728 | 0x3f, 0xc0, /* 001111111100 */ | ||
5729 | 0x3f, 0xc0, /* 001111111100 */ | ||
5730 | 0x3f, 0xc0, /* 001111111100 */ | ||
5731 | 0x3f, 0xc0, /* 001111111100 */ | ||
5732 | 0x00, 0x00, /* 000000000000 */ | 5677 | 0x00, 0x00, /* 000000000000 */ |
5733 | 0x00, 0x00, /* 000000000000 */ | 5678 | 0x00, 0x00, /* 000000000000 */ |
5734 | 0x00, 0x00, /* 000000000000 */ | 5679 | 0x00, 0x00, /* 000000000000 */ |
5680 | 0x39, 0xc0, /* 001110011100 */ | ||
5681 | 0x6f, 0x60, /* 011011110110 */ | ||
5682 | 0x66, 0x60, /* 011001100110 */ | ||
5683 | 0xc6, 0x30, /* 110001100011 */ | ||
5684 | 0xc6, 0x30, /* 110001100011 */ | ||
5685 | 0x66, 0x60, /* 011001100110 */ | ||
5686 | 0x6f, 0x60, /* 011011110110 */ | ||
5687 | 0x39, 0xc0, /* 001110011100 */ | ||
5735 | 0x00, 0x00, /* 000000000000 */ | 5688 | 0x00, 0x00, /* 000000000000 */ |
5736 | 0x00, 0x00, /* 000000000000 */ | 5689 | 0x00, 0x00, /* 000000000000 */ |
5737 | |||
5738 | /* 237 0xed '.' */ | ||
5739 | /* FIXME */ | ||
5740 | 0x00, 0x00, /* 000000000000 */ | 5690 | 0x00, 0x00, /* 000000000000 */ |
5741 | 0x00, 0x00, /* 000000000000 */ | 5691 | 0x00, 0x00, /* 000000000000 */ |
5742 | 0x00, 0x00, /* 000000000000 */ | 5692 | 0x00, 0x00, /* 000000000000 */ |
5743 | 0x00, 0x00, /* 000000000000 */ | 5693 | 0x00, 0x00, /* 000000000000 */ |
5694 | |||
5695 | /* 237 0xed '.' */ | ||
5744 | 0x00, 0x00, /* 000000000000 */ | 5696 | 0x00, 0x00, /* 000000000000 */ |
5745 | 0x3f, 0xc0, /* 001111111100 */ | ||
5746 | 0x3f, 0xc0, /* 001111111100 */ | ||
5747 | 0x3f, 0xc0, /* 001111111100 */ | ||
5748 | 0x3f, 0xc0, /* 001111111100 */ | ||
5749 | 0x3f, 0xc0, /* 001111111100 */ | ||
5750 | 0x3f, 0xc0, /* 001111111100 */ | ||
5751 | 0x3f, 0xc0, /* 001111111100 */ | ||
5752 | 0x3f, 0xc0, /* 001111111100 */ | ||
5753 | 0x3f, 0xc0, /* 001111111100 */ | ||
5754 | 0x3f, 0xc0, /* 001111111100 */ | ||
5755 | 0x3f, 0xc0, /* 001111111100 */ | ||
5756 | 0x3f, 0xc0, /* 001111111100 */ | ||
5757 | 0x00, 0x00, /* 000000000000 */ | 5697 | 0x00, 0x00, /* 000000000000 */ |
5758 | 0x00, 0x00, /* 000000000000 */ | 5698 | 0x00, 0x00, /* 000000000000 */ |
5759 | 0x00, 0x00, /* 000000000000 */ | 5699 | 0x00, 0x00, /* 000000000000 */ |
5700 | 0x00, 0xc0, /* 000000001100 */ | ||
5701 | 0x00, 0xc0, /* 000000001100 */ | ||
5702 | 0x01, 0x80, /* 000000011000 */ | ||
5703 | 0x01, 0x80, /* 000000011000 */ | ||
5704 | 0x3b, 0xc0, /* 001110111100 */ | ||
5705 | 0x6f, 0x60, /* 011011110110 */ | ||
5706 | 0x66, 0x60, /* 011001100110 */ | ||
5707 | 0xc6, 0x30, /* 110001100011 */ | ||
5708 | 0xc6, 0x30, /* 110001100011 */ | ||
5709 | 0x66, 0x60, /* 011001100110 */ | ||
5710 | 0x6f, 0x60, /* 011011110110 */ | ||
5711 | 0x3d, 0xc0, /* 001111011100 */ | ||
5712 | 0x18, 0x00, /* 000110000000 */ | ||
5713 | 0x18, 0x00, /* 000110000000 */ | ||
5714 | 0x30, 0x00, /* 001100000000 */ | ||
5715 | 0x30, 0x00, /* 001100000000 */ | ||
5760 | 0x00, 0x00, /* 000000000000 */ | 5716 | 0x00, 0x00, /* 000000000000 */ |
5761 | 0x00, 0x00, /* 000000000000 */ | 5717 | 0x00, 0x00, /* 000000000000 */ |
5762 | 5718 | ||
5763 | /* 238 0xee '.' */ | 5719 | /* 238 0xee '.' */ |
5764 | /* FIXME */ | ||
5765 | 0x00, 0x00, /* 000000000000 */ | 5720 | 0x00, 0x00, /* 000000000000 */ |
5721 | 0x01, 0xc0, /* 000000011100 */ | ||
5722 | 0x03, 0x00, /* 000000110000 */ | ||
5723 | 0x06, 0x00, /* 000001100000 */ | ||
5724 | 0x06, 0x00, /* 000001100000 */ | ||
5725 | 0x0c, 0x00, /* 000011000000 */ | ||
5726 | 0x0c, 0x00, /* 000011000000 */ | ||
5727 | 0x18, 0x00, /* 000110000000 */ | ||
5728 | 0x1f, 0xc0, /* 000111111100 */ | ||
5729 | 0x18, 0x00, /* 000110000000 */ | ||
5730 | 0x0c, 0x00, /* 000011000000 */ | ||
5731 | 0x0c, 0x00, /* 000011000000 */ | ||
5732 | 0x06, 0x00, /* 000001100000 */ | ||
5733 | 0x06, 0x00, /* 000001100000 */ | ||
5734 | 0x03, 0x00, /* 000000110000 */ | ||
5735 | 0x01, 0xc0, /* 000000011100 */ | ||
5766 | 0x00, 0x00, /* 000000000000 */ | 5736 | 0x00, 0x00, /* 000000000000 */ |
5767 | 0x00, 0x00, /* 000000000000 */ | 5737 | 0x00, 0x00, /* 000000000000 */ |
5768 | 0x00, 0x00, /* 000000000000 */ | 5738 | 0x00, 0x00, /* 000000000000 */ |
5769 | 0x00, 0x00, /* 000000000000 */ | 5739 | 0x00, 0x00, /* 000000000000 */ |
5770 | 0x3f, 0xc0, /* 001111111100 */ | ||
5771 | 0x3f, 0xc0, /* 001111111100 */ | ||
5772 | 0x3f, 0xc0, /* 001111111100 */ | ||
5773 | 0x3f, 0xc0, /* 001111111100 */ | ||
5774 | 0x3f, 0xc0, /* 001111111100 */ | ||
5775 | 0x3f, 0xc0, /* 001111111100 */ | ||
5776 | 0x3f, 0xc0, /* 001111111100 */ | ||
5777 | 0x3f, 0xc0, /* 001111111100 */ | ||
5778 | 0x3f, 0xc0, /* 001111111100 */ | ||
5779 | 0x3f, 0xc0, /* 001111111100 */ | ||
5780 | 0x3f, 0xc0, /* 001111111100 */ | ||
5781 | 0x3f, 0xc0, /* 001111111100 */ | ||
5782 | 0x00, 0x00, /* 000000000000 */ | ||
5783 | 0x00, 0x00, /* 000000000000 */ | ||
5784 | 0x00, 0x00, /* 000000000000 */ | ||
5785 | 0x00, 0x00, /* 000000000000 */ | 5740 | 0x00, 0x00, /* 000000000000 */ |
5786 | 0x00, 0x00, /* 000000000000 */ | 5741 | 0x00, 0x00, /* 000000000000 */ |
5787 | 5742 | ||
5788 | /* 239 0xef '.' */ | 5743 | /* 239 0xef '.' */ |
5789 | /* FIXME */ | ||
5790 | 0x00, 0x00, /* 000000000000 */ | 5744 | 0x00, 0x00, /* 000000000000 */ |
5791 | 0x00, 0x00, /* 000000000000 */ | 5745 | 0x00, 0x00, /* 000000000000 */ |
5792 | 0x00, 0x00, /* 000000000000 */ | 5746 | 0x00, 0x00, /* 000000000000 */ |
5793 | 0x00, 0x00, /* 000000000000 */ | 5747 | 0x00, 0x00, /* 000000000000 */ |
5794 | 0x00, 0x00, /* 000000000000 */ | 5748 | 0x00, 0x00, /* 000000000000 */ |
5795 | 0x3f, 0xc0, /* 001111111100 */ | 5749 | 0x0f, 0x00, /* 000011110000 */ |
5796 | 0x3f, 0xc0, /* 001111111100 */ | 5750 | 0x1f, 0x80, /* 000111111000 */ |
5797 | 0x3f, 0xc0, /* 001111111100 */ | 5751 | 0x39, 0xc0, /* 001110011100 */ |
5798 | 0x3f, 0xc0, /* 001111111100 */ | 5752 | 0x30, 0xc0, /* 001100001100 */ |
5799 | 0x3f, 0xc0, /* 001111111100 */ | 5753 | 0x30, 0xc0, /* 001100001100 */ |
5800 | 0x3f, 0xc0, /* 001111111100 */ | 5754 | 0x30, 0xc0, /* 001100001100 */ |
5801 | 0x3f, 0xc0, /* 001111111100 */ | 5755 | 0x30, 0xc0, /* 001100001100 */ |
5802 | 0x3f, 0xc0, /* 001111111100 */ | 5756 | 0x30, 0xc0, /* 001100001100 */ |
5803 | 0x3f, 0xc0, /* 001111111100 */ | 5757 | 0x30, 0xc0, /* 001100001100 */ |
5804 | 0x3f, 0xc0, /* 001111111100 */ | 5758 | 0x30, 0xc0, /* 001100001100 */ |
5805 | 0x3f, 0xc0, /* 001111111100 */ | 5759 | 0x30, 0xc0, /* 001100001100 */ |
5806 | 0x3f, 0xc0, /* 001111111100 */ | 5760 | 0x30, 0xc0, /* 001100001100 */ |
5807 | 0x00, 0x00, /* 000000000000 */ | 5761 | 0x00, 0x00, /* 000000000000 */ |
5808 | 0x00, 0x00, /* 000000000000 */ | 5762 | 0x00, 0x00, /* 000000000000 */ |
5809 | 0x00, 0x00, /* 000000000000 */ | 5763 | 0x00, 0x00, /* 000000000000 */ |
@@ -5811,24 +5765,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5811 | 0x00, 0x00, /* 000000000000 */ | 5765 | 0x00, 0x00, /* 000000000000 */ |
5812 | 5766 | ||
5813 | /* 240 0xf0 '.' */ | 5767 | /* 240 0xf0 '.' */ |
5814 | /* FIXME */ | ||
5815 | 0x00, 0x00, /* 000000000000 */ | 5768 | 0x00, 0x00, /* 000000000000 */ |
5816 | 0x00, 0x00, /* 000000000000 */ | 5769 | 0x00, 0x00, /* 000000000000 */ |
5817 | 0x00, 0x00, /* 000000000000 */ | 5770 | 0x00, 0x00, /* 000000000000 */ |
5818 | 0x00, 0x00, /* 000000000000 */ | 5771 | 0x00, 0x00, /* 000000000000 */ |
5819 | 0x00, 0x00, /* 000000000000 */ | 5772 | 0x00, 0x00, /* 000000000000 */ |
5820 | 0x3f, 0xc0, /* 001111111100 */ | 5773 | 0x7f, 0xe0, /* 011111111110 */ |
5821 | 0x3f, 0xc0, /* 001111111100 */ | 5774 | 0x7f, 0xe0, /* 011111111110 */ |
5822 | 0x3f, 0xc0, /* 001111111100 */ | 5775 | 0x00, 0x00, /* 000000000000 */ |
5823 | 0x3f, 0xc0, /* 001111111100 */ | 5776 | 0x00, 0x00, /* 000000000000 */ |
5824 | 0x3f, 0xc0, /* 001111111100 */ | 5777 | 0x00, 0x00, /* 000000000000 */ |
5825 | 0x3f, 0xc0, /* 001111111100 */ | 5778 | 0x7f, 0xe0, /* 011111111110 */ |
5826 | 0x3f, 0xc0, /* 001111111100 */ | 5779 | 0x7f, 0xe0, /* 011111111110 */ |
5827 | 0x3f, 0xc0, /* 001111111100 */ | 5780 | 0x00, 0x00, /* 000000000000 */ |
5828 | 0x3f, 0xc0, /* 001111111100 */ | 5781 | 0x00, 0x00, /* 000000000000 */ |
5829 | 0x3f, 0xc0, /* 001111111100 */ | 5782 | 0x00, 0x00, /* 000000000000 */ |
5830 | 0x3f, 0xc0, /* 001111111100 */ | 5783 | 0x7f, 0xe0, /* 011111111110 */ |
5831 | 0x3f, 0xc0, /* 001111111100 */ | 5784 | 0x7f, 0xe0, /* 011111111110 */ |
5832 | 0x00, 0x00, /* 000000000000 */ | 5785 | 0x00, 0x00, /* 000000000000 */ |
5833 | 0x00, 0x00, /* 000000000000 */ | 5786 | 0x00, 0x00, /* 000000000000 */ |
5834 | 0x00, 0x00, /* 000000000000 */ | 5787 | 0x00, 0x00, /* 000000000000 */ |
@@ -5860,24 +5813,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5860 | 0x00, 0x00, /* 000000000000 */ | 5813 | 0x00, 0x00, /* 000000000000 */ |
5861 | 5814 | ||
5862 | /* 242 0xf2 '.' */ | 5815 | /* 242 0xf2 '.' */ |
5863 | /* FIXME */ | ||
5864 | 0x00, 0x00, /* 000000000000 */ | 5816 | 0x00, 0x00, /* 000000000000 */ |
5865 | 0x00, 0x00, /* 000000000000 */ | 5817 | 0x00, 0x00, /* 000000000000 */ |
5866 | 0x00, 0x00, /* 000000000000 */ | 5818 | 0x00, 0x00, /* 000000000000 */ |
5867 | 0x00, 0x00, /* 000000000000 */ | 5819 | 0x00, 0x00, /* 000000000000 */ |
5820 | 0x60, 0x00, /* 011000000000 */ | ||
5821 | 0x38, 0x00, /* 001110000000 */ | ||
5822 | 0x0e, 0x00, /* 000011100000 */ | ||
5823 | 0x03, 0x80, /* 000000111000 */ | ||
5824 | 0x00, 0xe0, /* 000000001110 */ | ||
5825 | 0x00, 0xe0, /* 000000001110 */ | ||
5826 | 0x03, 0x80, /* 000000111000 */ | ||
5827 | 0x0e, 0x00, /* 000011100000 */ | ||
5828 | 0x38, 0x00, /* 001110000000 */ | ||
5829 | 0x60, 0x00, /* 011000000000 */ | ||
5868 | 0x00, 0x00, /* 000000000000 */ | 5830 | 0x00, 0x00, /* 000000000000 */ |
5869 | 0x3f, 0xc0, /* 001111111100 */ | 5831 | 0x7f, 0xe0, /* 011111111110 */ |
5870 | 0x3f, 0xc0, /* 001111111100 */ | 5832 | 0x7f, 0xe0, /* 011111111110 */ |
5871 | 0x3f, 0xc0, /* 001111111100 */ | ||
5872 | 0x3f, 0xc0, /* 001111111100 */ | ||
5873 | 0x3f, 0xc0, /* 001111111100 */ | ||
5874 | 0x3f, 0xc0, /* 001111111100 */ | ||
5875 | 0x3f, 0xc0, /* 001111111100 */ | ||
5876 | 0x3f, 0xc0, /* 001111111100 */ | ||
5877 | 0x3f, 0xc0, /* 001111111100 */ | ||
5878 | 0x3f, 0xc0, /* 001111111100 */ | ||
5879 | 0x3f, 0xc0, /* 001111111100 */ | ||
5880 | 0x3f, 0xc0, /* 001111111100 */ | ||
5881 | 0x00, 0x00, /* 000000000000 */ | 5833 | 0x00, 0x00, /* 000000000000 */ |
5882 | 0x00, 0x00, /* 000000000000 */ | 5834 | 0x00, 0x00, /* 000000000000 */ |
5883 | 0x00, 0x00, /* 000000000000 */ | 5835 | 0x00, 0x00, /* 000000000000 */ |
@@ -5885,24 +5837,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5885 | 0x00, 0x00, /* 000000000000 */ | 5837 | 0x00, 0x00, /* 000000000000 */ |
5886 | 5838 | ||
5887 | /* 243 0xf3 '.' */ | 5839 | /* 243 0xf3 '.' */ |
5888 | /* FIXME */ | ||
5889 | 0x00, 0x00, /* 000000000000 */ | 5840 | 0x00, 0x00, /* 000000000000 */ |
5890 | 0x00, 0x00, /* 000000000000 */ | 5841 | 0x00, 0x00, /* 000000000000 */ |
5891 | 0x00, 0x00, /* 000000000000 */ | 5842 | 0x00, 0x00, /* 000000000000 */ |
5843 | 0x00, 0x60, /* 000000000110 */ | ||
5844 | 0x01, 0xc0, /* 000000011100 */ | ||
5845 | 0x07, 0x00, /* 000001110000 */ | ||
5846 | 0x1c, 0x00, /* 000111000000 */ | ||
5847 | 0x70, 0x00, /* 011100000000 */ | ||
5848 | 0x70, 0x00, /* 011100000000 */ | ||
5849 | 0x1c, 0x00, /* 000111000000 */ | ||
5850 | 0x07, 0x00, /* 000001110000 */ | ||
5851 | 0x01, 0xc0, /* 000000011100 */ | ||
5852 | 0x00, 0x60, /* 000000000110 */ | ||
5892 | 0x00, 0x00, /* 000000000000 */ | 5853 | 0x00, 0x00, /* 000000000000 */ |
5854 | 0x7f, 0xe0, /* 011111111110 */ | ||
5855 | 0x7f, 0xe0, /* 011111111110 */ | ||
5893 | 0x00, 0x00, /* 000000000000 */ | 5856 | 0x00, 0x00, /* 000000000000 */ |
5894 | 0x3f, 0xc0, /* 001111111100 */ | ||
5895 | 0x3f, 0xc0, /* 001111111100 */ | ||
5896 | 0x3f, 0xc0, /* 001111111100 */ | ||
5897 | 0x3f, 0xc0, /* 001111111100 */ | ||
5898 | 0x3f, 0xc0, /* 001111111100 */ | ||
5899 | 0x3f, 0xc0, /* 001111111100 */ | ||
5900 | 0x3f, 0xc0, /* 001111111100 */ | ||
5901 | 0x3f, 0xc0, /* 001111111100 */ | ||
5902 | 0x3f, 0xc0, /* 001111111100 */ | ||
5903 | 0x3f, 0xc0, /* 001111111100 */ | ||
5904 | 0x3f, 0xc0, /* 001111111100 */ | ||
5905 | 0x3f, 0xc0, /* 001111111100 */ | ||
5906 | 0x00, 0x00, /* 000000000000 */ | 5857 | 0x00, 0x00, /* 000000000000 */ |
5907 | 0x00, 0x00, /* 000000000000 */ | 5858 | 0x00, 0x00, /* 000000000000 */ |
5908 | 0x00, 0x00, /* 000000000000 */ | 5859 | 0x00, 0x00, /* 000000000000 */ |
@@ -5910,54 +5861,52 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5910 | 0x00, 0x00, /* 000000000000 */ | 5861 | 0x00, 0x00, /* 000000000000 */ |
5911 | 5862 | ||
5912 | /* 244 0xf4 '.' */ | 5863 | /* 244 0xf4 '.' */ |
5913 | /* FIXME */ | ||
5914 | 0x00, 0x00, /* 000000000000 */ | ||
5915 | 0x00, 0x00, /* 000000000000 */ | ||
5916 | 0x00, 0x00, /* 000000000000 */ | ||
5917 | 0x00, 0x00, /* 000000000000 */ | ||
5918 | 0x00, 0x00, /* 000000000000 */ | ||
5919 | 0x3f, 0xc0, /* 001111111100 */ | ||
5920 | 0x3f, 0xc0, /* 001111111100 */ | ||
5921 | 0x3f, 0xc0, /* 001111111100 */ | ||
5922 | 0x3f, 0xc0, /* 001111111100 */ | ||
5923 | 0x3f, 0xc0, /* 001111111100 */ | ||
5924 | 0x3f, 0xc0, /* 001111111100 */ | ||
5925 | 0x3f, 0xc0, /* 001111111100 */ | ||
5926 | 0x3f, 0xc0, /* 001111111100 */ | ||
5927 | 0x3f, 0xc0, /* 001111111100 */ | ||
5928 | 0x3f, 0xc0, /* 001111111100 */ | ||
5929 | 0x3f, 0xc0, /* 001111111100 */ | ||
5930 | 0x3f, 0xc0, /* 001111111100 */ | ||
5931 | 0x00, 0x00, /* 000000000000 */ | ||
5932 | 0x00, 0x00, /* 000000000000 */ | ||
5933 | 0x00, 0x00, /* 000000000000 */ | ||
5934 | 0x00, 0x00, /* 000000000000 */ | ||
5935 | 0x00, 0x00, /* 000000000000 */ | 5864 | 0x00, 0x00, /* 000000000000 */ |
5865 | 0x03, 0x80, /* 000000111000 */ | ||
5866 | 0x07, 0xc0, /* 000001111100 */ | ||
5867 | 0x0c, 0x60, /* 000011000110 */ | ||
5868 | 0x0c, 0x60, /* 000011000110 */ | ||
5869 | 0x0c, 0x00, /* 000011000000 */ | ||
5870 | 0x0c, 0x00, /* 000011000000 */ | ||
5871 | 0x0c, 0x00, /* 000011000000 */ | ||
5872 | 0x0c, 0x00, /* 000011000000 */ | ||
5873 | 0x0c, 0x00, /* 000011000000 */ | ||
5874 | 0x0c, 0x00, /* 000011000000 */ | ||
5875 | 0x0c, 0x00, /* 000011000000 */ | ||
5876 | 0x0c, 0x00, /* 000011000000 */ | ||
5877 | 0x0c, 0x00, /* 000011000000 */ | ||
5878 | 0x0c, 0x00, /* 000011000000 */ | ||
5879 | 0x0c, 0x00, /* 000011000000 */ | ||
5880 | 0x0c, 0x00, /* 000011000000 */ | ||
5881 | 0x0c, 0x00, /* 000011000000 */ | ||
5882 | 0x0c, 0x00, /* 000011000000 */ | ||
5883 | 0x0c, 0x00, /* 000011000000 */ | ||
5884 | 0x0c, 0x00, /* 000011000000 */ | ||
5885 | 0x0c, 0x00, /* 000011000000 */ | ||
5936 | 5886 | ||
5937 | /* 245 0xf5 '.' */ | 5887 | /* 245 0xf5 '.' */ |
5938 | /* FIXME */ | ||
5939 | 0x00, 0x00, /* 000000000000 */ | ||
5940 | 0x00, 0x00, /* 000000000000 */ | ||
5941 | 0x00, 0x00, /* 000000000000 */ | ||
5942 | 0x00, 0x00, /* 000000000000 */ | ||
5943 | 0x00, 0x00, /* 000000000000 */ | ||
5944 | 0x3f, 0xc0, /* 001111111100 */ | ||
5945 | 0x3f, 0xc0, /* 001111111100 */ | ||
5946 | 0x3f, 0xc0, /* 001111111100 */ | ||
5947 | 0x3f, 0xc0, /* 001111111100 */ | ||
5948 | 0x3f, 0xc0, /* 001111111100 */ | ||
5949 | 0x3f, 0xc0, /* 001111111100 */ | ||
5950 | 0x3f, 0xc0, /* 001111111100 */ | ||
5951 | 0x3f, 0xc0, /* 001111111100 */ | ||
5952 | 0x3f, 0xc0, /* 001111111100 */ | ||
5953 | 0x3f, 0xc0, /* 001111111100 */ | ||
5954 | 0x3f, 0xc0, /* 001111111100 */ | ||
5955 | 0x3f, 0xc0, /* 001111111100 */ | ||
5956 | 0x00, 0x00, /* 000000000000 */ | ||
5957 | 0x00, 0x00, /* 000000000000 */ | ||
5958 | 0x00, 0x00, /* 000000000000 */ | ||
5959 | 0x00, 0x00, /* 000000000000 */ | ||
5960 | 0x00, 0x00, /* 000000000000 */ | 5888 | 0x00, 0x00, /* 000000000000 */ |
5889 | 0x1c, 0x00, /* 000111000000 */ | ||
5890 | 0x3e, 0x00, /* 001111100000 */ | ||
5891 | 0x63, 0x00, /* 011000110000 */ | ||
5892 | 0x63, 0x00, /* 011000110000 */ | ||
5893 | 0x03, 0x00, /* 000000110000 */ | ||
5894 | 0x03, 0x00, /* 000000110000 */ | ||
5895 | 0x03, 0x00, /* 000000110000 */ | ||
5896 | 0x03, 0x00, /* 000000110000 */ | ||
5897 | 0x03, 0x00, /* 000000110000 */ | ||
5898 | 0x03, 0x00, /* 000000110000 */ | ||
5899 | 0x03, 0x00, /* 000000110000 */ | ||
5900 | 0x03, 0x00, /* 000000110000 */ | ||
5901 | 0x03, 0x00, /* 000000110000 */ | ||
5902 | 0x03, 0x00, /* 000000110000 */ | ||
5903 | 0x03, 0x00, /* 000000110000 */ | ||
5904 | 0x03, 0x00, /* 000000110000 */ | ||
5905 | 0x03, 0x00, /* 000000110000 */ | ||
5906 | 0x03, 0x00, /* 000000110000 */ | ||
5907 | 0x03, 0x00, /* 000000110000 */ | ||
5908 | 0x03, 0x00, /* 000000110000 */ | ||
5909 | 0x03, 0x00, /* 000000110000 */ | ||
5961 | 5910 | ||
5962 | /* 246 0xf6 '.' */ | 5911 | /* 246 0xf6 '.' */ |
5963 | 0x00, 0x00, /* 000000000000 */ | 5912 | 0x00, 0x00, /* 000000000000 */ |
@@ -5984,24 +5933,23 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
5984 | 0x00, 0x00, /* 000000000000 */ | 5933 | 0x00, 0x00, /* 000000000000 */ |
5985 | 5934 | ||
5986 | /* 247 0xf7 '.' */ | 5935 | /* 247 0xf7 '.' */ |
5987 | /* FIXME */ | ||
5988 | 0x00, 0x00, /* 000000000000 */ | 5936 | 0x00, 0x00, /* 000000000000 */ |
5989 | 0x00, 0x00, /* 000000000000 */ | 5937 | 0x00, 0x00, /* 000000000000 */ |
5990 | 0x00, 0x00, /* 000000000000 */ | 5938 | 0x00, 0x00, /* 000000000000 */ |
5991 | 0x00, 0x00, /* 000000000000 */ | 5939 | 0x00, 0x00, /* 000000000000 */ |
5992 | 0x00, 0x00, /* 000000000000 */ | 5940 | 0x00, 0x00, /* 000000000000 */ |
5993 | 0x3f, 0xc0, /* 001111111100 */ | 5941 | 0x00, 0x00, /* 000000000000 */ |
5994 | 0x3f, 0xc0, /* 001111111100 */ | 5942 | 0x00, 0x00, /* 000000000000 */ |
5995 | 0x3f, 0xc0, /* 001111111100 */ | 5943 | 0x38, 0x00, /* 001110000000 */ |
5996 | 0x3f, 0xc0, /* 001111111100 */ | 5944 | 0x6c, 0x00, /* 011011000000 */ |
5997 | 0x3f, 0xc0, /* 001111111100 */ | 5945 | 0x06, 0x30, /* 000001100011 */ |
5998 | 0x3f, 0xc0, /* 001111111100 */ | 5946 | 0x03, 0x60, /* 000000110110 */ |
5999 | 0x3f, 0xc0, /* 001111111100 */ | 5947 | 0x39, 0xc0, /* 001110011100 */ |
6000 | 0x3f, 0xc0, /* 001111111100 */ | 5948 | 0x6c, 0x00, /* 011011000000 */ |
6001 | 0x3f, 0xc0, /* 001111111100 */ | 5949 | 0x06, 0x30, /* 000001100011 */ |
6002 | 0x3f, 0xc0, /* 001111111100 */ | 5950 | 0x03, 0x60, /* 000000110110 */ |
6003 | 0x3f, 0xc0, /* 001111111100 */ | 5951 | 0x01, 0xc0, /* 000000011100 */ |
6004 | 0x3f, 0xc0, /* 001111111100 */ | 5952 | 0x00, 0x00, /* 000000000000 */ |
6005 | 0x00, 0x00, /* 000000000000 */ | 5953 | 0x00, 0x00, /* 000000000000 */ |
6006 | 0x00, 0x00, /* 000000000000 */ | 5954 | 0x00, 0x00, /* 000000000000 */ |
6007 | 0x00, 0x00, /* 000000000000 */ | 5955 | 0x00, 0x00, /* 000000000000 */ |
@@ -6033,44 +5981,31 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
6033 | 0x00, 0x00, /* 000000000000 */ | 5981 | 0x00, 0x00, /* 000000000000 */ |
6034 | 5982 | ||
6035 | /* 249 0xf9 '.' */ | 5983 | /* 249 0xf9 '.' */ |
6036 | /* FIXME */ | ||
6037 | 0x00, 0x00, /* 000000000000 */ | 5984 | 0x00, 0x00, /* 000000000000 */ |
6038 | 0x00, 0x00, /* 000000000000 */ | 5985 | 0x00, 0x00, /* 000000000000 */ |
6039 | 0x00, 0x00, /* 000000000000 */ | 5986 | 0x00, 0x00, /* 000000000000 */ |
6040 | 0x00, 0x00, /* 000000000000 */ | 5987 | 0x00, 0x00, /* 000000000000 */ |
6041 | 0x00, 0x00, /* 000000000000 */ | 5988 | 0x00, 0x00, /* 000000000000 */ |
6042 | 0x3f, 0xc0, /* 001111111100 */ | ||
6043 | 0x3f, 0xc0, /* 001111111100 */ | ||
6044 | 0x3f, 0xc0, /* 001111111100 */ | ||
6045 | 0x3f, 0xc0, /* 001111111100 */ | ||
6046 | 0x3f, 0xc0, /* 001111111100 */ | ||
6047 | 0x3f, 0xc0, /* 001111111100 */ | ||
6048 | 0x3f, 0xc0, /* 001111111100 */ | ||
6049 | 0x3f, 0xc0, /* 001111111100 */ | ||
6050 | 0x3f, 0xc0, /* 001111111100 */ | ||
6051 | 0x3f, 0xc0, /* 001111111100 */ | ||
6052 | 0x3f, 0xc0, /* 001111111100 */ | ||
6053 | 0x3f, 0xc0, /* 001111111100 */ | ||
6054 | 0x00, 0x00, /* 000000000000 */ | 5989 | 0x00, 0x00, /* 000000000000 */ |
6055 | 0x00, 0x00, /* 000000000000 */ | 5990 | 0x00, 0x00, /* 000000000000 */ |
6056 | 0x00, 0x00, /* 000000000000 */ | 5991 | 0x00, 0x00, /* 000000000000 */ |
6057 | 0x00, 0x00, /* 000000000000 */ | 5992 | 0x00, 0x00, /* 000000000000 */ |
6058 | 0x00, 0x00, /* 000000000000 */ | 5993 | 0x00, 0x00, /* 000000000000 */ |
6059 | |||
6060 | /* 250 0xfa '.' */ | ||
6061 | 0x00, 0x00, /* 000000000000 */ | ||
6062 | 0x00, 0x00, /* 000000000000 */ | 5994 | 0x00, 0x00, /* 000000000000 */ |
5995 | 0x1c, 0x00, /* 000111000000 */ | ||
5996 | 0x3e, 0x00, /* 001111100000 */ | ||
5997 | 0x3e, 0x00, /* 001111100000 */ | ||
5998 | 0x3e, 0x00, /* 001111100000 */ | ||
5999 | 0x1c, 0x00, /* 000111000000 */ | ||
6063 | 0x00, 0x00, /* 000000000000 */ | 6000 | 0x00, 0x00, /* 000000000000 */ |
6064 | 0x00, 0x00, /* 000000000000 */ | 6001 | 0x00, 0x00, /* 000000000000 */ |
6065 | 0x00, 0x00, /* 000000000000 */ | 6002 | 0x00, 0x00, /* 000000000000 */ |
6066 | 0x00, 0x00, /* 000000000000 */ | 6003 | 0x00, 0x00, /* 000000000000 */ |
6067 | 0x00, 0x00, /* 000000000000 */ | 6004 | 0x00, 0x00, /* 000000000000 */ |
6068 | 0x00, 0x00, /* 000000000000 */ | 6005 | 0x00, 0x00, /* 000000000000 */ |
6006 | |||
6007 | /* 250 0xfa '.' */ | ||
6069 | 0x00, 0x00, /* 000000000000 */ | 6008 | 0x00, 0x00, /* 000000000000 */ |
6070 | 0x06, 0x00, /* 000001100000 */ | ||
6071 | 0x0f, 0x00, /* 000011110000 */ | ||
6072 | 0x0f, 0x00, /* 000011110000 */ | ||
6073 | 0x06, 0x00, /* 000001100000 */ | ||
6074 | 0x00, 0x00, /* 000000000000 */ | 6009 | 0x00, 0x00, /* 000000000000 */ |
6075 | 0x00, 0x00, /* 000000000000 */ | 6010 | 0x00, 0x00, /* 000000000000 */ |
6076 | 0x00, 0x00, /* 000000000000 */ | 6011 | 0x00, 0x00, /* 000000000000 */ |
@@ -6080,51 +6015,61 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
6080 | 0x00, 0x00, /* 000000000000 */ | 6015 | 0x00, 0x00, /* 000000000000 */ |
6081 | 0x00, 0x00, /* 000000000000 */ | 6016 | 0x00, 0x00, /* 000000000000 */ |
6082 | 0x00, 0x00, /* 000000000000 */ | 6017 | 0x00, 0x00, /* 000000000000 */ |
6083 | |||
6084 | /* 251 0xfb '.' */ | ||
6085 | /* FIXME */ | ||
6086 | 0x00, 0x00, /* 000000000000 */ | 6018 | 0x00, 0x00, /* 000000000000 */ |
6087 | 0x00, 0x00, /* 000000000000 */ | 6019 | 0x00, 0x00, /* 000000000000 */ |
6020 | 0x18, 0x00, /* 000110000000 */ | ||
6021 | 0x3c, 0x00, /* 001111000000 */ | ||
6022 | 0x3c, 0x00, /* 001111000000 */ | ||
6023 | 0x18, 0x00, /* 000110000000 */ | ||
6088 | 0x00, 0x00, /* 000000000000 */ | 6024 | 0x00, 0x00, /* 000000000000 */ |
6089 | 0x00, 0x00, /* 000000000000 */ | 6025 | 0x00, 0x00, /* 000000000000 */ |
6090 | 0x00, 0x00, /* 000000000000 */ | 6026 | 0x00, 0x00, /* 000000000000 */ |
6091 | 0x3f, 0xc0, /* 001111111100 */ | ||
6092 | 0x3f, 0xc0, /* 001111111100 */ | ||
6093 | 0x3f, 0xc0, /* 001111111100 */ | ||
6094 | 0x3f, 0xc0, /* 001111111100 */ | ||
6095 | 0x3f, 0xc0, /* 001111111100 */ | ||
6096 | 0x3f, 0xc0, /* 001111111100 */ | ||
6097 | 0x3f, 0xc0, /* 001111111100 */ | ||
6098 | 0x3f, 0xc0, /* 001111111100 */ | ||
6099 | 0x3f, 0xc0, /* 001111111100 */ | ||
6100 | 0x3f, 0xc0, /* 001111111100 */ | ||
6101 | 0x3f, 0xc0, /* 001111111100 */ | ||
6102 | 0x3f, 0xc0, /* 001111111100 */ | ||
6103 | 0x00, 0x00, /* 000000000000 */ | 6027 | 0x00, 0x00, /* 000000000000 */ |
6104 | 0x00, 0x00, /* 000000000000 */ | 6028 | 0x00, 0x00, /* 000000000000 */ |
6105 | 0x00, 0x00, /* 000000000000 */ | 6029 | 0x00, 0x00, /* 000000000000 */ |
6030 | |||
6031 | /* 251 0xfb '.' */ | ||
6106 | 0x00, 0x00, /* 000000000000 */ | 6032 | 0x00, 0x00, /* 000000000000 */ |
6033 | 0x07, 0xe0, /* 000001111110 */ | ||
6034 | 0x06, 0x00, /* 000001100000 */ | ||
6035 | 0x06, 0x00, /* 000001100000 */ | ||
6036 | 0x06, 0x00, /* 000001100000 */ | ||
6037 | 0x06, 0x00, /* 000001100000 */ | ||
6038 | 0x06, 0x00, /* 000001100000 */ | ||
6039 | 0x06, 0x00, /* 000001100000 */ | ||
6040 | 0x06, 0x00, /* 000001100000 */ | ||
6041 | 0x06, 0x00, /* 000001100000 */ | ||
6042 | 0x06, 0x00, /* 000001100000 */ | ||
6043 | 0x06, 0x00, /* 000001100000 */ | ||
6044 | 0x06, 0x00, /* 000001100000 */ | ||
6045 | 0x06, 0x00, /* 000001100000 */ | ||
6046 | 0xc6, 0x00, /* 110001100000 */ | ||
6047 | 0x66, 0x00, /* 011001100000 */ | ||
6048 | 0x36, 0x00, /* 001101100000 */ | ||
6049 | 0x1e, 0x00, /* 000111100000 */ | ||
6050 | 0x0e, 0x00, /* 000011100000 */ | ||
6051 | 0x06, 0x00, /* 000001100000 */ | ||
6052 | 0x02, 0x00, /* 000000100000 */ | ||
6107 | 0x00, 0x00, /* 000000000000 */ | 6053 | 0x00, 0x00, /* 000000000000 */ |
6108 | 6054 | ||
6109 | /* 252 0xfc '.' */ | 6055 | /* 252 0xfc '.' */ |
6110 | /* FIXME */ | 6056 | 0x00, 0x00, /* 000000000000 */ |
6057 | 0x00, 0x00, /* 000000000000 */ | ||
6058 | 0x13, 0x80, /* 000100111000 */ | ||
6059 | 0x3d, 0xc0, /* 001111011100 */ | ||
6060 | 0x18, 0xc0, /* 000110001100 */ | ||
6061 | 0x18, 0xc0, /* 000110001100 */ | ||
6062 | 0x18, 0xc0, /* 000110001100 */ | ||
6063 | 0x18, 0xc0, /* 000110001100 */ | ||
6064 | 0x3d, 0xe0, /* 001111011110 */ | ||
6065 | 0x00, 0x00, /* 000000000000 */ | ||
6066 | 0x00, 0x00, /* 000000000000 */ | ||
6067 | 0x00, 0x00, /* 000000000000 */ | ||
6111 | 0x00, 0x00, /* 000000000000 */ | 6068 | 0x00, 0x00, /* 000000000000 */ |
6112 | 0x00, 0x00, /* 000000000000 */ | 6069 | 0x00, 0x00, /* 000000000000 */ |
6113 | 0x00, 0x00, /* 000000000000 */ | 6070 | 0x00, 0x00, /* 000000000000 */ |
6114 | 0x00, 0x00, /* 000000000000 */ | 6071 | 0x00, 0x00, /* 000000000000 */ |
6115 | 0x00, 0x00, /* 000000000000 */ | 6072 | 0x00, 0x00, /* 000000000000 */ |
6116 | 0x3f, 0xc0, /* 001111111100 */ | ||
6117 | 0x3f, 0xc0, /* 001111111100 */ | ||
6118 | 0x3f, 0xc0, /* 001111111100 */ | ||
6119 | 0x3f, 0xc0, /* 001111111100 */ | ||
6120 | 0x3f, 0xc0, /* 001111111100 */ | ||
6121 | 0x3f, 0xc0, /* 001111111100 */ | ||
6122 | 0x3f, 0xc0, /* 001111111100 */ | ||
6123 | 0x3f, 0xc0, /* 001111111100 */ | ||
6124 | 0x3f, 0xc0, /* 001111111100 */ | ||
6125 | 0x3f, 0xc0, /* 001111111100 */ | ||
6126 | 0x3f, 0xc0, /* 001111111100 */ | ||
6127 | 0x3f, 0xc0, /* 001111111100 */ | ||
6128 | 0x00, 0x00, /* 000000000000 */ | 6073 | 0x00, 0x00, /* 000000000000 */ |
6129 | 0x00, 0x00, /* 000000000000 */ | 6074 | 0x00, 0x00, /* 000000000000 */ |
6130 | 0x00, 0x00, /* 000000000000 */ | 6075 | 0x00, 0x00, /* 000000000000 */ |
diff --git a/drivers/video/console/fonts.c b/drivers/video/console/fonts.c index 465d678230ae..e79b29702649 100644 --- a/drivers/video/console/fonts.c +++ b/drivers/video/console/fonts.c | |||
@@ -36,6 +36,10 @@ static struct font_desc *fonts[] = { | |||
36 | #undef NO_FONTS | 36 | #undef NO_FONTS |
37 | &font_vga_6x11, | 37 | &font_vga_6x11, |
38 | #endif | 38 | #endif |
39 | #ifdef CONFIG_FONT_7x14 | ||
40 | #undef NO_FONTS | ||
41 | &font_7x14, | ||
42 | #endif | ||
39 | #ifdef CONFIG_FONT_SUN8x16 | 43 | #ifdef CONFIG_FONT_SUN8x16 |
40 | #undef NO_FONTS | 44 | #undef NO_FONTS |
41 | &font_sun_8x16, | 45 | &font_sun_8x16, |
@@ -44,6 +48,10 @@ static struct font_desc *fonts[] = { | |||
44 | #undef NO_FONTS | 48 | #undef NO_FONTS |
45 | &font_sun_12x22, | 49 | &font_sun_12x22, |
46 | #endif | 50 | #endif |
51 | #ifdef CONFIG_FONT_10x18 | ||
52 | #undef NO_FONTS | ||
53 | &font_10x18, | ||
54 | #endif | ||
47 | #ifdef CONFIG_FONT_ACORN_8x8 | 55 | #ifdef CONFIG_FONT_ACORN_8x8 |
48 | #undef NO_FONTS | 56 | #undef NO_FONTS |
49 | &font_acorn_8x8, | 57 | &font_acorn_8x8, |
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index bcf59b28a14f..d27fa91e5886 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c | |||
@@ -95,6 +95,7 @@ static unsigned long vgacon_uni_pagedir[2]; | |||
95 | /* Description of the hardware situation */ | 95 | /* Description of the hardware situation */ |
96 | static unsigned long vga_vram_base; /* Base of video memory */ | 96 | static unsigned long vga_vram_base; /* Base of video memory */ |
97 | static unsigned long vga_vram_end; /* End of video memory */ | 97 | static unsigned long vga_vram_end; /* End of video memory */ |
98 | static int vga_vram_size; /* Size of video memory */ | ||
98 | static u16 vga_video_port_reg; /* Video register select port */ | 99 | static u16 vga_video_port_reg; /* Video register select port */ |
99 | static u16 vga_video_port_val; /* Video register value port */ | 100 | static u16 vga_video_port_val; /* Video register value port */ |
100 | static unsigned int vga_video_num_columns; /* Number of text columns */ | 101 | static unsigned int vga_video_num_columns; /* Number of text columns */ |
@@ -288,6 +289,7 @@ static const char __init *vgacon_startup(void) | |||
288 | 289 | ||
289 | vga_vram_base = VGA_MAP_MEM(vga_vram_base); | 290 | vga_vram_base = VGA_MAP_MEM(vga_vram_base); |
290 | vga_vram_end = VGA_MAP_MEM(vga_vram_end); | 291 | vga_vram_end = VGA_MAP_MEM(vga_vram_end); |
292 | vga_vram_size = vga_vram_end - vga_vram_base; | ||
291 | 293 | ||
292 | /* | 294 | /* |
293 | * Find out if there is a graphics card present. | 295 | * Find out if there is a graphics card present. |
@@ -504,9 +506,13 @@ static int vgacon_switch(struct vc_data *c) | |||
504 | */ | 506 | */ |
505 | vga_video_num_columns = c->vc_cols; | 507 | vga_video_num_columns = c->vc_cols; |
506 | vga_video_num_lines = c->vc_rows; | 508 | vga_video_num_lines = c->vc_rows; |
509 | |||
510 | /* We can only copy out the size of the video buffer here, | ||
511 | * otherwise we get into VGA BIOS */ | ||
512 | |||
507 | if (!vga_is_gfx) | 513 | if (!vga_is_gfx) |
508 | scr_memcpyw((u16 *) c->vc_origin, (u16 *) c->vc_screenbuf, | 514 | scr_memcpyw((u16 *) c->vc_origin, (u16 *) c->vc_screenbuf, |
509 | c->vc_screenbuf_size); | 515 | c->vc_screenbuf_size > vga_vram_size ? vga_vram_size : c->vc_screenbuf_size); |
510 | return 0; /* Redrawing not needed */ | 516 | return 0; /* Redrawing not needed */ |
511 | } | 517 | } |
512 | 518 | ||
@@ -961,7 +967,6 @@ static int vgacon_scrolldelta(struct vc_data *c, int lines) | |||
961 | if (!lines) /* Turn scrollback off */ | 967 | if (!lines) /* Turn scrollback off */ |
962 | c->vc_visible_origin = c->vc_origin; | 968 | c->vc_visible_origin = c->vc_origin; |
963 | else { | 969 | else { |
964 | int vram_size = vga_vram_end - vga_vram_base; | ||
965 | int margin = c->vc_size_row * 4; | 970 | int margin = c->vc_size_row * 4; |
966 | int ul, we, p, st; | 971 | int ul, we, p, st; |
967 | 972 | ||
@@ -971,7 +976,7 @@ static int vgacon_scrolldelta(struct vc_data *c, int lines) | |||
971 | we = vga_rolled_over + c->vc_size_row; | 976 | we = vga_rolled_over + c->vc_size_row; |
972 | } else { | 977 | } else { |
973 | ul = 0; | 978 | ul = 0; |
974 | we = vram_size; | 979 | we = vga_vram_size; |
975 | } | 980 | } |
976 | p = (c->vc_visible_origin - vga_vram_base - ul + we) % we + | 981 | p = (c->vc_visible_origin - vga_vram_base - ul + we) % we + |
977 | lines * c->vc_size_row; | 982 | lines * c->vc_size_row; |
@@ -1012,9 +1017,13 @@ static void vgacon_save_screen(struct vc_data *c) | |||
1012 | c->vc_x = ORIG_X; | 1017 | c->vc_x = ORIG_X; |
1013 | c->vc_y = ORIG_Y; | 1018 | c->vc_y = ORIG_Y; |
1014 | } | 1019 | } |
1020 | |||
1021 | /* We can't copy in more then the size of the video buffer, | ||
1022 | * or we'll be copying in VGA BIOS */ | ||
1023 | |||
1015 | if (!vga_is_gfx) | 1024 | if (!vga_is_gfx) |
1016 | scr_memcpyw((u16 *) c->vc_screenbuf, (u16 *) c->vc_origin, | 1025 | scr_memcpyw((u16 *) c->vc_screenbuf, (u16 *) c->vc_origin, |
1017 | c->vc_screenbuf_size); | 1026 | c->vc_screenbuf_size > vga_vram_size ? vga_vram_size : c->vc_screenbuf_size); |
1018 | } | 1027 | } |
1019 | 1028 | ||
1020 | static int vgacon_scroll(struct vc_data *c, int t, int b, int dir, | 1029 | static int vgacon_scroll(struct vc_data *c, int t, int b, int dir, |
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 8cef020d1801..2222de6ad844 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c | |||
@@ -76,70 +76,22 @@ int fb_get_color_depth(struct fb_var_screeninfo *var) | |||
76 | EXPORT_SYMBOL(fb_get_color_depth); | 76 | EXPORT_SYMBOL(fb_get_color_depth); |
77 | 77 | ||
78 | /* | 78 | /* |
79 | * Drawing helpers. | 79 | * Data padding functions. |
80 | */ | 80 | */ |
81 | void fb_iomove_buf_aligned(struct fb_info *info, struct fb_pixmap *buf, | 81 | void fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, u32 height) |
82 | u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, | ||
83 | u32 height) | ||
84 | { | 82 | { |
85 | int i; | 83 | int i; |
86 | 84 | ||
87 | for (i = height; i--; ) { | 85 | for (i = height; i--; ) { |
88 | buf->outbuf(info, dst, src, s_pitch); | 86 | memcpy(dst, src, s_pitch); |
89 | src += s_pitch; | 87 | src += s_pitch; |
90 | dst += d_pitch; | 88 | dst += d_pitch; |
91 | } | 89 | } |
92 | } | 90 | } |
91 | EXPORT_SYMBOL(fb_pad_aligned_buffer); | ||
93 | 92 | ||
94 | void fb_sysmove_buf_aligned(struct fb_info *info, struct fb_pixmap *buf, | 93 | void fb_pad_unaligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 idx, u32 height, |
95 | u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, | 94 | u32 shift_high, u32 shift_low, u32 mod) |
96 | u32 height) | ||
97 | { | ||
98 | int i, j; | ||
99 | |||
100 | for (i = height; i--; ) { | ||
101 | for (j = 0; j < s_pitch; j++) | ||
102 | dst[j] = src[j]; | ||
103 | src += s_pitch; | ||
104 | dst += d_pitch; | ||
105 | } | ||
106 | } | ||
107 | |||
108 | void fb_iomove_buf_unaligned(struct fb_info *info, struct fb_pixmap *buf, | ||
109 | u8 *dst, u32 d_pitch, u8 *src, u32 idx, | ||
110 | u32 height, u32 shift_high, u32 shift_low, | ||
111 | u32 mod) | ||
112 | { | ||
113 | u8 mask = (u8) (0xfff << shift_high), tmp; | ||
114 | int i, j; | ||
115 | |||
116 | for (i = height; i--; ) { | ||
117 | for (j = 0; j < idx; j++) { | ||
118 | tmp = buf->inbuf(info, dst+j); | ||
119 | tmp &= mask; | ||
120 | tmp |= *src >> shift_low; | ||
121 | buf->outbuf(info, dst+j, &tmp, 1); | ||
122 | tmp = *src << shift_high; | ||
123 | buf->outbuf(info, dst+j+1, &tmp, 1); | ||
124 | src++; | ||
125 | } | ||
126 | tmp = buf->inbuf(info, dst+idx); | ||
127 | tmp &= mask; | ||
128 | tmp |= *src >> shift_low; | ||
129 | buf->outbuf(info, dst+idx, &tmp, 1); | ||
130 | if (shift_high < mod) { | ||
131 | tmp = *src << shift_high; | ||
132 | buf->outbuf(info, dst+idx+1, &tmp, 1); | ||
133 | } | ||
134 | src++; | ||
135 | dst += d_pitch; | ||
136 | } | ||
137 | } | ||
138 | |||
139 | void fb_sysmove_buf_unaligned(struct fb_info *info, struct fb_pixmap *buf, | ||
140 | u8 *dst, u32 d_pitch, u8 *src, u32 idx, | ||
141 | u32 height, u32 shift_high, u32 shift_low, | ||
142 | u32 mod) | ||
143 | { | 95 | { |
144 | u8 mask = (u8) (0xfff << shift_high), tmp; | 96 | u8 mask = (u8) (0xfff << shift_high), tmp; |
145 | int i, j; | 97 | int i, j; |
@@ -166,6 +118,7 @@ void fb_sysmove_buf_unaligned(struct fb_info *info, struct fb_pixmap *buf, | |||
166 | dst += d_pitch; | 118 | dst += d_pitch; |
167 | } | 119 | } |
168 | } | 120 | } |
121 | EXPORT_SYMBOL(fb_pad_unaligned_buffer); | ||
169 | 122 | ||
170 | /* | 123 | /* |
171 | * we need to lock this section since fb_cursor | 124 | * we need to lock this section since fb_cursor |
@@ -1081,7 +1034,7 @@ register_framebuffer(struct fb_info *fb_info) | |||
1081 | fb_info->pixmap.size = FBPIXMAPSIZE; | 1034 | fb_info->pixmap.size = FBPIXMAPSIZE; |
1082 | fb_info->pixmap.buf_align = 1; | 1035 | fb_info->pixmap.buf_align = 1; |
1083 | fb_info->pixmap.scan_align = 1; | 1036 | fb_info->pixmap.scan_align = 1; |
1084 | fb_info->pixmap.access_align = 4; | 1037 | fb_info->pixmap.access_align = 32; |
1085 | fb_info->pixmap.flags = FB_PIXMAP_DEFAULT; | 1038 | fb_info->pixmap.flags = FB_PIXMAP_DEFAULT; |
1086 | } | 1039 | } |
1087 | } | 1040 | } |
@@ -1357,10 +1310,6 @@ EXPORT_SYMBOL(fb_set_var); | |||
1357 | EXPORT_SYMBOL(fb_blank); | 1310 | EXPORT_SYMBOL(fb_blank); |
1358 | EXPORT_SYMBOL(fb_pan_display); | 1311 | EXPORT_SYMBOL(fb_pan_display); |
1359 | EXPORT_SYMBOL(fb_get_buffer_offset); | 1312 | EXPORT_SYMBOL(fb_get_buffer_offset); |
1360 | EXPORT_SYMBOL(fb_iomove_buf_unaligned); | ||
1361 | EXPORT_SYMBOL(fb_iomove_buf_aligned); | ||
1362 | EXPORT_SYMBOL(fb_sysmove_buf_unaligned); | ||
1363 | EXPORT_SYMBOL(fb_sysmove_buf_aligned); | ||
1364 | EXPORT_SYMBOL(fb_set_suspend); | 1313 | EXPORT_SYMBOL(fb_set_suspend); |
1365 | EXPORT_SYMBOL(fb_register_client); | 1314 | EXPORT_SYMBOL(fb_register_client); |
1366 | EXPORT_SYMBOL(fb_unregister_client); | 1315 | EXPORT_SYMBOL(fb_unregister_client); |
diff --git a/drivers/video/i810/i810_main.c b/drivers/video/i810/i810_main.c index a9a618f2aa6a..7513fb9b19cf 100644 --- a/drivers/video/i810/i810_main.c +++ b/drivers/video/i810/i810_main.c | |||
@@ -1885,6 +1885,7 @@ static int __devinit i810fb_init_pci (struct pci_dev *dev, | |||
1885 | memset(info->pixmap.addr, 0, 8*1024); | 1885 | memset(info->pixmap.addr, 0, 8*1024); |
1886 | info->pixmap.size = 8*1024; | 1886 | info->pixmap.size = 8*1024; |
1887 | info->pixmap.buf_align = 8; | 1887 | info->pixmap.buf_align = 8; |
1888 | info->pixmap.access_align = 32; | ||
1888 | info->pixmap.flags = FB_PIXMAP_SYSTEM; | 1889 | info->pixmap.flags = FB_PIXMAP_SYSTEM; |
1889 | 1890 | ||
1890 | if ((err = i810_allocate_pci_resource(par, entry))) { | 1891 | if ((err = i810_allocate_pci_resource(par, entry))) { |
diff --git a/drivers/video/intelfb/intelfbdrv.c b/drivers/video/intelfb/intelfbdrv.c index 25f9a9a65c24..298bc9cd99e7 100644 --- a/drivers/video/intelfb/intelfbdrv.c +++ b/drivers/video/intelfb/intelfbdrv.c | |||
@@ -214,7 +214,7 @@ static struct fb_ops intel_fb_ops = { | |||
214 | 214 | ||
215 | /* PCI driver module table */ | 215 | /* PCI driver module table */ |
216 | static struct pci_driver intelfb_driver = { | 216 | static struct pci_driver intelfb_driver = { |
217 | .name = "Intel(R) " SUPPORTED_CHIPSETS " Framebuffer Driver", | 217 | .name = "intelfb", |
218 | .id_table = intelfb_pci_table, | 218 | .id_table = intelfb_pci_table, |
219 | .probe = intelfb_pci_register, | 219 | .probe = intelfb_pci_register, |
220 | .remove = __devexit_p(intelfb_pci_unregister) | 220 | .remove = __devexit_p(intelfb_pci_unregister) |
@@ -238,12 +238,15 @@ static int noregister = 0; | |||
238 | static int probeonly = 0; | 238 | static int probeonly = 0; |
239 | static int idonly = 0; | 239 | static int idonly = 0; |
240 | static int bailearly = 0; | 240 | static int bailearly = 0; |
241 | static int voffset = 48; | ||
241 | static char *mode = NULL; | 242 | static char *mode = NULL; |
242 | 243 | ||
243 | module_param(accel, bool, S_IRUGO); | 244 | module_param(accel, bool, S_IRUGO); |
244 | MODULE_PARM_DESC(accel, "Enable console acceleration"); | 245 | MODULE_PARM_DESC(accel, "Enable console acceleration"); |
245 | module_param(vram, int, S_IRUGO); | 246 | module_param(vram, int, S_IRUGO); |
246 | MODULE_PARM_DESC(vram, "System RAM to allocate to framebuffer in MiB"); | 247 | MODULE_PARM_DESC(vram, "System RAM to allocate to framebuffer in MiB"); |
248 | module_param(voffset, int, S_IRUGO); | ||
249 | MODULE_PARM_DESC(voffset, "Offset of framebuffer in MiB"); | ||
247 | module_param(hwcursor, bool, S_IRUGO); | 250 | module_param(hwcursor, bool, S_IRUGO); |
248 | MODULE_PARM_DESC(hwcursor, "Enable HW cursor"); | 251 | MODULE_PARM_DESC(hwcursor, "Enable HW cursor"); |
249 | module_param(mtrr, bool, S_IRUGO); | 252 | module_param(mtrr, bool, S_IRUGO); |
@@ -503,6 +506,7 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
503 | struct agp_bridge_data *bridge; | 506 | struct agp_bridge_data *bridge; |
504 | int aperture_bar = 0; | 507 | int aperture_bar = 0; |
505 | int mmio_bar = 1; | 508 | int mmio_bar = 1; |
509 | int offset; | ||
506 | 510 | ||
507 | DBG_MSG("intelfb_pci_register\n"); | 511 | DBG_MSG("intelfb_pci_register\n"); |
508 | 512 | ||
@@ -659,17 +663,21 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
659 | return -ENODEV; | 663 | return -ENODEV; |
660 | } | 664 | } |
661 | 665 | ||
666 | if (MB(voffset) < stolen_size) | ||
667 | offset = (stolen_size >> 12); | ||
668 | else | ||
669 | offset = ROUND_UP_TO_PAGE(MB(voffset))/GTT_PAGE_SIZE; | ||
670 | |||
662 | /* set the mem offsets - set them after the already used pages */ | 671 | /* set the mem offsets - set them after the already used pages */ |
663 | if (dinfo->accel) { | 672 | if (dinfo->accel) { |
664 | dinfo->ring.offset = (stolen_size >> 12) | 673 | dinfo->ring.offset = offset + gtt_info.current_memory; |
665 | + gtt_info.current_memory; | ||
666 | } | 674 | } |
667 | if (dinfo->hwcursor) { | 675 | if (dinfo->hwcursor) { |
668 | dinfo->cursor.offset = (stolen_size >> 12) + | 676 | dinfo->cursor.offset = offset + |
669 | + gtt_info.current_memory + (dinfo->ring.size >> 12); | 677 | + gtt_info.current_memory + (dinfo->ring.size >> 12); |
670 | } | 678 | } |
671 | if (dinfo->fbmem_gart) { | 679 | if (dinfo->fbmem_gart) { |
672 | dinfo->fb.offset = (stolen_size >> 12) + | 680 | dinfo->fb.offset = offset + |
673 | + gtt_info.current_memory + (dinfo->ring.size >> 12) | 681 | + gtt_info.current_memory + (dinfo->ring.size >> 12) |
674 | + (dinfo->cursor.size >> 12); | 682 | + (dinfo->cursor.size >> 12); |
675 | } | 683 | } |
@@ -1083,6 +1091,7 @@ intelfb_set_fbinfo(struct intelfb_info *dinfo) | |||
1083 | 1091 | ||
1084 | info->pixmap.size = 64*1024; | 1092 | info->pixmap.size = 64*1024; |
1085 | info->pixmap.buf_align = 8; | 1093 | info->pixmap.buf_align = 8; |
1094 | info->pixmap.access_align = 32; | ||
1086 | info->pixmap.flags = FB_PIXMAP_SYSTEM; | 1095 | info->pixmap.flags = FB_PIXMAP_SYSTEM; |
1087 | 1096 | ||
1088 | if (intelfb_init_var(dinfo)) | 1097 | if (intelfb_init_var(dinfo)) |
@@ -1293,7 +1302,7 @@ intelfb_set_par(struct fb_info *info) | |||
1293 | 1302 | ||
1294 | intelfb_blank(FB_BLANK_POWERDOWN, info); | 1303 | intelfb_blank(FB_BLANK_POWERDOWN, info); |
1295 | 1304 | ||
1296 | if (dinfo->accel) | 1305 | if (ACCEL(dinfo, info)) |
1297 | intelfbhw_2d_stop(dinfo); | 1306 | intelfbhw_2d_stop(dinfo); |
1298 | 1307 | ||
1299 | memcpy(hw, &dinfo->save_state, sizeof(*hw)); | 1308 | memcpy(hw, &dinfo->save_state, sizeof(*hw)); |
@@ -1309,7 +1318,7 @@ intelfb_set_par(struct fb_info *info) | |||
1309 | 1318 | ||
1310 | update_dinfo(dinfo, &info->var); | 1319 | update_dinfo(dinfo, &info->var); |
1311 | 1320 | ||
1312 | if (dinfo->accel) | 1321 | if (ACCEL(dinfo, info)) |
1313 | intelfbhw_2d_start(dinfo); | 1322 | intelfbhw_2d_start(dinfo); |
1314 | 1323 | ||
1315 | intelfb_pan_display(&info->var, info); | 1324 | intelfb_pan_display(&info->var, info); |
diff --git a/drivers/video/nvidia/nvidia.c b/drivers/video/nvidia/nvidia.c index 47733f58153b..b2e6b2407869 100644 --- a/drivers/video/nvidia/nvidia.c +++ b/drivers/video/nvidia/nvidia.c | |||
@@ -516,9 +516,9 @@ static struct backlight_controller nvidia_backlight_controller = { | |||
516 | static void nvidiafb_load_cursor_image(struct nvidia_par *par, u8 * data8, | 516 | static void nvidiafb_load_cursor_image(struct nvidia_par *par, u8 * data8, |
517 | u16 bg, u16 fg, u32 w, u32 h) | 517 | u16 bg, u16 fg, u32 w, u32 h) |
518 | { | 518 | { |
519 | u32 *data = (u32 *) data8; | ||
519 | int i, j, k = 0; | 520 | int i, j, k = 0; |
520 | u32 b, tmp; | 521 | u32 b, tmp; |
521 | u32 *data = (u32 *) data8; | ||
522 | 522 | ||
523 | w = (w + 1) & ~1; | 523 | w = (w + 1) & ~1; |
524 | 524 | ||
@@ -890,11 +890,11 @@ static int nvidiafb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
890 | { | 890 | { |
891 | struct nvidia_par *par = info->par; | 891 | struct nvidia_par *par = info->par; |
892 | u8 data[MAX_CURS * MAX_CURS / 8]; | 892 | u8 data[MAX_CURS * MAX_CURS / 8]; |
893 | u16 fg, bg; | ||
894 | int i, set = cursor->set; | 893 | int i, set = cursor->set; |
894 | u16 fg, bg; | ||
895 | 895 | ||
896 | if (cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS) | 896 | if (cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS) |
897 | return soft_cursor(info, cursor); | 897 | return -ENXIO; |
898 | 898 | ||
899 | NVShowHideCursor(par, 0); | 899 | NVShowHideCursor(par, 0); |
900 | 900 | ||
@@ -931,21 +931,18 @@ static int nvidiafb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
931 | if (src) { | 931 | if (src) { |
932 | switch (cursor->rop) { | 932 | switch (cursor->rop) { |
933 | case ROP_XOR: | 933 | case ROP_XOR: |
934 | for (i = 0; i < s_pitch * cursor->image.height; | 934 | for (i = 0; i < s_pitch * cursor->image.height; i++) |
935 | i++) | ||
936 | src[i] = dat[i] ^ msk[i]; | 935 | src[i] = dat[i] ^ msk[i]; |
937 | break; | 936 | break; |
938 | case ROP_COPY: | 937 | case ROP_COPY: |
939 | default: | 938 | default: |
940 | for (i = 0; i < s_pitch * cursor->image.height; | 939 | for (i = 0; i < s_pitch * cursor->image.height; i++) |
941 | i++) | ||
942 | src[i] = dat[i] & msk[i]; | 940 | src[i] = dat[i] & msk[i]; |
943 | break; | 941 | break; |
944 | } | 942 | } |
945 | 943 | ||
946 | fb_sysmove_buf_aligned(info, &info->pixmap, data, | 944 | fb_pad_aligned_buffer(data, d_pitch, src, s_pitch, |
947 | d_pitch, src, s_pitch, | 945 | cursor->image.height); |
948 | cursor->image.height); | ||
949 | 946 | ||
950 | bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | | 947 | bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | |
951 | ((info->cmap.green[bg_idx] & 0xf8) << 2) | | 948 | ((info->cmap.green[bg_idx] & 0xf8) << 2) | |
@@ -1348,6 +1345,7 @@ static int __devinit nvidia_set_fbinfo(struct fb_info *info) | |||
1348 | 1345 | ||
1349 | info->pixmap.scan_align = 4; | 1346 | info->pixmap.scan_align = 4; |
1350 | info->pixmap.buf_align = 4; | 1347 | info->pixmap.buf_align = 4; |
1348 | info->pixmap.access_align = 32; | ||
1351 | info->pixmap.size = 8 * 1024; | 1349 | info->pixmap.size = 8 * 1024; |
1352 | info->pixmap.flags = FB_PIXMAP_SYSTEM; | 1350 | info->pixmap.flags = FB_PIXMAP_SYSTEM; |
1353 | 1351 | ||
diff --git a/drivers/video/pm3fb.c b/drivers/video/pm3fb.c index 8e024aad1b57..e0dad948467b 100644 --- a/drivers/video/pm3fb.c +++ b/drivers/video/pm3fb.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * Based on code written by: | 5 | * Based on code written by: |
6 | * Sven Luther, <luther@dpt-info.u-strasbg.fr> | 6 | * Sven Luther, <luther@dpt-info.u-strasbg.fr> |
7 | * Alan Hourihane, <alanh@fairlite.demon.co.uk> | 7 | * Alan Hourihane, <alanh@fairlite.demon.co.uk> |
8 | * Russel King, <rmk@arm.linux.org.uk> | 8 | * Russell King, <rmk@arm.linux.org.uk> |
9 | * Based on linux/drivers/video/skeletonfb.c: | 9 | * Based on linux/drivers/video/skeletonfb.c: |
10 | * Copyright (C) 1997 Geert Uytterhoeven | 10 | * Copyright (C) 1997 Geert Uytterhoeven |
11 | * Based on linux/driver/video/pm2fb.c: | 11 | * Based on linux/driver/video/pm2fb.c: |
diff --git a/drivers/video/riva/fbdev.c b/drivers/video/riva/fbdev.c index b0c886de0404..6a9e183be41b 100644 --- a/drivers/video/riva/fbdev.c +++ b/drivers/video/riva/fbdev.c | |||
@@ -1582,12 +1582,11 @@ static int rivafb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
1582 | { | 1582 | { |
1583 | struct riva_par *par = (struct riva_par *) info->par; | 1583 | struct riva_par *par = (struct riva_par *) info->par; |
1584 | u8 data[MAX_CURS * MAX_CURS/8]; | 1584 | u8 data[MAX_CURS * MAX_CURS/8]; |
1585 | u16 fg, bg; | ||
1586 | int i, set = cursor->set; | 1585 | int i, set = cursor->set; |
1586 | u16 fg, bg; | ||
1587 | 1587 | ||
1588 | if (cursor->image.width > MAX_CURS || | 1588 | if (cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS) |
1589 | cursor->image.height > MAX_CURS) | 1589 | return -ENXIO; |
1590 | return soft_cursor(info, cursor); | ||
1591 | 1590 | ||
1592 | par->riva.ShowHideCursor(&par->riva, 0); | 1591 | par->riva.ShowHideCursor(&par->riva, 0); |
1593 | 1592 | ||
@@ -1625,21 +1624,18 @@ static int rivafb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
1625 | if (src) { | 1624 | if (src) { |
1626 | switch (cursor->rop) { | 1625 | switch (cursor->rop) { |
1627 | case ROP_XOR: | 1626 | case ROP_XOR: |
1628 | for (i = 0; i < s_pitch * cursor->image.height; | 1627 | for (i = 0; i < s_pitch * cursor->image.height; i++) |
1629 | i++) | ||
1630 | src[i] = dat[i] ^ msk[i]; | 1628 | src[i] = dat[i] ^ msk[i]; |
1631 | break; | 1629 | break; |
1632 | case ROP_COPY: | 1630 | case ROP_COPY: |
1633 | default: | 1631 | default: |
1634 | for (i = 0; i < s_pitch * cursor->image.height; | 1632 | for (i = 0; i < s_pitch * cursor->image.height; i++) |
1635 | i++) | ||
1636 | src[i] = dat[i] & msk[i]; | 1633 | src[i] = dat[i] & msk[i]; |
1637 | break; | 1634 | break; |
1638 | } | 1635 | } |
1639 | 1636 | ||
1640 | fb_sysmove_buf_aligned(info, &info->pixmap, data, | 1637 | fb_pad_aligned_buffer(data, d_pitch, src, s_pitch, |
1641 | d_pitch, src, s_pitch, | 1638 | cursor->image.height); |
1642 | cursor->image.height); | ||
1643 | 1639 | ||
1644 | bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | | 1640 | bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | |
1645 | ((info->cmap.green[bg_idx] & 0xf8) << 2) | | 1641 | ((info->cmap.green[bg_idx] & 0xf8) << 2) | |
@@ -1727,6 +1723,7 @@ static int __devinit riva_set_fbinfo(struct fb_info *info) | |||
1727 | 1723 | ||
1728 | info->pixmap.size = 8 * 1024; | 1724 | info->pixmap.size = 8 * 1024; |
1729 | info->pixmap.buf_align = 4; | 1725 | info->pixmap.buf_align = 4; |
1726 | info->pixmap.access_align = 32; | ||
1730 | info->pixmap.flags = FB_PIXMAP_SYSTEM; | 1727 | info->pixmap.flags = FB_PIXMAP_SYSTEM; |
1731 | info->var.yres_virtual = -1; | 1728 | info->var.yres_virtual = -1; |
1732 | NVTRACE_LEAVE(); | 1729 | NVTRACE_LEAVE(); |
diff --git a/drivers/video/s1d13xxxfb.c b/drivers/video/s1d13xxxfb.c index b637c389e4f4..789de13f461f 100644 --- a/drivers/video/s1d13xxxfb.c +++ b/drivers/video/s1d13xxxfb.c | |||
@@ -493,7 +493,7 @@ s1d13xxxfb_fetch_hw_state(struct fb_info *info) | |||
493 | } | 493 | } |
494 | 494 | ||
495 | 495 | ||
496 | static int __devexit | 496 | static int |
497 | s1d13xxxfb_remove(struct device *dev) | 497 | s1d13xxxfb_remove(struct device *dev) |
498 | { | 498 | { |
499 | struct fb_info *info = dev_get_drvdata(dev); | 499 | struct fb_info *info = dev_get_drvdata(dev); |
diff --git a/drivers/video/savage/savagefb_driver.c b/drivers/video/savage/savagefb_driver.c index 03d74e8ee067..8fadcdae6f42 100644 --- a/drivers/video/savage/savagefb_driver.c +++ b/drivers/video/savage/savagefb_driver.c | |||
@@ -1897,7 +1897,7 @@ static int __devinit savage_init_fb_info (struct fb_info *info, | |||
1897 | info->pixmap.size = 8*1024; | 1897 | info->pixmap.size = 8*1024; |
1898 | info->pixmap.scan_align = 4; | 1898 | info->pixmap.scan_align = 4; |
1899 | info->pixmap.buf_align = 4; | 1899 | info->pixmap.buf_align = 4; |
1900 | info->pixmap.access_align = 4; | 1900 | info->pixmap.access_align = 32; |
1901 | 1901 | ||
1902 | fb_alloc_cmap (&info->cmap, NR_PALETTE, 0); | 1902 | fb_alloc_cmap (&info->cmap, NR_PALETTE, 0); |
1903 | info->flags |= FBINFO_HWACCEL_COPYAREA | | 1903 | info->flags |= FBINFO_HWACCEL_COPYAREA | |
diff --git a/drivers/video/softcursor.c b/drivers/video/softcursor.c index 13a4511539a1..229c4bc35079 100644 --- a/drivers/video/softcursor.c +++ b/drivers/video/softcursor.c | |||
@@ -58,17 +58,10 @@ int soft_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
58 | } else | 58 | } else |
59 | memcpy(src, image->data, dsize); | 59 | memcpy(src, image->data, dsize); |
60 | 60 | ||
61 | if (info->pixmap.outbuf) | 61 | fb_pad_aligned_buffer(dst, d_pitch, src, s_pitch, image->height); |
62 | fb_iomove_buf_aligned(info, &info->pixmap, dst, d_pitch, src, | ||
63 | s_pitch, image->height); | ||
64 | else | ||
65 | fb_sysmove_buf_aligned(info, &info->pixmap, dst, d_pitch, src, | ||
66 | s_pitch, image->height); | ||
67 | |||
68 | image->data = dst; | 62 | image->data = dst; |
69 | info->fbops->fb_imageblit(info, image); | 63 | info->fbops->fb_imageblit(info, image); |
70 | kfree(src); | 64 | kfree(src); |
71 | |||
72 | return 0; | 65 | return 0; |
73 | } | 66 | } |
74 | 67 | ||
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c index 3027841f9c24..f3069b01e248 100644 --- a/drivers/video/vesafb.c +++ b/drivers/video/vesafb.c | |||
@@ -271,7 +271,7 @@ static int __init vesafb_probe(struct device *device) | |||
271 | 271 | ||
272 | if (!request_mem_region(vesafb_fix.smem_start, size_total, "vesafb")) { | 272 | if (!request_mem_region(vesafb_fix.smem_start, size_total, "vesafb")) { |
273 | printk(KERN_WARNING | 273 | printk(KERN_WARNING |
274 | "vesafb: abort, cannot reserve video memory at 0x%lx\n", | 274 | "vesafb: cannot reserve video memory at 0x%lx\n", |
275 | vesafb_fix.smem_start); | 275 | vesafb_fix.smem_start); |
276 | /* We cannot make this fatal. Sometimes this comes from magic | 276 | /* We cannot make this fatal. Sometimes this comes from magic |
277 | spaces our resource handlers simply don't know about */ | 277 | spaces our resource handlers simply don't know about */ |
@@ -279,13 +279,13 @@ static int __init vesafb_probe(struct device *device) | |||
279 | 279 | ||
280 | info = framebuffer_alloc(sizeof(u32) * 256, &dev->dev); | 280 | info = framebuffer_alloc(sizeof(u32) * 256, &dev->dev); |
281 | if (!info) { | 281 | if (!info) { |
282 | release_mem_region(vesafb_fix.smem_start, vesafb_fix.smem_len); | 282 | release_mem_region(vesafb_fix.smem_start, size_total); |
283 | return -ENOMEM; | 283 | return -ENOMEM; |
284 | } | 284 | } |
285 | info->pseudo_palette = info->par; | 285 | info->pseudo_palette = info->par; |
286 | info->par = NULL; | 286 | info->par = NULL; |
287 | 287 | ||
288 | info->screen_base = ioremap(vesafb_fix.smem_start, vesafb_fix.smem_len); | 288 | info->screen_base = ioremap(vesafb_fix.smem_start, vesafb_fix.smem_len); |
289 | if (!info->screen_base) { | 289 | if (!info->screen_base) { |
290 | printk(KERN_ERR | 290 | printk(KERN_ERR |
291 | "vesafb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n", | 291 | "vesafb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n", |
@@ -386,7 +386,7 @@ static int __init vesafb_probe(struct device *device) | |||
386 | request_region(0x3c0, 32, "vesafb"); | 386 | request_region(0x3c0, 32, "vesafb"); |
387 | 387 | ||
388 | if (mtrr) { | 388 | if (mtrr) { |
389 | int temp_size = size_total; | 389 | unsigned int temp_size = size_total; |
390 | /* Find the largest power-of-two */ | 390 | /* Find the largest power-of-two */ |
391 | while (temp_size & (temp_size - 1)) | 391 | while (temp_size & (temp_size - 1)) |
392 | temp_size &= (temp_size - 1); | 392 | temp_size &= (temp_size - 1); |