Mercurial > sdl-ios-xcode
changeset 3162:dc1eb82ffdaa
Von: Thomas Zimmermann
Betreff: [SDL] [PATCH] Make static variables const
Datum: Tue, 19 May 2009 19:45:37 +0200
Hi,
this is a set of simple changes which make some of SDL's internal static
arrays constant. The purpose is to shrink the number of write-able
static bytes and thus increase the number of memory pages shared between
SDL applications.
The patch set is against trunk@4513. Each of the attached patch files is
specific to a sub-system. The set is completed by a second mail, because
of the list's 40 KiB limit.
The files readelf-r4513.txt and readelf-const-patch.txt where made by
calling 'readelf -S libSDL.so'. They show the difference in ELF sections
without and with the patch. Some numbers measured on my x86-64:
Before
[13] .rodata PROGBITS 00000000000eaaa0 000eaaa0
0000000000008170 0000000000000000 A 0 0 32
[19] .data.rel.ro PROGBITS 00000000003045e0 001045e0
00000000000023d0 0000000000000000 WA 0 0 32
[23] .data PROGBITS 00000000003076e0 001076e0
0000000000004988 0000000000000000 WA 0 0 32
After
[13] .rodata PROGBITS 00000000000eaaa0 000eaaa0
0000000000009a50 0000000000000000 A 0 0 32
[19] .data.rel.ro PROGBITS 0000000000306040 00106040
0000000000002608 0000000000000000 WA 0 0 32
[23] .data PROGBITS 0000000000309360 00109360
0000000000002e88 0000000000000000 WA 0 0 32
The size of the write-able data section decreased considerably. Some
entries became const-after-relocation, while most of its content went
straight into the read-only data section.
Best regards, Thomas
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 03 Jun 2009 04:37:27 +0000 |
parents | 494559cc723b |
children | a252014ce27d |
files | src/SDL_fatal.c src/audio/SDL_audio.c src/audio/esd/SDL_esdaudio.c src/events/SDL_keyboard.c src/events/blank_cursor.h src/events/default_cursor.h src/events/scancodes_darwin.h src/events/scancodes_linux.h src/events/scancodes_win32.h src/events/scancodes_xfree86.h src/libm/e_log.c src/libm/e_rem_pio2.c src/libm/e_sqrt.c src/libm/k_cos.c src/libm/k_rem_pio2.c src/libm/k_sin.c src/libm/s_copysign.c src/libm/s_cos.c src/libm/s_fabs.c src/libm/s_floor.c src/libm/s_scalbn.c src/libm/s_sin.c src/stdlib/SDL_qsort.c src/thread/pthread/SDL_systhread.c src/video/SDL_RLEaccel.c src/video/SDL_blit_0.c src/video/SDL_blit_1.c src/video/SDL_blit_N.c src/video/SDL_video.c src/video/x11/SDL_x11keyboard.c src/video/x11/imKStoUCS.c |
diffstat | 31 files changed, 56 insertions(+), 47 deletions(-) [+] |
line wrap: on
line diff
--- a/src/SDL_fatal.c Sun May 31 11:53:12 2009 +0000 +++ b/src/SDL_fatal.c Wed Jun 03 04:37:27 2009 +0000 @@ -43,7 +43,7 @@ raise(sig); } -static int SDL_fatal_signals[] = { +static const int SDL_fatal_signals[] = { SIGSEGV, #ifdef SIGBUS SIGBUS,
--- a/src/audio/SDL_audio.c Sun May 31 11:53:12 2009 +0000 +++ b/src/audio/SDL_audio.c Wed Jun 03 04:37:27 2009 +0000 @@ -77,7 +77,7 @@ /* Available audio drivers */ -static AudioBootStrap *bootstrap[] = { +static const AudioBootStrap *const bootstrap[] = { #if SDL_AUDIO_DRIVER_BSD &BSD_AUDIO_bootstrap, #endif
--- a/src/audio/esd/SDL_esdaudio.c Sun May 31 11:53:12 2009 +0000 +++ b/src/audio/esd/SDL_esdaudio.c Wed Jun 03 04:37:27 2009 +0000 @@ -60,9 +60,11 @@ { const char *name; void **func; -} esd_functions[] = { -SDL_ESD_SYM(esd_open_sound), - SDL_ESD_SYM(esd_close), SDL_ESD_SYM(esd_play_stream),}; +} const esd_functions[] = { + SDL_ESD_SYM(esd_open_sound), + SDL_ESD_SYM(esd_close), SDL_ESD_SYM(esd_play_stream), +}; + #undef SDL_ESD_SYM static void
--- a/src/events/SDL_keyboard.c Sun May 31 11:53:12 2009 +0000 +++ b/src/events/SDL_keyboard.c Wed Jun 03 04:37:27 2009 +0000 @@ -34,7 +34,7 @@ static int SDL_current_keyboard; static SDL_Keyboard **SDL_keyboards; -static SDLKey SDL_default_keymap[SDL_NUM_SCANCODES] = { +static const SDLKey SDL_default_keymap[SDL_NUM_SCANCODES] = { 0, 0, 0, 0, 'a', 'b',
--- a/src/events/blank_cursor.h Sun May 31 11:53:12 2009 +0000 +++ b/src/events/blank_cursor.h Wed Jun 03 04:37:27 2009 +0000 @@ -28,7 +28,7 @@ #define BLANK_CHOTX 0 #define BLANK_CHOTY 0 -static unsigned char blank_cdata[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -static unsigned char blank_cmask[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +static const unsigned char blank_cdata[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +static const unsigned char blank_cmask[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; /* vi: set ts=4 sw=4 expandtab: */
--- a/src/events/default_cursor.h Sun May 31 11:53:12 2009 +0000 +++ b/src/events/default_cursor.h Wed Jun 03 04:37:27 2009 +0000 @@ -33,7 +33,7 @@ #ifdef USE_MACOS_CURSOR -static unsigned char default_cdata[] = { +static const unsigned char default_cdata[] = { 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, @@ -52,7 +52,7 @@ 0x00, 0x00 }; -static unsigned char default_cmask[] = { +static const unsigned char default_cmask[] = { 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, @@ -73,7 +73,7 @@ #else -static unsigned char default_cdata[] = { +static const unsigned char default_cdata[] = { 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, @@ -92,7 +92,7 @@ 0x00, 0x00 }; -static unsigned char default_cmask[] = { +static const unsigned char default_cmask[] = { 0x40, 0x00, 0xE0, 0x00, 0xF0, 0x00,
--- a/src/events/scancodes_darwin.h Sun May 31 11:53:12 2009 +0000 +++ b/src/events/scancodes_darwin.h Wed Jun 03 04:37:27 2009 +0000 @@ -27,7 +27,7 @@ - experimentation on various ADB and USB ISO keyboards and one ADB ANSI keyboard */ /* *INDENT-OFF* */ -static SDL_scancode darwin_scancode_table[] = { +static const SDL_scancode darwin_scancode_table[] = { /* 0 */ SDL_SCANCODE_A, /* 1 */ SDL_SCANCODE_S, /* 2 */ SDL_SCANCODE_D,
--- a/src/events/scancodes_linux.h Sun May 31 11:53:12 2009 +0000 +++ b/src/events/scancodes_linux.h Wed Jun 03 04:37:27 2009 +0000 @@ -26,7 +26,7 @@ - Linux kernel source input.h */ /* *INDENT-OFF* */ -static SDL_scancode linux_scancode_table[] = { +static SDL_scancode const linux_scancode_table[] = { /* 0 */ SDL_SCANCODE_UNKNOWN, /* 1 */ SDL_SCANCODE_ESCAPE, /* 2 */ SDL_SCANCODE_1,
--- a/src/events/scancodes_win32.h Sun May 31 11:53:12 2009 +0000 +++ b/src/events/scancodes_win32.h Wed Jun 03 04:37:27 2009 +0000 @@ -26,7 +26,7 @@ - msdn.microsoft.com */ /* *INDENT-OFF* */ -static SDL_scancode win32_scancode_table[] = { +static const SDL_scancode win32_scancode_table[] = { /* 0, 0x00 */ SDL_SCANCODE_UNKNOWN, /* 1, 0x01 */ SDL_SCANCODE_UNKNOWN, /* 2, 0x02 */ SDL_SCANCODE_UNKNOWN,
--- a/src/events/scancodes_xfree86.h Sun May 31 11:53:12 2009 +0000 +++ b/src/events/scancodes_xfree86.h Wed Jun 03 04:37:27 2009 +0000 @@ -26,7 +26,7 @@ - atKeyNames.h from XFree86 source code */ /* *INDENT-OFF* */ -static SDL_scancode xfree86_scancode_table[] = { +static const SDL_scancode xfree86_scancode_table[] = { /* 0 */ SDL_SCANCODE_UNKNOWN, /* 1 */ SDL_SCANCODE_ESCAPE, /* 2 */ SDL_SCANCODE_1, @@ -177,7 +177,7 @@ }; /* for wireless usb keyboard (manufacturer TRUST) without numpad. */ -static SDL_scancode xfree86_scancode_table2[] = { +static const SDL_scancode xfree86_scancode_table2[] = { /* 0 */ SDL_SCANCODE_UNKNOWN, /* 1 */ SDL_SCANCODE_ESCAPE, /* 2 */ SDL_SCANCODE_1,
--- a/src/libm/e_log.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/e_log.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,8 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: e_log.c,v 1.8 1995/05/10 20:45:49 jtc Exp $"; +static const char rcsid[] = + "$NetBSD: e_log.c,v 1.8 1995/05/10 20:45:49 jtc Exp $"; #endif /* __ieee754_log(x)
--- a/src/libm/e_rem_pio2.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/e_rem_pio2.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,7 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = +static const char rcsid[] = "$NetBSD: e_rem_pio2.c,v 1.8 1995/05/10 20:46:02 jtc Exp $"; #endif
--- a/src/libm/e_sqrt.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/e_sqrt.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,8 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: e_sqrt.c,v 1.8 1995/05/10 20:46:17 jtc Exp $"; +static const char rcsid[] = + "$NetBSD: e_sqrt.c,v 1.8 1995/05/10 20:46:17 jtc Exp $"; #endif /* __ieee754_sqrt(x)
--- a/src/libm/k_cos.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/k_cos.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,8 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: k_cos.c,v 1.8 1995/05/10 20:46:22 jtc Exp $"; +static const char rcsid[] = + "$NetBSD: k_cos.c,v 1.8 1995/05/10 20:46:22 jtc Exp $"; #endif /*
--- a/src/libm/k_rem_pio2.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/k_rem_pio2.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,7 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = +static const char rcsid[] = "$NetBSD: k_rem_pio2.c,v 1.7 1995/05/10 20:46:25 jtc Exp $"; #endif
--- a/src/libm/k_sin.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/k_sin.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,8 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: k_sin.c,v 1.8 1995/05/10 20:46:31 jtc Exp $"; +static const char rcsid[] = + "$NetBSD: k_sin.c,v 1.8 1995/05/10 20:46:31 jtc Exp $"; #endif /* __kernel_sin( x, y, iy)
--- a/src/libm/s_copysign.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/s_copysign.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,7 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = +static const char rcsid[] = "$NetBSD: s_copysign.c,v 1.8 1995/05/10 20:46:57 jtc Exp $"; #endif
--- a/src/libm/s_cos.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/s_cos.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,8 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: s_cos.c,v 1.7 1995/05/10 20:47:02 jtc Exp $"; +static const char rcsid[] = + "$NetBSD: s_cos.c,v 1.7 1995/05/10 20:47:02 jtc Exp $"; #endif /* cos(x)
--- a/src/libm/s_fabs.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/s_fabs.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,8 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: s_fabs.c,v 1.7 1995/05/10 20:47:13 jtc Exp $"; +static const char rcsid[] = + "$NetBSD: s_fabs.c,v 1.7 1995/05/10 20:47:13 jtc Exp $"; #endif /*
--- a/src/libm/s_floor.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/s_floor.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,7 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = +static const char rcsid[] = "$NetBSD: s_floor.c,v 1.8 1995/05/10 20:47:20 jtc Exp $"; #endif
--- a/src/libm/s_scalbn.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/s_scalbn.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,7 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = +static const char rcsid[] = "$NetBSD: s_scalbn.c,v 1.8 1995/05/10 20:48:08 jtc Exp $"; #endif
--- a/src/libm/s_sin.c Sun May 31 11:53:12 2009 +0000 +++ b/src/libm/s_sin.c Wed Jun 03 04:37:27 2009 +0000 @@ -11,7 +11,8 @@ */ #if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: s_sin.c,v 1.7 1995/05/10 20:48:15 jtc Exp $"; +static const char rcsid[] = + "$NetBSD: s_sin.c,v 1.7 1995/05/10 20:48:15 jtc Exp $"; #endif /* sin(x)
--- a/src/stdlib/SDL_qsort.c Sun May 31 11:53:12 2009 +0000 +++ b/src/stdlib/SDL_qsort.c Wed Jun 03 04:37:27 2009 +0000 @@ -60,7 +60,7 @@ #ifndef HAVE_QSORT -static char _ID[] = "<qsort.c gjm 1.12 1998-03-19>"; +static const char _ID[] = "<qsort.c gjm 1.12 1998-03-19>"; /* How many bytes are there per word? (Must be a power of 2, * and must in fact equal sizeof(int).)
--- a/src/thread/pthread/SDL_systhread.c Sun May 31 11:53:12 2009 +0000 +++ b/src/thread/pthread/SDL_systhread.c Wed Jun 03 04:37:27 2009 +0000 @@ -29,7 +29,7 @@ #include "../SDL_systhread.h" /* List of signals to mask in the subthreads */ -static int sig_list[] = { +static const int sig_list[] = { SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGALRM, SIGTERM, SIGCHLD, SIGWINCH, SIGVTALRM, SIGPROF, 0 };
--- a/src/video/SDL_RLEaccel.c Sun May 31 11:53:12 2009 +0000 +++ b/src/video/SDL_RLEaccel.c Wed Jun 03 04:37:27 2009 +0000 @@ -1259,7 +1259,7 @@ typedef Uint32(*getpix_func) (Uint8 *); -static getpix_func getpixes[4] = { +static const getpix_func getpixes[4] = { getpix_8, getpix_16, getpix_24, getpix_32 };
--- a/src/video/SDL_blit_0.c Sun May 31 11:53:12 2009 +0000 +++ b/src/video/SDL_blit_0.c Wed Jun 03 04:37:27 2009 +0000 @@ -443,11 +443,11 @@ } } -static SDL_BlitFunc bitmap_blit[] = { +static const SDL_BlitFunc bitmap_blit[] = { NULL, BlitBto1, BlitBto2, BlitBto3, BlitBto4 }; -static SDL_BlitFunc colorkey_blit[] = { +static const SDL_BlitFunc colorkey_blit[] = { NULL, BlitBto1Key, BlitBto2Key, BlitBto3Key, BlitBto4Key };
--- a/src/video/SDL_blit_1.c Sun May 31 11:53:12 2009 +0000 +++ b/src/video/SDL_blit_1.c Wed Jun 03 04:37:27 2009 +0000 @@ -512,11 +512,11 @@ } } -static SDL_BlitFunc one_blit[] = { +static const SDL_BlitFunc one_blit[] = { NULL, Blit1to1, Blit1to2, Blit1to3, Blit1to4 }; -static SDL_BlitFunc one_blitkey[] = { +static const SDL_BlitFunc one_blitkey[] = { NULL, Blit1to1Key, Blit1to2Key, Blit1to3Key, Blit1to4Key };
--- a/src/video/SDL_blit_N.c Sun May 31 11:53:12 2009 +0000 +++ b/src/video/SDL_blit_N.c Wed Jun 03 04:37:27 2009 +0000 @@ -113,7 +113,7 @@ * leave alpha with a zero mask, but we should still swizzle the bits. */ /* ARGB */ - const static struct SDL_PixelFormat default_pixel_format = { + const static const struct SDL_PixelFormat default_pixel_format = { NULL, 32, 4, 0, 0, 0, 0, 16, 8, 0, 24, @@ -2404,7 +2404,7 @@ {0, 0, 0, 0, 0, 0, 0, 0, BlitNtoN, 0} }; -static const struct blit_table *normal_blit[] = { +static const struct blit_table *const normal_blit[] = { normal_blit_1, normal_blit_2, normal_blit_3, normal_blit_4 };
--- a/src/video/SDL_video.c Sun May 31 11:53:12 2009 +0000 +++ b/src/video/SDL_video.c Wed Jun 03 04:37:27 2009 +0000 @@ -48,7 +48,7 @@ #endif /* SDL_VIDEO_OPENGL */ /* Available video drivers */ -static VideoBootStrap *bootstrap[] = { +static const VideoBootStrap *const bootstrap[] = { #if SDL_VIDEO_DRIVER_COCOA &COCOA_bootstrap, #endif
--- a/src/video/x11/SDL_x11keyboard.c Sun May 31 11:53:12 2009 +0000 +++ b/src/video/x11/SDL_x11keyboard.c Wed Jun 03 04:37:27 2009 +0000 @@ -32,7 +32,7 @@ #include "imKStoUCS.h" /* *INDENT-OFF* */ -static struct { +static const struct { KeySym keysym; SDLKey sdlkey; } KeySymToSDLKey[] = { @@ -132,9 +132,9 @@ { XK_Mode_switch, SDLK_MODE }, }; -static struct +static const struct { - SDL_scancode *table; + const SDL_scancode const *table; int table_size; } scancode_set[] = { { darwin_scancode_table, SDL_arraysize(darwin_scancode_table) },
--- a/src/video/x11/imKStoUCS.c Sun May 31 11:53:12 2009 +0000 +++ b/src/video/x11/imKStoUCS.c Wed Jun 03 04:37:27 2009 +0000 @@ -102,7 +102,7 @@ 0x06a9, 0x06af, 0x06ba, 0x06be, 0x06cc, 0x06d2, 0x06c1 /* 0x05f8-0x05fe */ }; -static unsigned short keysym_to_unicode_680_6ff[] = { +static unsigned short const keysym_to_unicode_680_6ff[] = { 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2, /* 0x0680-0x0687 */ 0x04b6, 0x04b8, 0x04ba, 0x0000, 0x04d8, 0x04e2, 0x04e8, 0x04ee, /* 0x0688-0x068f */ 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3, /* 0x0690-0x0697 */ @@ -214,7 +214,7 @@ 0x11eb, 0x0000, 0x11f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x20a9, /* 0x0ef8-0x0eff */ }; -static unsigned short keysym_to_unicode_12a1_12fe[] = { +static unsigned short const keysym_to_unicode_12a1_12fe[] = { 0x1e02, 0x1e03, 0x0000, 0x0000, 0x0000, 0x1e0a, 0x0000, /* 0x12a0-0x12a7 */ 0x1e80, 0x0000, 0x1e82, 0x1e0b, 0x1ef2, 0x0000, 0x0000, 0x0000, /* 0x12a8-0x12af */ 0x1e1e, 0x1e1f, 0x0000, 0x0000, 0x1e40, 0x1e41, 0x0000, 0x1e56, /* 0x12b0-0x12b7 */ @@ -233,7 +233,7 @@ 0x0152, 0x0153, 0x0178 /* 0x13b8-0x13bf */ }; -static unsigned short keysym_to_unicode_14a1_14ff[] = { +static unsigned short const keysym_to_unicode_14a1_14ff[] = { 0x2741, 0x00a7, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab, /* 0x14a0-0x14a7 */ 0x2014, 0x002e, 0x055d, 0x002c, 0x2013, 0x058a, 0x2026, 0x055c, /* 0x14a8-0x14af */ 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563, /* 0x14b0-0x14b7 */ @@ -248,7 +248,7 @@ 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x2019, 0x0027, /* 0x14f8-0x14ff */ }; -static unsigned short keysym_to_unicode_15d0_15f6[] = { +static unsigned short const keysym_to_unicode_15d0_15f6[] = { 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, /* 0x15d0-0x15d7 */ 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, /* 0x15d8-0x15df */ 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, /* 0x15e0-0x15e7 */ @@ -256,7 +256,7 @@ 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6 /* 0x15f0-0x15f7 */ }; -static unsigned short keysym_to_unicode_16a0_16f6[] = { +static unsigned short const keysym_to_unicode_16a0_16f6[] = { 0x0000, 0x0000, 0xf0a2, 0x1e8a, 0x0000, 0xf0a5, 0x012c, 0xf0a7, /* 0x16a0-0x16a7 */ 0xf0a8, 0x01b5, 0x01e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x019f, /* 0x16a8-0x16af */ 0x0000, 0x0000, 0xf0b2, 0x1e8b, 0x01d1, 0xf0b5, 0x012d, 0xf0b7, /* 0x16b0-0x16b7 */