Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


working paged real mode
[palacios.git] / palacios / src / geekos / tss.c
index 6936711..3a72fb0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * x86 TSS data structure and routines
  * Copyright (c) 2001,2004 David H. Hovemeyer <daveho@cs.umd.edu>
- * $Revision: 1.2 $
+ * $Revision: 1.4 $
  * 
  * This is free software.  You are permitted to use,
  * redistribute, and modify it as specified in the file "COPYING".
@@ -26,8 +26,7 @@
 /*
  * We use one TSS in GeekOS.
  */
-//static struct TSS s_theTSS;
-static struct TSS *s_theTSS = (struct TSS *) TSS_LOCATION;
+static struct TSS s_theTSS;
 static struct Segment_Descriptor *s_tssDesc;
 static ushort_t s_tssSelector;
 
@@ -56,8 +55,8 @@ void Init_TSS(void)
     s_tssDesc = Allocate_Segment_Descriptor();
     KASSERT(s_tssDesc != 0);
 
-    memset(s_theTSS, '\0', sizeof(struct TSS));
-    Init_TSS_Descriptor(s_tssDesc, s_theTSS);
+    memset(&s_theTSS, '\0', sizeof(struct TSS));
+    Init_TSS_Descriptor(s_tssDesc, &s_theTSS);
 
     s_tssSelector = Selector(0, true, Get_Descriptor_Index(s_tssDesc));
 
@@ -72,8 +71,8 @@ void Init_TSS(void)
  */
 void Set_Kernel_Stack_Pointer(ulong_t esp0)
 {
-    s_theTSS->ss0 = KERNEL_DS;
-    s_theTSS->esp0 = esp0;
+    s_theTSS.ss0 = KERNEL_DS;
+    s_theTSS.esp0 = esp0;
 
     /*
      * NOTE: I read on alt.os.development that it is necessary to
@@ -83,3 +82,21 @@ void Set_Kernel_Stack_Pointer(ulong_t esp0)
      */
     Load_Task_Register();
 }
+
+
+/* JRL THIS FUCKING SUCKS */
+
+uint_t GetTR_Base() {
+  return (uint_t)(&s_theTSS);
+}
+uint_t GetTR_Limit() {
+  return  sizeof(struct TSS);
+}
+
+ushort_t GetTR_Selector() {
+  return s_tssSelector;
+}
+
+
+
+/* ** */