- g_linkpage = (void *)(((u32)map_bottom - LINKPAGE_ALLOC) & ~0xfff);
- pret = mmap(g_linkpage, LINKPAGE_ALLOC, PROT_READ|PROT_WRITE,
- MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0);
- if (pret != g_linkpage) {
- perror(PFX "mmap linkpage");
- exit(1);
+ emu_is_dl = is_dl;
+
+#ifdef PND
+ // set default buffer size to 8 * 1K
+ emu_force_snd_frag = (8<<16) | 10;
+#endif
+ var = getenv("GINGE_SETFRAGMENT");
+ if (var != NULL)
+ emu_force_snd_frag = strtol(var, NULL, 0);
+
+ for (i = 0; i < 2; i++) {
+ if (map_bottom[i] == NULL)
+ continue;
+ g_linkpages[i] = (void *)(((u32)map_bottom[i] - LINKPAGE_ALLOC) & ~0xfff);
+ pret = mmap(g_linkpages[i], LINKPAGE_ALLOC, PROT_READ|PROT_WRITE,
+ MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0);
+ if (pret != g_linkpages[i]) {
+ err("linkpage alloc @ %p: ", g_linkpages[i]);
+ perror(NULL);
+ exit(1);
+ }
+ log("linkpages @ %p\n", g_linkpages[i]);
+ init_linkpage(g_linkpages[i]);