diff --git a/headers/private/kernel/arch/x86/selector.h b/headers/private/kernel/arch/x86/selector.h deleted file mode 100644 index 8dee724517..0000000000 --- a/headers/private/kernel/arch/x86/selector.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -** Copyright 2002, Michael Noisternig. All rights reserved. -** Distributed under the terms of the NewOS License. -*/ -#ifndef _KERNEL_ARCH_x86_SELECTOR_H -#define _KERNEL_ARCH_x86_SELECTOR_H - -typedef uint32 selector_id; -typedef uint64 selector_type; - -// DATA segments are read-only -// CODE segments are execute-only -// both can be modified by using the suffixed enum versions -// legend: w = writable -// d = expand down -// r = readable -// c = conforming -enum segment_type { - DATA = 0x8, DATA_w, DATA_d, DATA_wd, CODE, CODE_r, CODE_c, CODE_rc -}; - -#define SELECTOR(base,limit,type,mode32) \ - (((uint64)(((((uint32)base)>>16)&0xff) | (((uint32)base)&0xff000000) | ((type)<<9) | ((mode32)<<22) | (1<<15))<<32) \ - | ( (limit) >= (1<<20) ? (((limit)>>12)&0xffff) | ((uint64)(((limit)>>12)&0xf0000)<<32) | ((uint64)1<<(23+32)) : ((limit)&0xffff) | ((uint64)((limit)&0xf0000)<<32) ) \ - | ((((uint32)base)&0xffff)<<16)) - -void i386_selector_init( void *gdt ); -selector_id i386_selector_add( selector_type selector ); -void i386_selector_remove( selector_id id ); -selector_type i386_selector_get( selector_id id ); - -#endif diff --git a/headers/private/kernel/arch/x86/types.h b/headers/private/kernel/arch/x86/types.h deleted file mode 100644 index c70a4ecf3c..0000000000 --- a/headers/private/kernel/arch/x86/types.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -** Copyright 2001, Travis Geiselbrecht. All rights reserved. -** Distributed under the terms of the NewOS License. -*/ -#ifndef _ARCH_x86_TYPES_H -#define _ARCH_x86_TYPES_H - -#ifndef WIN32 - typedef unsigned long long uint64; - typedef long long int64; -#else /* WIN32 */ - typedef unsigned __int64 uint64; - typedef __int64 int64; -#endif - -typedef unsigned long uint32; -typedef long int32; -typedef unsigned short uint16; -typedef short int16; -typedef unsigned char uint8; -typedef char int8; -typedef unsigned long addr; - -#define _OBOS_TIME_T_ int /* basic time_t type */ - -/* define this as not all platforms have it set, but we'll make sure as - * some conditional checks need it - */ -#define __INTEL__ 1 - -#endif /* _ARCH_x86_TYPES_H */ diff --git a/src/system/kernel/arch/x86/Jamfile b/src/system/kernel/arch/x86/Jamfile index b0d08957c8..c2b29afaaa 100644 --- a/src/system/kernel/arch/x86/Jamfile +++ b/src/system/kernel/arch/x86/Jamfile @@ -36,7 +36,6 @@ if $(TARGET_ARCH) = x86_64 { arch_debug.cpp arch_elf.cpp arch_platform.cpp -# arch_selector.cpp arch_real_time_clock.cpp arch_smp.cpp arch_thread.cpp diff --git a/src/system/kernel/arch/x86/arch_cpu.cpp b/src/system/kernel/arch/x86/arch_cpu.cpp index 9ce5d7b867..6d5a322218 100644 --- a/src/system/kernel/arch/x86/arch_cpu.cpp +++ b/src/system/kernel/arch/x86/arch_cpu.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include "interrupts.h" @@ -822,10 +821,6 @@ arch_cpu_init_post_vm(kernel_args *args) create_area("gdt", (void **)&gGDT, B_EXACT_ADDRESS, B_PAGE_SIZE, B_ALREADY_WIRED, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA); - // currently taken out of the build, because it's not yet used (and assumes - // (a fixed number of used GDT entries) - //i386_selector_init(gGDT); // pass the new gdt - // allocate an area for the double fault stacks virtual_address_restrictions virtualRestrictions = {}; virtualRestrictions.address_specification = B_ANY_KERNEL_ADDRESS; diff --git a/src/system/kernel/arch/x86/arch_selector.cpp b/src/system/kernel/arch/x86/arch_selector.cpp deleted file mode 100644 index c9ade36f06..0000000000 --- a/src/system/kernel/arch/x86/arch_selector.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* -** Copyright 2002, Michael Noisternig. All rights reserved. -** Distributed under the terms of the NewOS License. -** Distributed under the terms of the MIT License as part of the OpenBeOS project. -*/ -#include -#include -#include -#include - -#include - -#define MAX_SELECTORS (GDT_LIMIT/8) -#define ENTRIES (MAX_SELECTORS/(sizeof(uint32)*8)) - -static uint32 selector_bitmap[ENTRIES] - = { 0x000000ff }; // first 8 selectors reserved - -static selector_type *gdt_table; -static struct gdt_idt_descr descr = { GDT_LIMIT - 1, NULL }; - -void i386_selector_init( void *gdt ) -{ - gdt_table = (selector_type *)gdt; - descr.b = (unsigned int *)gdt_table; -} - -// creates a new selector in the gdt of given type (use SELECTOR macro) -// IN: selector type -// RET: selector that can be directly used for segment registers -// 0 on error -selector_id i386_selector_add( selector_type type ) -{ - static spinlock spinlock; - int state; - uint32 mask; - selector_id id = 0; - unsigned i; - - state = disable_interrupts(); - acquire_spinlock( &spinlock ); - - for ( i = 0; i < ENTRIES; i++ ) - if ( selector_bitmap[i] != 0xffffffff ) { // found free place in there - id = i*sizeof(uint32)*8; - mask = 1; - while ( selector_bitmap[i] & mask ) { - mask <<= 1; - id++; - } - selector_bitmap[i] |= mask; - gdt_table[id] = type; - break; - } - - release_spinlock( &spinlock ); - restore_interrupts( state ); - - if ( id ) { - asm("lgdt %0;" - : : "m" (descr)); - } - - return id*8; -} - -// removes a selector with given id from the gdt -void i386_selector_remove( selector_id id ) -{ - if ( id < 8*8 || id >= MAX_SELECTORS*8 ) - return; - - id /= 8; - gdt_table[id] = 0; - - atomic_and( &selector_bitmap[id/32], ~(1<<(id&31)) ); - - asm("lgdt %0;" - : : "m" (descr)); -} - -// returns the selector type of a given id -selector_type i386_selector_get( selector_id id ) -{ - return gdt_table[id/8]; -}