Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca241c75 authored by Glauber de Oliveira Costa's avatar Glauber de Oliveira Costa Committed by Ingo Molnar
Browse files

x86: unify tss_struct



Although slighly different, the tss_struct is very similar in x86_64 and
i386. The really different part, which matchs the hardware vision of it, is
now called x86_hw_tss, and each of the architectures provides yours.
It's then used as a field in the outter tss_struct.

Signed-off-by: default avatarGlauber de Oliveira Costa <gcosta@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 0ccb8acc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ int main(void)
	ENTRY(cr8);
	BLANK();
#undef ENTRY
	DEFINE(TSS_ist, offsetof(struct tss_struct, ist));
	DEFINE(TSS_ist, offsetof(struct tss_struct, x86_tss.ist));
	BLANK();
	DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
	BLANK();
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ static void doublefault_fn(void)
		printk(KERN_EMERG "double fault, tss at %08lx\n", tss);

		if (ptr_ok(tss)) {
			struct i386_hw_tss *t = (struct i386_hw_tss *)tss;
			struct x86_hw_tss *t = (struct x86_hw_tss *)tss;

			printk(KERN_EMERG "eip = %08lx, esp = %08lx\n",
			       t->ip, t->sp);
+1 −1
Original line number Diff line number Diff line
@@ -639,7 +639,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
	/*
	 * Reload esp0, LDT and the page table pointer:
	 */
	tss->sp0 = next->sp0;
	tss->x86_tss.sp0 = next->sp0;

	/* 
	 * Switch DS and ES.
+2 −2
Original line number Diff line number Diff line
@@ -258,10 +258,10 @@ void __cpuinit cpu_init (void)
				      v, cpu); 
		}
		estacks += PAGE_SIZE << order[v];
		orig_ist->ist[v] = t->ist[v] = (unsigned long)estacks;
		orig_ist->ist[v] = t->x86_tss.ist[v] = (unsigned long)estacks;
	}

	t->io_bitmap_base = offsetof(struct tss_struct, io_bitmap);
	t->x86_tss.io_bitmap_base = offsetof(struct tss_struct, io_bitmap);
	/*
	 * <= is required because the CPU will access up to
	 * 8 bits beyond the end of the IO permission bitmap.
+1 −1
Original line number Diff line number Diff line
@@ -614,7 +614,7 @@ static int __cpuinit do_boot_cpu(int cpu, int apicid)
	start_rip = setup_trampoline();

	init_rsp = c_idle.idle->thread.sp;
	per_cpu(init_tss,cpu).sp0 = init_rsp;
	per_cpu(init_tss, cpu).x86_tss.sp0 = init_rsp;
	initial_code = start_secondary;
	clear_tsk_thread_flag(c_idle.idle, TIF_FORK);

Loading