Lines Matching refs:desc
95 clear_segment_descriptor(segment_descriptor* desc)
97 *(long long*)desc = 0;
102 set_segment_descriptor_base(segment_descriptor* desc, addr_t base)
104 desc->base_00_15 = (addr_t)base & 0xffff; // base is 32 bits long
105 desc->base_23_16 = ((addr_t)base >> 16) & 0xff;
106 desc->base_31_24 = ((addr_t)base >> 24) & 0xff;
111 set_segment_descriptor(segment_descriptor* desc, addr_t base, uint32 limit,
114 set_segment_descriptor_base(desc, base);
118 desc->limit_00_15 = ((addr_t)limit >> 12) & 0x0ffff;
119 desc->limit_19_16 = ((addr_t)limit >> 28) & 0xf;
120 desc->granularity = 1; // 4 KB granularity
122 desc->limit_00_15 = (addr_t)limit & 0x0ffff;
123 desc->limit_19_16 = ((addr_t)limit >> 16) & 0xf;
124 desc->granularity = 0; // 1 byte granularity
127 desc->type = type;
128 desc->desc_type = DT_CODE_DATA_SEGMENT;
129 desc->privilege_level = privilegeLevel;
131 desc->present = 1;
132 desc->available = 0; // system available bit is currently not used
133 desc->d_b = 1; // 32-bit code
135 desc->zero = 0;
140 set_tss_descriptor(segment_descriptor* desc, addr_t base, uint32 limit)
143 set_segment_descriptor_base(desc, base);
145 desc->limit_00_15 = (addr_t)limit & 0x0ffff;
146 desc->limit_19_16 = 0;
148 desc->type = DT_TSS;
149 desc->desc_type = DT_SYSTEM_SEGMENT;
150 desc->privilege_level = DPL_KERNEL;
152 desc->present = 1;
153 desc->granularity = 0; // 1 Byte granularity
154 desc->available = 0; // system available bit is currently not used
155 desc->d_b = 0;
157 desc->zero = 0;