📄 vcs.map
字号:
/* -*- Mode: c -*- *//* * Copyright (C) 1998, 1999, 2001, Jonathan S. Shapiro. * * This file is part of the EROS Operating System runtime library. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, 59 Temple Place - Suite 330 Boston, MA 02111-1307, USA. *//********************************************************* * PRIMORDIAL VIRTUAL COPY SEGMENT/FRESH SEGMENT * * In which we built up a read-only segment of zeros * of maximal LSS, which is currently 17 (spans a 96 bit * address) *********************************************************/zero_pg = new ro page;zero_03 = new sense node with lss 1;zero_04 = new sense node with lss 2;zero_05 = new sense node with lss 3;zero_06 = new sense node with lss 4;zero_07 = new sense node with lss 5;zero_08 = new sense node with lss 6;zero_09 = new sense node with lss 7;zero_10 = new sense node with lss 8;zero_11 = new sense node with lss 9;zero_12 = new sense node with lss 10;#if (MAX_BLSS == 13) || defined(USE_SMALLER_BLSS) && (MAX_BLSS == 11)primary_zero_seg = new sense node with lss 11;#elsezero_13 = new sense node with lss 11;zero_14 = new sense node with lss 12;zero_15 = new sense node with lss 13;zero_16 = new sense node with lss 14;primary_zero_seg = new sense node with lss 15;#endifzero_03 all slots = zero_pg;zero_04 all slots = zero_03;zero_05 all slots = zero_04;zero_06 all slots = zero_05;zero_07 all slots = zero_06;zero_08 all slots = zero_07;zero_09 all slots = zero_08;zero_10 all slots = zero_09;zero_11 all slots = zero_10;zero_12 all slots = zero_11;#if (MAX_BLSS == 13) || defined(USE_SMALLER_BLSS) && (MAX_BLSS == 11)primary_zero_seg all slots = zero_12;#elsezero_13 all slots = zero_12;zero_14 all slots = zero_13;zero_15 all slots = zero_14;zero_16 all slots = zero_15;primary_zero_seg all slots = zero_16;#endif/********************************************************* * INDEX on primordial zero segment * * This index is used by some segment keepers to provide * an efficient way to populate subtrees with zeros. *********************************************************/zindex = new sense node; zindex[2] = zero_pg; zindex[3] = zero_03; zindex[4] = zero_04; zindex[5] = zero_05; zindex[6] = zero_06; zindex[7] = zero_07; zindex[8] = zero_08; zindex[9] = zero_09; zindex[10] = zero_10; zindex[11] = zero_11; zindex[12] = zero_12;#if (MAX_BLSS == 13) || defined(USE_SMALLER_BLSS) && (MAX_BLSS == 11) zindex[13] = primary_zero_seg;#else zindex[13] = zero_13; zindex[14] = zero_14; zindex[15] = zero_15; zindex[16] = zero_16; zindex[17] = primary_zero_seg;#endif/******************************************************** * All VCS's ultimately derive from ZSF, which is built * on the primordial zero space. * * 1. The primordial VCS needs a (VCSK) keeper. * 2. That keeper must come from VCSF * 3. All instances of VCSF are built by some instance * of VCSK. * * This circularity is resolved by pre-constructing the * factory and the domain creator, and making it appear * that the initial VCS was built by the appropriate proccre. ********************************************************//* These must be symbols because they need to be referenced later. */vcsk.seg = small program "/eros/domain/vcsk";vcsk.pc = symbol "/eros/domain/vcsk" _start;BOOT_CONSTRUCTOR(zs_c, zs);PROD_CONSTIT(zs_c, KC_OSTREAM, 0) = misc Console;PROD_CONSTIT(zs_c, KC_RETURNER, 1) = misc Returner;PROD_CONSTIT(zs_c, KC_ZINDEX, 2) = zindex;PROD_CONSTIT(zs_c, KC_FROZEN_SEG, 3) = zero_pg;PROD_CONSTIT(zs_c, KC_PROTOSPC, 4) = protospace;PROD_SPACE(zs_c) = vcsk.seg;PROD_PC(zs_c) = vcsk.pc;/* no keeper, no symbol table */#define MAKE_VIRTUAL_COPIER(name, progfile) \ BOOT_CONSTRUCTOR(name##_c, name); \ PROD_CONSTIT(name##_c, KC_OSTREAM, 0) = misc Console; \ PROD_CONSTIT(name##_c, KC_RETURNER, 1) = misc Returner; \ PROD_CONSTIT(name##_c, KC_ZINDEX, 2) = zindex; \ PROD_CONSTIT(name##_c, KC_FROZEN_SEG, 3) = sense program segtree progfile; \ PROD_CONSTIT(name##_c, KC_PROTOSPC, 4) = protospace; \ PROD_SPACE(name##_c) = vcsk.seg; \ PROD_PC(name##_c) = vcsk.pc;/* hide vcsk.seg; *//* hide vcsk.pc; */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -