## diffname pc/mem.h 1991/0613
## diff -e /dev/null /n/bootesdump/1991/0613/sys/src/9/safari/mem.h
0a
#define SELGDT (0<<3) /* selector is in gdt */
#define SELLDT (1<<3) /* selector is in ldt */
#define SELECTOR(i, t, p) (((i)<<4) | (t) | (p))
/*
* segment descriptor/gate
*/
typedef struct Segdesc Segdesc;
struct Segdesc
{
ulong d0;
ulong d1;
};
#define SEGDATA (0x10<<8) /* data/stack segment */
#define SEGEXEC (0x18<<8) /* executable segment */
#define SEGCG (0x0C<<8) /* call gate */
#define SEGIG (0x0E<<8) /* interrupt gate */
#define SEGTG (0x0F<<8) /* task gate */
#define SEGP (1<<15) /* segment present */
#define SEGPL(x) ((x)<<13) /* priority level */
#define SEGB (1<<22) /* granularity 1==4k (for expand-down) */
#define SEGG (1<<23) /* granularity 1==4k (for other) */
#define SEGE (1<<10) /* expand down */
#define SEGW (1<<9) /* writable (for data/stack) */
#define SEGR (1<<9) /* readable (for code) */
#define SEGD (1<<22) /* default 1==32bit (for code) */
/*
* gate initializers
*/
#define TRAPGATE(s,o,p) { (o)&0xFFFF0000|SEGP|SEGPL(p)|SEGTG, (o)&0xFFFF|((s)<<16) }
#define INTRGATE(s,o,p) { (o)&0xFFFF0000|SEGP|SEGPL(p)|SEGIG, (o)&0xFFFF|((s)<<16) }
#define CALLGATE(s,o,p) { (o)&0xFFFF0000|SEGP|SEGPL(p)|SEGCG, (o)&0xFFFF|((s)<<16) }
/*
* segment descriptor initializers
*/
#define DATASEG(p) { SEGG|(0xF<<16)|SEGP|SEGPL(p)|SEGDATA|SEGW, 0xFFFF }
#define EXECSEG(p) { SEGG|SEGD|(0xF<<16)|SEGP|SEGPL(p)|SEGEXEC|SEGR, 0xFFFF }
/*
* known segments (in GDT) and their selectors
*/
enum
{
NULLSEG=0, /* null segment */
KESEG= 1, /* kernel executable */
KDSEG= 2, /* kernel data/stack */
UESEG= 3, /* user executable */
UDSEG= 4, /* user data/stack */
SYSGATE=5, /* system call gate */
};
#define NULLSEL SELECTOR(NULLSEG, SELGDT, 0)
#define KESEL SELECTOR(KESEG, SELGDT, 0)
#define KDSEL SELECTOR(KDSEG, SELGDT, 0)
#define KSSEL SELECTOR(KDSEG, SELGDT, 0)
#define UESEL SELECTOR(UESEG, SELGDT, 3)
#define UDSEL SELECTOR(UDSEG, SELGDT, 3)
#define USSEL SELECTOR(UDSEG, SELGDT, 3)
/*
* task state segment. Plan 9 ignores all the task switching goo and just
* uses the tss for esp0 and ss0 on gate's into the kernel, interrupts,
* and exceptions. The rest is completely ignored.
*
* This means that we only need one tss in the whole system.
*/
typedef struct Tss Tss;
struct Tss
{
ulong backlink; /* unused */
ulong esp0; /* pl0 stack pointer */
ulong ss0; /* pl0 stack selector */
ulong esp1; /* pl1 stack pointer */
ulong ss1; /* pl1 stack selector */
ulong esp2; /* pl2 stack pointer */
ulong ss2; /* pl2 stack selector */
ulong cr3; /* page table descriptor */
ulong eip; /* instruction pointer */
ulong eflags; /* processor flags */
ulong eax; /* general (hah?) registers */
ulong ecx;
ulong edx;
ulong ebx;
ulong esp;
ulong ebp;
ulong esi;
ulong edi;
ulong es; /* segment selectors */
ulong cs;
ulong ss;
ulong ds;
ulong fs;
ulong gs;
ulong ldt; /* local descriptor table */
ulong iomap; /* io map base */
};
.
## diffname pc/mem.h 1991/0614
## diff -e /n/bootesdump/1991/0613/sys/src/9/safari/mem.h /n/bootesdump/1991/0614/sys/src/9/safari/mem.h
40c
#define DATASEG(p) { SEGG|SEGB|(0xF<<16)|SEGP|SEGPL(p)|SEGDATA|SEGW, 0xFFFF }
.
## diffname pc/mem.h 1991/0625
## diff -e /n/bootesdump/1991/0614/sys/src/9/safari/mem.h /n/bootesdump/1991/0625/sys/src/9/safari/mem.h
63,99d
46,54c
#define NULLSEG 0 /* null segment */
#define KESEG 1 /* kernel executable */
#define KDSEG 2 /* kernel data/stack */
#define UESEG 3 /* user executable */
#define UDSEG 4 /* user data/stack */
#define SYSGATE 5 /* system call gate */
#define SELGDT (0<<3) /* selector is in gdt */
#define SELLDT (1<<3) /* selector is in ldt */
#define SELECTOR(i, t, p) (((i)<<4) | (t) | (p))
.
42a
#define UZERO 0 /* base of user address space */
#define UTZERO (UZERO+BY2PG) /* first address in user text */
#define TSTKTOP USERADDR /* end of new stack in sysexec */
#define TSTKSIZ 10
#define USTKTOP (TSTKTOP-TSTKSIZ*BY2PG) /* byte just beyond user stack */
#define KZERO 0x80000000 /* base of kernel address space */
#define KTZERO KZERO /* first address in kernel text */
#define USTKSIZE (4*1024*1024) /* size of user stack */
#define MACHSIZE 4096
#define isphys(x) ((x)&KZERO)
.
40,41d
38c
* Address spaces
*
* User is at 0-2GB
* Kernel is at 2GB-4GB
.
36a
#define USERADDR 0xC0000000
#define UREGADDR (USERADDR+BY2PG-4*16)
.
33,35d
31c
* Fundamental addresses
.
21,28c
#define HZ (68) /* clock frequency */
#define MS2HZ (1000/HZ) /* millisec per clock tick */
#define TK2SEC(t) ((t)*100/6839) /* ticks to seconds */
#define TK2MS(t) ((((ulong)(t))*100000)/6839) /* ticks to milliseconds */
#define MS2TK(t) ((((ulong)(t))*6839)/100000) /* milliseconds to ticks */
.
9,19d
7c
* Time (???)
* Clock frequency is 68.3900 HZ
.
5a
#define BI2BY 8 /* bits per byte */
#define BI2WD 32 /* bits per word */
#define BY2WD 4 /* bytes per word */
#define BY2PG 4096 /* bytes per page */
#define WD2PG (BY2PG/BY2WD) /* words per page */
#define PGSHIFT 13 /* log(BY2PG) */
#define PGROUND(s) (((s)+(BY2PG-1))&~(BY2PG-1))
#define MAXMACH 1 /* max # cpus system can run */
.
4c
/*
* Sizes
*/
.
1,2c
/*
* Memory and machine-specific definitions. Used in C and assembler.
*/
.
## diffname pc/mem.h 1991/0627
## diff -e /n/bootesdump/1991/0625/sys/src/9/safari/mem.h /n/bootesdump/1991/0627/sys/src/9/safari/mem.h
80a
/*
* fields in segment descriptors
*/
#define SEGDATA (0x10<<8) /* data/stack segment */
#define SEGEXEC (0x18<<8) /* executable segment */
#define SEGCG (0x0C<<8) /* call gate */
#define SEGIG (0x0E<<8) /* interrupt gate */
#define SEGTG (0x0F<<8) /* task gate */
#define SEGP (1<<15) /* segment present */
#define SEGPL(x) ((x)<<13) /* priority level */
#define SEGB (1<<22) /* granularity 1==4k (for expand-down) */
#define SEGG (1<<23) /* granularity 1==4k (for other) */
#define SEGE (1<<10) /* expand down */
#define SEGW (1<<9) /* writable (for data/stack) */
#define SEGR (1<<9) /* readable (for code) */
#define SEGD (1<<22) /* default 1==32bit (for code) */
.
## diffname pc/mem.h 1991/0629
## diff -e /n/bootesdump/1991/0627/sys/src/9/safari/mem.h /n/bootesdump/1991/0629/sys/src/9/safari/mem.h
71c
#define SELECTOR(i, t, p) (((i)<<3) | (t) | (p))
.
## diffname pc/mem.h 1991/0703
## diff -e /n/bootesdump/1991/0629/sys/src/9/safari/mem.h /n/bootesdump/1991/0703/sys/src/9/safari/mem.h
88a
#define SEGTYPE (0x1F<<8)
.
62,65c
#define KDSEG 1 /* kernel data/stack */
#define KESEG 2 /* kernel executable */
#define UDSEG 3 /* user data/stack */
#define UESEG 4 /* user executable */
.
## diffname pc/mem.h 1991/0705
## diff -e /n/bootesdump/1991/0703/sys/src/9/safari/mem.h /n/bootesdump/1991/0705/sys/src/9/safari/mem.h
24,28c
#define HZ (18) /* clock frequency */
#define MS2HZ (54) /* millisec per clock tick */
#define TK2SEC(t) ((t)*10/185) /* ticks to seconds */
#define TK2MS(t) ((((ulong)(t))*10000)/185) /* ticks to milliseconds */
#define MS2TK(t) ((((ulong)(t))*185)/10000) /* milliseconds to ticks */
.
20,21c
* Time
* Clock frequency is ??? HZ
.
## diffname pc/mem.h 1991/0706
## diff -e /n/bootesdump/1991/0705/sys/src/9/safari/mem.h /n/bootesdump/1991/0706/sys/src/9/safari/mem.h
98a
/*
* virtual MMU entries
*/
#define PTEMAPMEM (1024*1024) /* ??? */
#define SEGMAPSIZE 16 /* ??? */
#define PTEPERTAB (PTEMAPMEM/BY2PG) /* ??? */
.
79a
#define RDSEL SELECTOR(RDSEG, SELGDT, 0)
#define RESEL SELECTOR(RESEG, SELGDT, 0)
.
66a
#define RDSEG 6 /* reboot data/stack */
#define RESEG 7 /* reboot executable */
.
60d
58c
* known 80386 segments (in GDT) and their selectors
.
43d
33d
23d
8d
## diffname pc/mem.h 1991/0709
## diff -e /n/bootesdump/1991/0706/sys/src/9/safari/mem.h /n/bootesdump/1991/0709/sys/src/9/safari/mem.h
22,26c
#define HZ (20) /* clock frequency */
#define MS2HZ (1000/HZ) /* millisec per clock tick */
#define TK2SEC(t) ((t)/HZ) /* ticks to seconds */
#define TK2MS(t) ((((ulong)(t))*1000)/HZ) /* ticks to milliseconds */
#define MS2TK(t) ((((ulong)(t))*HZ)/1000) /* milliseconds to ticks */
.
20d
## diffname pc/mem.h 1991/0710
## diff -e /n/bootesdump/1991/0709/sys/src/9/safari/mem.h /n/bootesdump/1991/0710/sys/src/9/safari/mem.h
103a
/*
* physical MMU
*/
#define PPN(x) ((x)&~(BY2PG-1))
#define PTEVALID (1<<0)
#define PTEUNCACHED 0 /* everything is uncached */
#define PTEWRITE (1<<1)
#define PTERONLY (0<<1)
#define PTEKERNEL (0<<2)
#define PTEUSER (1<<2)
.
99c
* virtual MMU
.
## diffname pc/mem.h 1991/0711
## diff -e /n/bootesdump/1991/0710/sys/src/9/safari/mem.h /n/bootesdump/1991/0711/sys/src/9/safari/mem.h
108d
103a
#define PPN(x) ((x)&~(BY2PG-1))
.
50c
#define isphys(x) (((ulong)x)&KZERO)
.
13c
#define PGSHIFT 12 /* log(BY2PG) */
.
## diffname pc/mem.h 1991/0716
## diff -e /n/bootesdump/1991/0711/sys/src/9/safari/mem.h /n/bootesdump/1991/0716/sys/src/9/safari/mem.h
114a
/*
* flag register bits that we care about
*/
#define IFLAG 0x200
.
75d
72d
## diffname pc/mem.h 1991/0717
## diff -e /n/bootesdump/1991/0716/sys/src/9/safari/mem.h /n/bootesdump/1991/0717/sys/src/9/safari/mem.h
81a
#define SEGTSS (0x9<<8) /* TSS segment */
.
75a
#define TSSSEL SELECTOR(TSSSEG, SELGDT, 0)
.
62c
#define RESEG 7 /* reboot executable */
#define TSSSEG 8 /* task segment */
.
## diffname pc/mem.h 1991/0718
## diff -e /n/bootesdump/1991/0717/sys/src/9/safari/mem.h /n/bootesdump/1991/0718/sys/src/9/safari/mem.h
43,46c
#define USTKTOP (TSTKTOP-TSTKSIZ*BY2PG) /* byte just beyond user stack */
#define USTKSIZE (4*1024*1024 - TSTKSIZ*BY2PG) /* size of user stack */
#define USTKBTM USTKTOP - USTKSIZE
.
39,41c
#define UZERO 0 /* base of user address space */
#define UTZERO (UZERO+BY2PG) /* first address in user text */
#define KZERO 0x80000000 /* base of kernel address space */
#define KTZERO KZERO /* first address in kernel text */
#define USERADDR 0xC0000000 /* struct User */
#define UREGADDR (USERADDR+BY2PG-4*16)
#define TSTKTOP USERADDR /* end of new stack in sysexec */
.
36,37c
* User is at 0-2GB
* Kernel is at 2GB-4GB
*
* To avoid an extra page map, both the user stack (USTKTOP) and
* the temporary user stack (TSTKTOP) should be in the the same
* 4 meg.
.
34c
* Address spaces
.
30,31d
## diffname pc/mem.h 1991/0719
## diff -e /n/bootesdump/1991/0718/sys/src/9/safari/mem.h /n/bootesdump/1991/0719/sys/src/9/safari/mem.h
80,81d
66,68c
#define TSSSEG 6 /* task segment */
.
51c
#define USTKBTM (USTKTOP - USTKSIZE)
.
## diffname pc/mem.h 1991/0807
## diff -e /n/bootesdump/1991/0719/sys/src/9/safari/mem.h /n/bootesdump/1991/0807/sys/src/9/safari/mem.h
46c
#define UREGADDR (USERADDR+BY2PG-4*17)
.
21c
#define HZ (1000) /* clock frequency */
.
## diffname pc/mem.h 1991/0808
## diff -e /n/bootesdump/1991/0807/sys/src/9/safari/mem.h /n/bootesdump/1991/0808/sys/src/9/safari/mem.h
21c
#define HZ (20) /* clock frequency */
.
## diffname pc/mem.h 1991/1004
## diff -e /n/bootesdump/1991/0808/sys/src/9/safari/mem.h /n/bootesdump/1991/1004/sys/src/9/safari/mem.h
50,51c
#define USTKSIZE (16*1024*1024 - TSTKSIZ*BY2PG) /* size of user stack */
.
## diffname pc/mem.h 1991/1210
## diff -e /n/bootesdump/1991/1004/sys/src/9/safari/mem.h /n/bootesdump/1991/1210/sys/src/9/safari/mem.h
50a
#define ROMBIOS (KZERO|0xF0000)
.
## diffname pc/mem.h 1991/1214
## diff -e /n/bootesdump/1991/1210/sys/src/9/safari/mem.h /n/bootesdump/1991/1214/sys/src/9/safari/mem.h
65,66c
#define TSSSEG 5 /* task segment */
.
46c
#define UREGADDR (USERADDR+BY2PG-4*19)
.
## diffname pc/mem.h 1992/0625
## diff -e /n/bootesdump/1991/1214/sys/src/9/safari/mem.h /n/bootesdump/1992/0625/sys/src/9/safari/mem.h
14a
#define MB (1024*1024)
.
## diffname pc/mem.h 1992/0726
## diff -e /n/bootesdump/1992/0625/sys/src/9/safari/mem.h /n/bootesdump/1992/0726/sys/src/9/safari/mem.h
15d
## diffname pc/mem.h 1992/0804
## diff -e /n/bootesdump/1992/0726/sys/src/9/safari/mem.h /n/bootesdump/1992/0804/sys/src/9/safari/mem.h
111c
#define PTEUNCACHED (1<<4)
.
## diffname pc/mem.h 1992/0805
## diff -e /n/bootesdump/1992/0804/sys/src/9/safari/mem.h /n/bootesdump/1992/0805/sys/src/9/safari/mem.h
102,104c
#define PTEMAPMEM (1024*1024)
#define SEGMAPSIZE 64
#define PTEPERTAB (PTEMAPMEM/BY2PG)
.
## diffname pc/mem.h 1992/0930
## diff -e /n/bootesdump/1992/0808/sys/src/9/safari/mem.h /n/bootesdump/1992/0930/sys/src/9/pc/mem.h
51a
#define ISAMEMSIZE (4*MB) /* mem space reserved for ISA */
.
## diffname pc/mem.h 1992/1013
## diff -e /n/bootesdump/1992/0930/sys/src/9/pc/mem.h /n/bootesdump/1992/1013/sys/src/9/pc/mem.h
56d
## diffname pc/mem.h 1992/1211
## diff -e /n/bootesdump/1992/1013/sys/src/9/pc/mem.h /n/bootesdump/1992/1211/sys/src/9/pc/mem.h
103c
#define SEGMAPSIZE 16
.
## diffname pc/mem.h 1993/0915
## diff -e /n/bootesdump/1992/1211/sys/src/9/pc/mem.h /n/fornaxdump/1993/0915/sys/src/brazil/pc/mem.h
50a
#define KSTACK 4096 /* Size of kernel stack */
.
45,47c
#define TSTKTOP 0xC0000000 /* end of new stack in sysexec */
.
## diffname pc/mem.h 1993/1013
## diff -e /n/fornaxdump/1993/0915/sys/src/brazil/pc/mem.h /n/fornaxdump/1993/1013/sys/src/brazil/pc/mem.h
119a
#define getpgcolor(a) 0
.
## diffname pc/mem.h 1993/1230
## diff -e /n/fornaxdump/1993/1013/sys/src/brazil/pc/mem.h /n/fornaxdump/1993/1230/sys/src/brazil/pc/mem.h
51a
#define globalmem(x) (((ulong)x)&KZERO) /* addresses valid in all contexts */
.
## diffname pc/mem.h 1994/0101
## diff -e /n/fornaxdump/1993/1230/sys/src/brazil/pc/mem.h /n/fornaxdump/1994/0101/sys/src/brazil/pc/mem.h
52c
#define globalmem(x) ((((ulong)x)&0xF0000000)==KZERO) /* addresses valid in all contexts */
.
## diffname pc/mem.h 1994/0311
## diff -e /n/fornaxdump/1994/0101/sys/src/brazil/pc/mem.h /n/fornaxdump/1994/0311/sys/src/brazil/pc/mem.h
10a
#define BY2V 8 /* bytes per double word */
.
## diffname pc/mem.h 1994/0322
## diff -e /n/fornaxdump/1994/0311/sys/src/brazil/pc/mem.h /n/fornaxdump/1994/0322/sys/src/brazil/pc/mem.h
15c
#define ROUND(s, sz) (((s)+(sz-1))&~(sz-1))
#define PGROUND(s) ROUND(s, BY2PG)
.
## diffname pc/mem.h 1994/0813
## diff -e /n/fornaxdump/1994/0322/sys/src/brazil/pc/mem.h /n/fornaxdump/1994/0813/sys/src/brazil/pc/mem.h
57a
/*
* an area for storing crash info to be picked up later
*/
#define CRASHSIZE (KSTACK+BY2PG)
.
## diffname pc/mem.h 1994/0817
## diff -e /n/fornaxdump/1994/0813/sys/src/brazil/pc/mem.h /n/fornaxdump/1994/0817/sys/src/brazil/pc/mem.h
59,63d
## diffname pc/mem.h 1994/1122
## diff -e /n/fornaxdump/1994/0817/sys/src/brazil/pc/mem.h /n/fornaxdump/1994/1122/sys/src/brazil/pc/mem.h
23c
#define HZ (50) /* clock frequency */
.
## diffname pc/mem.h 1995/0105
## diff -e /n/fornaxdump/1994/1122/sys/src/brazil/pc/mem.h /n/fornaxdump/1995/0105/sys/src/brazil/pc/mem.h
121a
#define IE 0x200
.
## diffname pc/mem.h 1995/0418
## diff -e /n/fornaxdump/1995/0105/sys/src/brazil/pc/mem.h /n/fornaxdump/1995/0418/sys/src/brazil/pc/mem.h
112c
#define PTEWT (1<<3)
#define PTEUNCACHED (1<<4)
.
## diffname pc/mem.h 1995/0725
## diff -e /n/fornaxdump/1995/0418/sys/src/brazil/pc/mem.h /n/fornaxdump/1995/0725/sys/src/brazil/pc/mem.h
23c
#define HZ (100) /* clock frequency */
.
## diffname pc/mem.h 1995/0726
## diff -e /n/fornaxdump/1995/0725/sys/src/brazil/pc/mem.h /n/fornaxdump/1995/0726/sys/src/brazil/pc/mem.h
46c
#define KTZERO 0x80100000 /* first address in kernel text */
.
## diffname pc/mem.h 1997/0327
## diff -e /n/fornaxdump/1995/0726/sys/src/brazil/pc/mem.h /n/emeliedump/1997/0327/sys/src/brazil/pc/mem.h
118,123c
#define PTESIZE (1<<7)
.
105a
#define SEGMAPSIZE 512
.
104d
56,57d
32a
#define MACHADDR 0xFEF00000 /* as seen by current processor */
#define MACHSIZE 4096
.
31a
#define IDTADDR 0x80000800 /* idt */
#define APBOOTSTRAP 0x80001000 /* AP bootstrap code */
#define CONFADDR 0x80001200 /* info passed from boot loader */
#define CPU0PDB 0x80002000 /* bootstrap processor PDB */
#define CPU0PTE 0x80003000 /* bootstrap processor PTE's for 0-2MB */
#define CPU0MACHPTE 0x80004000 /* bootstrap processor PTE for MACHADDR */
#define CPU0MACH 0x80005000 /* Mach for bootstrap processor */
.
18c
#define MAXMACH 8 /* max # cpus system can run */
.
## diffname pc/mem.h 1997/0520
## diff -e /n/emeliedump/1997/0327/sys/src/brazil/pc/mem.h /n/emeliedump/1997/0520/sys/src/brazil/pc/mem.h
76,77c
#define SELGDT (0<<2) /* selector is in gdt */
#define SELLDT (1<<2) /* selector is in ldt */
.
## diffname pc/mem.h 1997/0810
## diff -e /n/emeliedump/1997/0520/sys/src/brazil/pc/mem.h /n/emeliedump/1997/0810/sys/src/brazil/pc/mem.h
96c
#define SEGTG (0x0F<<8) /* trap gate */
.
67c
* known x86 segments (in GDT) and their selectors
.
57,64c
#define USTKTOP (KZERO-BY2PG) /* byte just beyond user stack */
#define USTKSIZE (4*1024*1024) /* size of user stack */
#define TSTKTOP (USTKTOP-USTKSIZE) /* end of new stack in sysexec */
#define TSTKSIZ 100
.
48,51d
26,27c
#define TK2MS(t) ((t)*MS2HZ) /* ticks to milliseconds */
#define MS2TK(t) ((t)/MS2HZ) /* milliseconds to ticks */
.
18a
#define KSTACK 4096 /* Size of kernel stack */
.
## diffname pc/mem.h 1997/0920
## diff -e /n/emeliedump/1997/0810/sys/src/brazil/pc/mem.h /n/emeliedump/1997/0920/sys/src/brazil/pc/mem.h
19c
#define KSTACK 4096-16 /* Size of kernel stack */
/* the -16 is room for the 2n allocator header */
.
## diffname pc/mem.h 1997/1101
## diff -e /n/emeliedump/1997/0920/sys/src/brazil/pc/mem.h /n/emeliedump/1997/1101/sys/src/brazil/pc/mem.h
41,43c
#define MACHSIZE BY2PG
.
38,39c
#define CPU0PTE 0x80003000 /* bootstrap processor PTE's for 0-4MB */
#define MACHADDR 0x80004000 /* as seen by current processor */
.
19,20c
#define KSTACK 4096 /* Size of kernel stack */
.
## diffname pc/mem.h 1998/0916
## diff -e /n/emeliedump/1997/1101/sys/src/brazil/pc/mem.h /n/emeliedump/1998/0916/sys/src/brazil/pc/mem.h
104c
#define SEGMAPSIZE 1984
#define SSEGMAPSIZE 16
.
53c
#define USTKSIZE (16*1024*1024) /* size of user stack */
.
## diffname pc/mem.h 1999/0101
## diff -e /n/emeliedump/1998/0916/sys/src/brazil/pc/mem.h /n/emeliedump/1999/0101/sys/src/brazil/pc/mem.h
15c
#define ROUND(s, sz) (((s)+((sz)-1))&~((sz)-1))
.
## diffname pc/mem.h 1999/0205
## diff -e /n/emeliedump/1999/0101/sys/src/brazil/pc/mem.h /n/emeliedump/1999/0205/sys/src/brazil/pc/mem.h
27,28c
#define MS2TK(t) (((t)*HZ)/1000) /* milliseconds to ticks */
.
## diffname pc/mem.h 1999/0207
## diff -e /n/emeliedump/1999/0205/sys/src/brazil/pc/mem.h /n/emeliedump/1999/0207/sys/src/brazil/pc/mem.h
24c
#define HZ (82) /* clock frequency */
.
## diffname pc/mem.h 1999/0522
## diff -e /n/emeliedump/1999/0207/sys/src/brazil/pc/mem.h /n/emeliedump/1999/0522/sys/src/brazil/pc/mem.h
16a
#define BLOCKALIGN 8
.
## diffname pc/mem.h 1999/1022
## diff -e /n/emeliedump/1999/0522/sys/src/brazil/pc/mem.h /n/emeliedump/1999/1022/sys/src/brazil/pc/mem.h
118c
#define PTESIZE (1<<7)
.
114c
#define PTEWRITE (1<<1)
.
## diffname pc/mem.h 2000/0705
## diff -e /n/emeliedump/1999/1022/sys/src/brazil/pc/mem.h /n/emeliedump/2000/0705/sys/src/9/pc/mem.h
28c
#define MS2TK(t) (((t)*HZ+500)/1000) /* milliseconds to closest tick */
.
## diffname pc/mem.h 2000/1018
## diff -e /n/emeliedump/2000/0705/sys/src/9/pc/mem.h /n/emeliedump/2000/1018/sys/src/9/pc/mem.h
77a
#define APMCSEL SELECTOR(APMCSEG, SELGDT, 0)
#define APMCSEL16 SELECTOR(APMCSEG16, SELGDT, 0)
#define APMDSEL SELECTOR(APMDSEG, SELGDT, 0)
/* #define APM40SEL SELECTOR(APM40SEG, SELGDT, 0) */
.
65a
#define APMCSEG 6 /* APM code segment */
#define APMCSEG16 7 /* APM 16-bit code segment */
#define APMDSEG 8 /* APM data segment */
#define NGDT 10 /* number of GDT entries required */
/* #define APM40SEG 8 /* APM segment 0x40 */
.
## diffname pc/mem.h 2002/0109
## diff -e /n/emeliedump/2000/1018/sys/src/9/pc/mem.h /n/emeliedump/2002/0109/sys/src/9/pc/mem.h
127a
/*
* Macros for calculating offsets within the page directory base
* and page tables.
*/
#define PDX(va) ((((ulong)(va))>>22) & 0x03FF)
#define PTX(va) ((((ulong)(va))>>12) & 0x03FF)
.
79a
#define KESEL SELECTOR(KESEG, SELGDT, 0)
.
78d
33a
#define REBOOTADDR 0x00001000 /* reboot code - physical address */
.
## diffname pc/mem.h 2002/0228
## diff -e /n/emeliedump/2002/0109/sys/src/9/pc/mem.h /n/emeliedump/2002/0228/sys/src/9/pc/mem.h
25c
#define HZ (100) /* clock frequency */
.
## diffname pc/mem.h 2002/0326
## diff -e /n/emeliedump/2002/0228/sys/src/9/pc/mem.h /n/emeliedump/2002/0326/sys/src/9/pc/mem.h
28d
## diffname pc/mem.h 2002/0410
## diff -e /n/emeliedump/2002/0326/sys/src/9/pc/mem.h /n/emeliedump/2002/0410/sys/src/9/pc/mem.h
127a
#define PTEGLOBAL (1<<8)
.
## diffname pc/mem.h 2002/0412
## diff -e /n/emeliedump/2002/0410/sys/src/9/pc/mem.h /n/emeliedump/2002/0412/sys/src/9/pc/mem.h
137c
#define getpgcolor(a) 0
.
134,135c
#define PDX(va) ((((ulong)(va))>>22) & 0x03FF)
#define PTX(va) ((((ulong)(va))>>12) & 0x03FF)
.
123c
#define PTEWRITE (1<<1)
.
113,115c
#define SEGMAPSIZE 1984
#define SSEGMAPSIZE 16
#define PPN(x) ((x)&~(BY2PG-1))
.
111c
#define PTEMAPMEM (1024*1024)
.
106c
#define SEGD (1<<22) /* default 1==32bit (for code) */
.
99,104c
#define SEGP (1<<15) /* segment present */
#define SEGPL(x) ((x)<<13) /* priority level */
#define SEGB (1<<22) /* granularity 1==4k (for expand-down) */
#define SEGG (1<<23) /* granularity 1==4k (for other) */
#define SEGE (1<<10) /* expand down */
#define SEGW (1<<9) /* writable (for data/stack) */
.
96,97c
#define SEGTG (0x0F<<8) /* trap gate */
#define SEGTYPE (0x1F<<8)
.
94c
#define SEGCG (0x0C<<8) /* call gate */
.
91,92c
#define SEGDATA (0x10<<8) /* data/stack segment */
#define SEGEXEC (0x18<<8) /* executable segment */
.
77,86c
#define NULLSEL SELECTOR(NULLSEG, SELGDT, 0)
#define KDSEL SELECTOR(KDSEG, SELGDT, 0)
#define KESEL SELECTOR(KESEG, SELGDT, 0)
#define UESEL SELECTOR(UESEG, SELGDT, 3)
#define UDSEL SELECTOR(UDSEG, SELGDT, 3)
#define TSSSEL SELECTOR(TSSSEG, SELGDT, 0)
#define APMCSEL SELECTOR(APMCSEG, SELGDT, 0)
#define APMCSEL16 SELECTOR(APMCSEG16, SELGDT, 0)
#define APMDSEL SELECTOR(APMDSEG, SELGDT, 0)
/* #define APM40SEL SELECTOR(APM40SEG, SELGDT, 0) */
.
75c
#define SELECTOR(i, t, p) (((i)<<3) | (t) | (p))
.
72c
#define SELGDT (0<<2) /* selector is in gdt */
.
69c
#define NGDT 10 /* number of GDT entries required */
.
65c
#define TSSSEG 5 /* task segment */
.
55c
#define TSTKSIZ 100
.
40a
/*
* N.B. ramscan knows that CPU0MACH+BY2PG is the end of reserved data
* N.B. _start0x00100020 knows that CPU0PDB is the first reserved page
* and that there are 5 of them.
*/
.
34,39c
#define APBOOTSTRAP 0x80001000 /* AP bootstrap code */
#define CONFADDR 0x80001200 /* info passed from boot loader */
#define CPU0PDB 0x80002000 /* bootstrap processor PDB */
#define CPU0PTE 0x80003000 /* bootstrap processor PTE's for 0-4MB */
#define CPU0GDT 0x80004000 /* bootstrap processor GDT */
#define MACHADDR 0x80005000 /* as seen by current processor */
#define CPU0MACH 0x80006000 /* Mach for bootstrap processor */
.
32c
#define IDTADDR 0x80000800 /* idt */
.
20c
#define KSTACK 4096 /* Size of kernel stack */
.
15,17c
#define ROUND(s, sz) (((s)+((sz)-1))&~((sz)-1))
#define PGROUND(s) ROUND(s, BY2PG)
#define BLOCKALIGN 8
.
9c
#define BI2WD 32 /* bits per word */
.
|