33 #include "multi-segment.h"
34 #include "prot-domains.h"
39 uintptr_t mmio,
size_t mmio_sz,
40 uintptr_t meta,
size_t meta_sz,
43 volatile dom_kern_data_t ATTR_KERN_ADDR_SPACE *dkd;
46 KERN_READL(dom_id, dcd->dom_id);
48 if(PROT_DOMAINS_ACTUAL_CNT <= dom_id) {
52 dkd = prot_domains_kern_data + dom_id;
54 prot_domains_reg_multi_seg(dkd, mmio, mmio_sz, meta, meta_sz);
56 KERN_WRITEL(dkd->flags, pio ? PROT_DOMAINS_FLAG_PIO : 0);
60 prot_domains_switch(dom_id_t from_id, dom_id_t to_id,
61 interrupt_stack_t *intr_stk)
63 __asm__ __volatile__ (
65 "mov %[_meta_seg_], %%eax\n\t"
66 "lsl %%eax, %%ecx\n\t"
68 "xor %%eax, %%eax\n\t"
69 "1: mov %%eax, %%" SEG_META
"s\n\t"
70 "mov %[_kern_seg_], %%eax\n\t"
71 "mov %%eax, %%" SEG_KERN
"s\n\t"
73 : [_ldt_]
"r" ((uint16_t)GDT_SEL_LDT(to_id)),
74 [_meta_seg_]
"i" (LDT_SEL_META),
75 [_kern_seg_]
"i" (LDT_SEL_KERN)
83 #include "syscalls-int.c"
#define __attribute__(nothing)
Define attribute to nothing since it isn't handled by IAR.
Data associated with each protection domain that is owned by clients of that domain and used to ident...