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)],...