search for: set_base

Displaying 20 results from an estimated 44 matches for "set_base".

2007 Apr 18
3
[PATCH 12/21] i386 Deprecate descriptor asm
...gt;base2 << 24); + return base; +} + +static inline unsigned long get_desc_limit(struct desc_struct *desc) +{ + unsigned long limit; + struct desc_internal_struct *dint = desc_internal(desc); + limit = (dint->limit0) | (dint->limit1 << 16); + return limit; +} + +static inline void set_base(struct desc_struct *desc, void *base) +{ + struct desc_internal_struct *d = desc_internal(desc); + u32 addr = (u32)base; + d->base0 = addr & 0xffff; + d->base1 = (addr >> 16) & 0xff; + d->base2 = (addr >> 24) & 0xff; +} + +static inline void set_limit(struct desc_st...
2007 Apr 18
3
[PATCH 12/21] i386 Deprecate descriptor asm
...gt;base2 << 24); + return base; +} + +static inline unsigned long get_desc_limit(struct desc_struct *desc) +{ + unsigned long limit; + struct desc_internal_struct *dint = desc_internal(desc); + limit = (dint->limit0) | (dint->limit1 << 16); + return limit; +} + +static inline void set_base(struct desc_struct *desc, void *base) +{ + struct desc_internal_struct *d = desc_internal(desc); + u32 addr = (u32)base; + d->base0 = addr & 0xffff; + d->base1 = (addr >> 16) & 0xff; + d->base2 = (addr >> 24) & 0xff; +} + +static inline void set_limit(struct desc_st...
2007 Apr 18
0
[PATCH 8/12] base-limit-cleanup
...================================ --- linux-2.6.13.orig/include/asm-i386/system.h 2005-08-08 17:50:08.000000000 -0700 +++ linux-2.6.13/include/asm-i386/system.h 2005-08-08 20:47:32.000000000 -0700 @@ -29,49 +29,39 @@ "2" (prev), "d" (next)); \ } while (0) -#define _set_base(addr,base) do { unsigned long __pr; \ -__asm__ __volatile__ ("movw %%dx,%1\n\t" \ - "rorl $16,%%edx\n\t" \ - "movb %%dl,%2\n\t" \ - "movb %%dh,%3" \ - :"=&d" (__pr) \ - :"m" (*((addr)+2)), \ - "m" (*((addr)+4)), \ - "m...
2007 Apr 18
0
[PATCH 8/12] base-limit-cleanup
...================================ --- linux-2.6.13.orig/include/asm-i386/system.h 2005-08-08 17:50:08.000000000 -0700 +++ linux-2.6.13/include/asm-i386/system.h 2005-08-08 20:47:32.000000000 -0700 @@ -29,49 +29,39 @@ "2" (prev), "d" (next)); \ } while (0) -#define _set_base(addr,base) do { unsigned long __pr; \ -__asm__ __volatile__ ("movw %%dx,%1\n\t" \ - "rorl $16,%%edx\n\t" \ - "movb %%dl,%2\n\t" \ - "movb %%dh,%3" \ - :"=&d" (__pr) \ - :"m" (*((addr)+2)), \ - "m" (*((addr)+4)), \ - "m...
2007 Apr 18
0
[PATCH 9/14] i386 / Typecheck and optimize base and limit accessors
...================================ --- linux-2.6.13.orig/include/asm-i386/system.h 2005-08-09 20:17:14.000000000 -0700 +++ linux-2.6.13/include/asm-i386/system.h 2005-08-10 20:41:03.000000000 -0700 @@ -29,49 +29,39 @@ "2" (prev), "d" (next)); \ } while (0) -#define _set_base(addr,base) do { unsigned long __pr; \ -__asm__ __volatile__ ("movw %%dx,%1\n\t" \ - "rorl $16,%%edx\n\t" \ - "movb %%dl,%2\n\t" \ - "movb %%dh,%3" \ - :"=&d" (__pr) \ - :"m" (*((addr)+2)), \ - "m" (*((addr)+4)), \ - "m...
2007 Apr 18
0
[PATCH 9/14] i386 / Typecheck and optimize base and limit accessors
...================================ --- linux-2.6.13.orig/include/asm-i386/system.h 2005-08-09 20:17:14.000000000 -0700 +++ linux-2.6.13/include/asm-i386/system.h 2005-08-10 20:41:03.000000000 -0700 @@ -29,49 +29,39 @@ "2" (prev), "d" (next)); \ } while (0) -#define _set_base(addr,base) do { unsigned long __pr; \ -__asm__ __volatile__ ("movw %%dx,%1\n\t" \ - "rorl $16,%%edx\n\t" \ - "movb %%dl,%2\n\t" \ - "movb %%dh,%3" \ - :"=&d" (__pr) \ - :"m" (*((addr)+2)), \ - "m" (*((addr)+4)), \ - "m...
2007 Apr 18
1
[PATCH 14/21] i386 Apm is on cpu zero only
...e. * Most BIOS's, however, will respect a 64k limit, so we use that. + * + * Note we only set APM segments on CPU zero, since we pin the APM + * code to that CPU. */ - for (i = 0; i < NR_CPUS; i++) { - struct desc_struct *gdt = get_cpu_gdt_table(i); - if (!gdt) - continue; - set_base(&gdt[APM_CS >> 3], - __va((unsigned long)apm_info.bios.cseg << 4)); - set_base(&gdt[APM_CS_16 >> 3], - __va((unsigned long)apm_info.bios.cseg_16 << 4)); - set_base(&gdt[APM_DS >> 3], - __va((unsigned long)apm_info.bios.dseg << 4)); - } + gd...
2007 Apr 18
1
[PATCH 14/21] i386 Apm is on cpu zero only
...e. * Most BIOS's, however, will respect a 64k limit, so we use that. + * + * Note we only set APM segments on CPU zero, since we pin the APM + * code to that CPU. */ - for (i = 0; i < NR_CPUS; i++) { - struct desc_struct *gdt = get_cpu_gdt_table(i); - if (!gdt) - continue; - set_base(&gdt[APM_CS >> 3], - __va((unsigned long)apm_info.bios.cseg << 4)); - set_base(&gdt[APM_CS_16 >> 3], - __va((unsigned long)apm_info.bios.cseg_16 << 4)); - set_base(&gdt[APM_DS >> 3], - __va((unsigned long)apm_info.bios.dseg << 4)); - } + gd...
2007 Apr 18
0
[PATCH 6/21] i386 Fixed pnp bios limits
...-zach-work.orig/drivers/pnp/pnpbios/bioscalls.c 2005-11-04 16:54:56.000000000 -0800 +++ linux-2.6.14-zach-work/drivers/pnp/pnpbios/bioscalls.c 2005-11-05 00:28:11.000000000 -0800 @@ -58,12 +58,6 @@ __asm__( ".previous \n" ); -#define Q_SET_SEL(cpu, selname, address, size) \ -do { \ -set_base(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], __va((u32)(address))); \ -set_limit(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], size); \ -} while(0) - #define Q2_SET_SEL(cpu, selname, address, size) \ do { \ set_base(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], (u32)(address)); \ @@...
2007 Apr 18
0
[PATCH 6/21] i386 Fixed pnp bios limits
...-zach-work.orig/drivers/pnp/pnpbios/bioscalls.c 2005-11-04 16:54:56.000000000 -0800 +++ linux-2.6.14-zach-work/drivers/pnp/pnpbios/bioscalls.c 2005-11-05 00:28:11.000000000 -0800 @@ -58,12 +58,6 @@ __asm__( ".previous \n" ); -#define Q_SET_SEL(cpu, selname, address, size) \ -do { \ -set_base(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], __va((u32)(address))); \ -set_limit(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], size); \ -} while(0) - #define Q2_SET_SEL(cpu, selname, address, size) \ do { \ set_base(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], (u32)(address)); \ @@...
2007 Apr 18
0
[PATCH 7/12] gdt-accessor
..._DO_RESTORE_SEGS; local_irq_restore(flags); - __get_cpu_var(cpu_gdt_table)[0x40 / 8] = save_desc_40; + gdt[desc_number(0x40)] = save_desc_40; put_cpu(); apm_restore_cpus(cpus); return error; @@ -2295,35 +2298,36 @@ apm_bios_entry.segment = APM_CS; for (i = 0; i < NR_CPUS; i++) { - set_base(per_cpu(cpu_gdt_table, i)[APM_CS >> 3], + struct desc_struct *gdt = get_cpu_gdt_table(i); + set_base(gdt[desc_number(APM_CS)], __va((unsigned long)apm_info.bios.cseg << 4)); - set_base(per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], + set_base(gdt[desc_number(APM_CS_16)],...
2007 Apr 18
0
[PATCH 7/12] gdt-accessor
..._DO_RESTORE_SEGS; local_irq_restore(flags); - __get_cpu_var(cpu_gdt_table)[0x40 / 8] = save_desc_40; + gdt[desc_number(0x40)] = save_desc_40; put_cpu(); apm_restore_cpus(cpus); return error; @@ -2295,35 +2298,36 @@ apm_bios_entry.segment = APM_CS; for (i = 0; i < NR_CPUS; i++) { - set_base(per_cpu(cpu_gdt_table, i)[APM_CS >> 3], + struct desc_struct *gdt = get_cpu_gdt_table(i); + set_base(gdt[desc_number(APM_CS)], __va((unsigned long)apm_info.bios.cseg << 4)); - set_base(per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], + set_base(gdt[desc_number(APM_CS_16)],...
2007 Apr 18
1
[PATCH 2/3] Gdt_accessor
...l_irq_restore(flags); - __get_cpu_var(cpu_gdt_table)[0x40 / 8] = save_desc_40; + gdt[0x40 / 8] = save_desc_40; put_cpu(); apm_restore_cpus(cpus); return error; @@ -2295,35 +2298,36 @@ static int __init apm_init(void) apm_bios_entry.segment = APM_CS; for (i = 0; i < NR_CPUS; i++) { - set_base(per_cpu(cpu_gdt_table, i)[APM_CS >> 3], + struct desc_struct *gdt = get_cpu_gdt_table(i); + set_base(gdt[APM_CS >> 3], __va((unsigned long)apm_info.bios.cseg << 4)); - set_base(per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], + set_base(gdt[APM_CS_16 >> 3], __v...
2007 Apr 18
1
[PATCH 2/3] Gdt_accessor
...l_irq_restore(flags); - __get_cpu_var(cpu_gdt_table)[0x40 / 8] = save_desc_40; + gdt[0x40 / 8] = save_desc_40; put_cpu(); apm_restore_cpus(cpus); return error; @@ -2295,35 +2298,36 @@ static int __init apm_init(void) apm_bios_entry.segment = APM_CS; for (i = 0; i < NR_CPUS; i++) { - set_base(per_cpu(cpu_gdt_table, i)[APM_CS >> 3], + struct desc_struct *gdt = get_cpu_gdt_table(i); + set_base(gdt[APM_CS >> 3], __va((unsigned long)apm_info.bios.cseg << 4)); - set_base(per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], + set_base(gdt[APM_CS_16 >> 3], __v...
2007 Apr 18
0
[PATCH 13/21] i386 Gdt page isolation
...5-11-04 17:45:31.000000000 -0800 +++ linux-2.6.14-zach-work/arch/i386/kernel/apm.c 2005-11-04 17:55:24.000000000 -0800 @@ -2256,6 +2256,8 @@ static int __init apm_init(void) */ for (i = 0; i < NR_CPUS; i++) { struct desc_struct *gdt = get_cpu_gdt_table(i); + if (!gdt) + continue; set_base(&gdt[APM_CS >> 3], __va((unsigned long)apm_info.bios.cseg << 4)); set_base(&gdt[APM_CS_16 >> 3], Index: linux-2.6.14-zach-work/arch/i386/kernel/cpu/common.c =================================================================== --- linux-2.6.14-zach-work.orig/arch/i38...
2007 Apr 18
0
[PATCH 13/21] i386 Gdt page isolation
...5-11-04 17:45:31.000000000 -0800 +++ linux-2.6.14-zach-work/arch/i386/kernel/apm.c 2005-11-04 17:55:24.000000000 -0800 @@ -2256,6 +2256,8 @@ static int __init apm_init(void) */ for (i = 0; i < NR_CPUS; i++) { struct desc_struct *gdt = get_cpu_gdt_table(i); + if (!gdt) + continue; set_base(&gdt[APM_CS >> 3], __va((unsigned long)apm_info.bios.cseg << 4)); set_base(&gdt[APM_CS_16 >> 3], Index: linux-2.6.14-zach-work/arch/i386/kernel/cpu/common.c =================================================================== --- linux-2.6.14-zach-work.orig/arch/i38...
2007 Apr 18
0
[PATCH 1/3] Gdt page isolation fix
...========================== --- linux-2.6.14-rc1.orig/drivers/pnp/pnpbios/bioscalls.c 2005-08-28 16:41:01.000000000 -0700 +++ linux-2.6.14-rc1/drivers/pnp/pnpbios/bioscalls.c 2005-09-28 13:13:42.000000000 -0700 @@ -69,14 +69,14 @@ __asm__( #define Q_SET_SEL(cpu, selname, address, size) \ do { \ -set_base(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], __va((u32)(address))); \ -set_limit(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], size); \ +set_base(get_cpu_gdt_table(cpu)[(selname) >> 3], __va((u32)(address))); \ +set_limit(get_cpu_gdt_table(cpu)[(selname) >> 3], size); \ } whil...
2007 Apr 18
0
[PATCH 1/3] Gdt page isolation fix
...========================== --- linux-2.6.14-rc1.orig/drivers/pnp/pnpbios/bioscalls.c 2005-08-28 16:41:01.000000000 -0700 +++ linux-2.6.14-rc1/drivers/pnp/pnpbios/bioscalls.c 2005-09-28 13:13:42.000000000 -0700 @@ -69,14 +69,14 @@ __asm__( #define Q_SET_SEL(cpu, selname, address, size) \ do { \ -set_base(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], __va((u32)(address))); \ -set_limit(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], size); \ +set_base(get_cpu_gdt_table(cpu)[(selname) >> 3], __va((u32)(address))); \ +set_limit(get_cpu_gdt_table(cpu)[(selname) >> 3], size); \ } whil...
2007 Apr 18
2
[PATCH 8/14] i386 / Add a per cpu gdt accessor
...O_RESTORE_SEGS; local_irq_restore(flags); - __get_cpu_var(cpu_gdt_table)[0x40 / 8] = save_desc_40; + gdt[segment_index(0x40)] = save_desc_40; put_cpu(); apm_restore_cpus(cpus); return error; @@ -2295,35 +2298,36 @@ apm_bios_entry.segment = APM_CS; for (i = 0; i < NR_CPUS; i++) { - set_base(per_cpu(cpu_gdt_table, i)[APM_CS >> 3], + struct desc_struct *gdt = get_cpu_gdt_table(i); + set_base(gdt[segment_index(APM_CS)], __va((unsigned long)apm_info.bios.cseg << 4)); - set_base(per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], + set_base(gdt[segment_index(APM_CS_16)],...
2007 Apr 18
2
[PATCH 8/14] i386 / Add a per cpu gdt accessor
...O_RESTORE_SEGS; local_irq_restore(flags); - __get_cpu_var(cpu_gdt_table)[0x40 / 8] = save_desc_40; + gdt[segment_index(0x40)] = save_desc_40; put_cpu(); apm_restore_cpus(cpus); return error; @@ -2295,35 +2298,36 @@ apm_bios_entry.segment = APM_CS; for (i = 0; i < NR_CPUS; i++) { - set_base(per_cpu(cpu_gdt_table, i)[APM_CS >> 3], + struct desc_struct *gdt = get_cpu_gdt_table(i); + set_base(gdt[segment_index(APM_CS)], __va((unsigned long)apm_info.bios.cseg << 4)); - set_base(per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], + set_base(gdt[segment_index(APM_CS_16)],...