Commit 1fc53b22 authored by Linus Torvalds's avatar Linus Torvalds

Linux 2.4.0-test9pre1

    - MM balancing (Rik Riel)
    - pcmcia debounce logic. Ugh.
    - 3c59x driver update
    - SysKonnect gigabit driver update
    - ACPI interpreter updates (and file renames - making this part big)
    - don't do notifier locking at low level: higher levels do (or
      should do) this already.
    - truncate unmapped/uptodate case handled correctly
    - IDE driver picks up master/slave relationships on its own.
    - misc small fixes to random drivers by Tigran
    - mktime(). Do it just once - not 16 times.
    - NFS sillyrename fixups
    - acenic update
    - epic100 credits, 8139too driver update, sr.c initcalls
    - name clash in hamradio/pi2.c and hamradio/pt.c
    - sparc64: register window race. Non-deadlock rwlocks.
    - USB: storage update
    - USB: OHCI controller unlink and bandwidth reclamation fixes
parent c8921c7b
......@@ -1728,7 +1728,7 @@ S: 64289 Darmstadt
S: Germany
N: Mark W. McClelland
E: mmcclelland@delphi.com
E: mwm@i.am
E: mark@alpha.dyndns.org
W: http://alpha.dyndns.org/ov511/
D: OV511 driver
......
......@@ -8276,6 +8276,11 @@ CONFIG_SK98LIN
- SK-9844 (dual link 1000Base-SX)
- SK-9821 (single link 1000Base-T)
- SK-9822 (dual link 1000Base-T)
- SK-9861 (single link Volition connector)
- SK-9862 (dual link Volition connector)
The driver also supports the following adapters from Allied Telesyn:
- AT2970...
The dual link adapters support a link-failover feature.
Read Documentation/networking/sk98lin.txt for information about
optional driver parameters.
......
"8139too" Fast Ethernet driver for Linux
Improved support for RTL-8139 Fast Ethernet adapters
Improved support for RTL-8139 10/100 Fast Ethernet adapters
Copyright 2000 Jeff Garzik <jgarzik@mandrakesoft.com>
......@@ -8,6 +8,7 @@
Architectures supported (all PCI platforms):
x86, Alpha AXP, PowerPC, Sparc64
Kernel versions supported: 2.4.x
......@@ -188,6 +189,14 @@ User-mode (or maybe optional /proc) diagnostics program.
Change History
--------------
Version 0.9.9 - September 9, 2000
* Fix oops-able bug in Rx ring wrap calculation (David Ford)
* Use PIO instead of MMIO when USE_IO_OPS is defined
* Move Rx error handling out of Rx interrupt handler, resulting in
tighter Rx interrupt processing
Version 0.9.8 - September 7, 2000
* Propagate request_irq error value (andrew morton)
......
(C)Copyright 1999 SysKonnect.
(C)Copyright 1999-2000 SysKonnect.
===========================================================================
sk98lin.txt created 11-Nov-1999
sk98lin.txt created 12-Sept-2000
Readme File for sk98lin.o v3.04
Readme File for sk98lin.o v3.05
SK-NET Gigabit Ethernet Adapter SK-98xx Driver for Linux
This file contains
......@@ -373,6 +373,12 @@ following information is available:
(8) HISTORY
===========
VERSION 3.05 (In-Kernel version)
Problems fixed:
- Failed for multiple adapters in kernel 2.4.0
New features:
- New versions of several common modules
VERSION 3.04 (In-Kernel version)
Problems fixed:
- Driver start failed on UltraSPARC
......
......@@ -166,8 +166,9 @@ watchdog=N
Sets the time duration (in milliseconds) after which the kernel
decides that the transmitter has become stuck and needs to be reset.
This is mainly for debugging purposes. The default value is 400 (0.4
seconds).
This is mainly for debugging purposes, although it may be advantageous
to increase this value on LANs which have very high collision rates.
The default value is 400 (0.4 seconds).
Additional resources
--------------------
......
......@@ -1152,6 +1152,13 @@ M: jgarzik@mandrakesoft.com
L: linux-tulip@cesdis.gsfc.nasa.gov
S: Maintained
TUN/TAP driver
P: Maxim Krasnyansky
M: maxk@qualcomm.com, max_mk@yahoo.com
L: vtun@office.satix.net
W: http://vtun.sourceforge.net/tun
S: Maintained
U14-34F SCSI DRIVER
P: Dario Ballabio
M: dario@milano.europe.dg.com
......@@ -1228,7 +1235,7 @@ S: Maintained
USB OV511 DRIVER
P: Mark McClelland
M: mmcclelland@delphi.com
M: mwm@i.am
L: linux-usb-users@lists.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net
W: http://alpha.dyndns.org/ov511/
......
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 0
EXTRAVERSION = -test8
EXTRAVERSION = -test9
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
......@@ -135,38 +135,6 @@ void timer_interrupt(int irq, void *dev, struct pt_regs * regs)
write_unlock(&xtime_lock);
}
/*
* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
void
common_init_rtc(void)
{
......
......@@ -64,37 +64,6 @@ static unsigned long dummy_gettimeoffset(void)
*/
unsigned long (*gettimeoffset)(void) = dummy_gettimeoffset;
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
unsigned long
mktime(unsigned int year, unsigned int mon, unsigned int day,
unsigned int hour, unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
/*
* Handle kernel profile stuff...
*/
......
......@@ -504,37 +504,6 @@ static void timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
/* not static: needed by APM */
unsigned long get_cmos_time(void)
{
......
......@@ -98,37 +98,6 @@ phys_reset_system (int reset_type, efi_status_t status,
efi_call_phys(__va(runtime->reset_system), status, data_size, __pa(data));
}
/*
* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long
mktime (unsigned int year, unsigned int mon, unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return ((((unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day)
+ year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
void
efi_gettimeofday (struct timeval *tv)
{
......
......@@ -102,37 +102,6 @@ static void timer_interrupt(int irq, void *dummy, struct pt_regs * regs)
#endif /* CONFIG_HEARTBEAT */
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
void time_init(void)
{
unsigned int year, mon, day, hour, min, sec;
......
......@@ -11,6 +11,7 @@
#include <linux/delay.h>
#include <linux/sched.h>
#include <linux/malloc.h>
#include <linux/time.h>
#include <linux/kd.h>
#include <linux/mm.h>
......@@ -499,37 +500,6 @@ void mac_reset(void)
while(1);
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
/*
* This function translates seconds since 1970 into a proper date.
*
......
......@@ -346,37 +346,6 @@ static void r4k_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
}
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long) (year / 4 - year / 100 + year / 400 + 367 * mon / 12 + day) +
year * 365 - 719499
) * 24 + hour /* now have hours */
) * 60 + min /* now have minutes */
) * 60 + sec; /* finally seconds */
}
char cyclecounter_available;
static inline void init_cycle_counter(void)
......
......@@ -443,37 +443,6 @@ void indy_r4k_timer_interrupt (struct pt_regs *regs)
r4k_timer_interrupt (INDY_R4K_TIMER_IRQ, NULL, regs);
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
char cyclecounter_available;
static inline void init_cycle_counter(void)
......
......@@ -151,37 +151,6 @@ static unsigned long dosample(volatile unsigned char *tcwp,
return ct1 - ct0;
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
static unsigned long __init get_indy_time(void)
{
struct indy_clock *clock = (struct indy_clock *)INDY_CLOCK_REGS;
......
......@@ -151,37 +151,6 @@ static unsigned long dosample(volatile unsigned char *tcwp,
return ct1 - ct0;
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
static unsigned long __init get_indy_time(void)
{
struct indy_clock *clock = (struct indy_clock *)INDY_CLOCK_REGS;
......
......@@ -219,37 +219,6 @@ void do_settimeofday(struct timeval *tv)
#include <asm/sn/sn0/hubio.h>
#include <asm/pci/bridge.h>
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
#define DEBUG_RTC
static unsigned long __init get_m48t35_time(void)
......
......@@ -11,10 +11,6 @@
#include <linux/timex.h>
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec);
unsigned long m68k_get_rtc_time(void)
{
unsigned int year, mon, day, hour, min, sec;
......@@ -37,38 +33,6 @@ int m68k_set_rtc_time(unsigned long nowtime)
return -1;
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
void apus_heartbeat (void)
{
#ifdef CONFIG_HEARTBEAT
......
......@@ -15,6 +15,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/timex.h>
#include <linux/kernel_stat.h>
#include <linux/mc146818rtc.h>
......
......@@ -15,6 +15,7 @@
#include <linux/errno.h>
#include <linux/reboot.h>
#include <linux/pci.h>
#include <linux/time.h>
#include <linux/kdev_t.h>
#include <linux/types.h>
#include <linux/major.h>
......
......@@ -254,7 +254,6 @@ EXPORT_SYMBOL(pmac_xpram_read);
EXPORT_SYMBOL(pmac_xpram_write);
#endif /* CONFIG_NVRAM */
#ifdef CONFIG_PPC_RTC
EXPORT_SYMBOL(mktime);
EXPORT_SYMBOL(to_tm);
#endif
......
......@@ -15,6 +15,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/timex.h>
#include <linux/kernel_stat.h>
#include <linux/init.h>
......
......@@ -232,38 +232,6 @@ void __init time_init(void)
last_rtc_update = 0;
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
#define TICK_SIZE tick
#define FEBRUARY 2
#define STARTOFTIME 1970
......
......@@ -274,37 +274,6 @@ static void timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
write_unlock(&xtime_lock);
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
static unsigned long get_rtc_time(void)
{
unsigned int sec, min, hr, wk, day, mon, yr, yr100;
......
......@@ -149,37 +149,6 @@ void timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
write_unlock(&xtime_lock);
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
/* Kick start a stopped clock (procedure from the Sun NVRAM/hostid FAQ). */
static void __init kick_start_clock(void)
{
......
/* $Id: entry.S,v 1.119 2000/09/06 00:45:01 davem Exp $
/* $Id: entry.S,v 1.120 2000/09/08 13:58:12 jj Exp $
* arch/sparc64/kernel/entry.S: Sparc64 trap low-level entry points.
*
* Copyright (C) 1995,1997 David S. Miller (davem@caip.rutgers.edu)
......@@ -940,8 +940,8 @@ ret_from_syscall:
1: b,pt %xcc, ret_sys_call
ldx [%sp + STACK_BIAS + REGWIN_SZ + PT_V9_I0], %o0
sparc_exit: rdpr %otherwin, %g1
wrpr %g0, (PSTATE_RMO | PSTATE_PEF | PSTATE_PRIV), %pstate
sparc_exit: wrpr %g0, (PSTATE_RMO | PSTATE_PEF | PSTATE_PRIV), %pstate
rdpr %otherwin, %g1
rdpr %cansave, %g3
add %g3, %g1, %g3
wrpr %g3, 0x0, %cansave
......
......@@ -177,37 +177,6 @@ void timer_tick_interrupt(struct pt_regs *regs)
}
#endif
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* WARNING: this function will overflow on 2106-02-07 06:28:16 on
* machines were long is 32-bit! (However, as time_t is signed, we
* will already get problems at other places on 2038-01-19 03:14:08)
*/
static inline unsigned long mktime(unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}
return (((
(unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
/* Kick start a stopped clock (procedure from the Sun NVRAM/hostid FAQ). */
static void __init kick_start_clock(void)
{
......
/* $Id: rwlock.S,v 1.3 2000/03/16 16:44:38 davem Exp $
/* $Id: rwlock.S,v 1.4 2000/09/09 00:00:34 davem Exp $
* rwlocks.S: These things are too big to do inline.
*
* Copyright (C) 1999 David S. Miller (davem@redhat.com)
......@@ -30,54 +30,38 @@ __read_unlock: /* %o0 = lock_ptr */
cmp %g5, %g7
be,pt %xcc, 99b
membar #StoreLoad | #StoreStore
b,a,pt %xcc, __read_unlock
ba,a,pt %xcc, __read_unlock
__read_wait_for_writer:
ldsw [%o0], %g5
brlz,pt %g5, __read_wait_for_writer
membar #LoadLoad
b,a,pt %xcc, 4b
__write_wait_for_writer:
ldsw [%o0], %g5
brlz,pt %g5, __write_wait_for_writer
ba,a,pt %xcc, 4b
__write_wait_for_any:
lduw [%o0], %g5
brnz,pt %g5, __write_wait_for_any
membar #LoadLoad
b,a,pt %xcc, 4f
/* Similarly, 2 cache lines for non-contention write locks. */
ba,a,pt %xcc, 4f
.align 64
.globl __write_unlock
__write_unlock: /* %o0 = lock_ptr */
sethi %hi(0x80000000), %g2
1: lduw [%o0], %g5
andn %g5, %g2, %g7
cas [%o0], %g5, %g7
cmp %g5, %g7
be,pt %icc, 99b
membar #StoreLoad | #StoreStore
b,a,pt %xcc, 1b
membar #LoadStore | #StoreStore
retl
stw %g0, [%o0]
.globl __write_lock
__write_lock: /* %o0 = lock_ptr */
sethi %hi(0x80000000), %g2
1: ldsw [%o0], %g5
4: brnz,pn %g5, 5f
or %g5, %g2, %g7
1: lduw [%o0], %g5
brnz,pn %g5, __write_wait_for_any
4: or %g5, %g2, %g7
cas [%o0], %g5, %g7
cmp %g5, %g7
be,pt %icc, 99b
membar #StoreLoad | #StoreStore
b,a,pt %xcc, 1b
5: brlz %g5, __write_wait_for_writer
or %g5, %g2, %g7
cas [%o0], %g5, %g7
cmp %g5, %g7
bne,pn %icc, 5b
8: ldsw [%o0], %g5
cmp %g5, %g2
be,pn %icc, 99b
membar #LoadLoad
b,a,pt %xcc, 99b
ba,a,pt %xcc, 1b
rwlock_impl_end:
/* $Id: init.c,v 1.154 2000/08/09 00:00:15 davem Exp $
/* $Id: init.c,v 1.155 2000/09/09 00:02:19 davem Exp $
* arch/sparc64/mm/init.c
*
* Copyright (C) 1996-1999 David S. Miller (davem@caip.rutgers.edu)
......
......@@ -2,7 +2,7 @@
# Makefile for the Linux ACPI interpreter
#
SUB_DIRS :=
SUB_DIRS :=
MOD_SUB_DIRS := $(SUB_DIRS)
MOD_IN_SUB_DIRS :=
ALL_SUB_DIRS := $(SUB_DIRS)
......@@ -11,13 +11,22 @@ O_TARGET := acpi.o
O_OBJS :=
M_OBJS :=
ACPI_OBJS := driver.o ec.o cpu.o os.o sys.o tables.o
ACPI_OBJS += $(patsubst %.c,%.o,$(wildcard */*.c))
export ACPI_CFLAGS
ACPI_CFLAGS := -D_LINUX
EXTRA_CFLAGS += -I./include -D_LINUX
EXTRA_CFLAGS += -I./include
EXTRA_CFLAGS += $(ACPI_CFLAGS)
# if the interpreter is used, it overrides arch/i386/kernel/acpi.c
ifeq ($(CONFIG_ACPI_INTERPRETER),y)
SUB_DIRS += common dispatcher events hardware\
interpreter namespace parser resources tables
ACPI_OBJS := $(patsubst %,%.o,$(SUB_DIRS))
ACPI_OBJS += $(patsubst %.c,%.o,$(wildcard *.c))
O_OBJS += $(ACPI_OBJS)
endif
......
#
# Makefile for all Linux ACPI interpreter subdirectories
#
SUB_DIRS :=
MOD_SUB_DIRS := $(SUB_DIRS)
MOD_IN_SUB_DIRS :=
ALL_SUB_DIRS := $(SUB_DIRS)
O_TARGET := ../$(shell basename `pwd`).o
O_OBJS :=
M_OBJS :=
ACPI_OBJS := $(patsubst %.c,%.o,$(wildcard *.c))
EXTRA_CFLAGS += -I../include
EXTRA_CFLAGS += $(ACPI_CFLAGS)
# if the interpreter is used, it overrides arch/i386/kernel/acpi.c
ifeq ($(CONFIG_ACPI_INTERPRETER),y)
O_OBJS := $(ACPI_OBJS)
endif
include $(TOPDIR)/Rules.make
clean:
$(RM) *.o
/******************************************************************************
*
* Module Name: cmalloc - local memory allocation routines
* $Revision: 73 $
*
*****************************************************************************/
......@@ -24,13 +25,13 @@
#include "acpi.h"
#include "parser.h"
#include "interp.h"
#include "namesp.h"
#include "globals.h"
#include "acparser.h"
#include "acinterp.h"
#include "acnamesp.h"
#include "acglobal.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmalloc");
MODULE_NAME ("cmalloc")
/*****************************************************************************
......@@ -52,8 +53,8 @@ void *
_cm_allocate (
u32 size,
u32 component,
ACPI_STRING module,
s32 line)
NATIVE_CHAR *module,
u32 line)
{
void *address = NULL;
......@@ -98,8 +99,8 @@ void *
_cm_callocate (
u32 size,
u32 component,
ACPI_STRING module,
s32 line)
NATIVE_CHAR *module,
u32 line)
{
void *address = NULL;
......@@ -146,8 +147,8 @@ void
_cm_free (
void *address,
u32 component,
ACPI_STRING module,
s32 line)
NATIVE_CHAR *module,
u32 line)
{
if (NULL == address) {
......
This diff is collapsed.
/******************************************************************************
*
* Module Name: cmcopy - Internal to external object translation utilities
* $Revision: 56 $
*
*****************************************************************************/
......@@ -24,17 +25,17 @@
#include "acpi.h"
#include "interp.h"
#include "namesp.h"
#include "acinterp.h"
#include "acnamesp.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmcopy");
MODULE_NAME ("cmcopy")
typedef struct search_st
{
ACPI_OBJECT_INTERNAL *internal_obj;
ACPI_OPERAND_OBJECT *internal_obj;
u32 index;
ACPI_OBJECT *external_obj;
......@@ -64,13 +65,13 @@ PKG_SEARCH_INFO level[MAX_PACKAGE_DEPTH];
ACPI_STATUS
acpi_cm_build_external_simple_object (
ACPI_OBJECT_INTERNAL *internal_obj,
ACPI_OPERAND_OBJECT *internal_obj,
ACPI_OBJECT *external_obj,
u8 *data_space,
u32 *buffer_space_used)
{
u32 length = 0;
char *source_ptr = NULL;
u8 *source_ptr = NULL;
/*
......@@ -103,8 +104,8 @@ acpi_cm_build_external_simple_object (
length = internal_obj->string.length;
external_obj->string.length = internal_obj->string.length;
external_obj->string.pointer = (char *) data_space;
source_ptr = internal_obj->string.pointer;
external_obj->string.pointer = (NATIVE_CHAR *) data_space;
source_ptr = (u8 *) internal_obj->string.pointer;
break;
......@@ -113,7 +114,7 @@ acpi_cm_build_external_simple_object (
length = internal_obj->buffer.length;
external_obj->buffer.length = internal_obj->buffer.length;
external_obj->buffer.pointer = data_space;
source_ptr = (char *) internal_obj->buffer.pointer;
source_ptr = (u8 *) internal_obj->buffer.pointer;
break;
......@@ -132,7 +133,7 @@ acpi_cm_build_external_simple_object (
*/
external_obj->type = ACPI_TYPE_ANY;
external_obj->reference.handle = internal_obj->reference.nte;
external_obj->reference.handle = internal_obj->reference.node;
break;
......@@ -142,10 +143,10 @@ acpi_cm_build_external_simple_object (
internal_obj->processor.proc_id;
external_obj->processor.pblk_address =
internal_obj->processor.pblk_address;
internal_obj->processor.address;
external_obj->processor.pblk_length =
internal_obj->processor.pblk_length;
internal_obj->processor.length;
break;
case ACPI_TYPE_POWER:
......@@ -200,7 +201,7 @@ acpi_cm_build_external_simple_object (
ACPI_STATUS
acpi_cm_build_external_package_object (
ACPI_OBJECT_INTERNAL *internal_obj,
ACPI_OPERAND_OBJECT *internal_obj,
u8 *buffer,
u32 *space_used)
{
......@@ -211,7 +212,7 @@ acpi_cm_build_external_package_object (
u32 length = 0;
u32 this_index;
u32 object_space;
ACPI_OBJECT_INTERNAL *this_internal_obj;
ACPI_OPERAND_OBJECT *this_internal_obj;
ACPI_OBJECT *this_external_obj;
PKG_SEARCH_INFO *level_ptr;
......@@ -256,7 +257,7 @@ acpi_cm_build_external_package_object (
while (1) {
this_index = level_ptr->index;
this_internal_obj =
(ACPI_OBJECT_INTERNAL *)
(ACPI_OPERAND_OBJECT *)
level_ptr->internal_obj->package.elements[this_index];
this_external_obj =
(ACPI_OBJECT *)
......@@ -264,10 +265,11 @@ acpi_cm_build_external_package_object (
/*
* Check for 1) Null object -- OK, this can happen if package
* Check for
* 1) Null object -- OK, this can happen if package
* element is never initialized
* 2) Not an internal object - can be an NTE instead
* 3) Any internal object other than a package.
* 2) Not an internal object - can be Node instead
* 3) Any internal object other than a package.
*
* The more complex package case is handled later
*/
......@@ -367,8 +369,6 @@ acpi_cm_build_external_package_object (
level_ptr->index = 0;
}
}
return (AE_OK);
}
......@@ -388,7 +388,7 @@ acpi_cm_build_external_package_object (
ACPI_STATUS
acpi_cm_build_external_object (
ACPI_OBJECT_INTERNAL *internal_obj,
ACPI_OPERAND_OBJECT *internal_obj,
ACPI_BUFFER *ret_buffer)
{
ACPI_STATUS status;
......@@ -446,7 +446,7 @@ acpi_cm_build_external_object (
ACPI_STATUS
acpi_cm_build_internal_simple_object (
ACPI_OBJECT *external_obj,
ACPI_OBJECT_INTERNAL *internal_obj)
ACPI_OPERAND_OBJECT *internal_obj)
{
......@@ -508,18 +508,17 @@ acpi_cm_build_internal_simple_object (
ACPI_STATUS
acpi_cm_build_internal_package_object (
ACPI_OBJECT_INTERNAL *internal_obj,
ACPI_OPERAND_OBJECT *internal_obj,
u8 *buffer,
u32 *space_used)
{
u8 *free_space;
ACPI_OBJECT *external_obj;
u32 current_depth = 0;
ACPI_STATUS status = AE_OK;
u32 length = 0;
u32 this_index;
u32 object_space = 0;
ACPI_OBJECT_INTERNAL *this_internal_obj;
ACPI_OPERAND_OBJECT *this_internal_obj;
ACPI_OBJECT *this_external_obj;
PKG_SEARCH_INFO *level_ptr;
......@@ -562,7 +561,7 @@ acpi_cm_build_internal_package_object (
while (1) {
this_index = level_ptr->index;
this_internal_obj = (ACPI_OBJECT_INTERNAL *)
this_internal_obj = (ACPI_OPERAND_OBJECT *)
&level_ptr->internal_obj->package.elements[this_index];
this_external_obj = (ACPI_OBJECT *)
......@@ -605,17 +604,6 @@ acpi_cm_build_internal_package_object (
} /* if object is a package */
else {
/* Status = Acpi_cm_build_simple_object(This_internal_obj,
This_external_obj, Free_space,
&Object_space);
*/
if (status != AE_OK) {
/*
* Failure get out
*/
return (status);
}
free_space += object_space;
length += object_space;
......@@ -651,13 +639,6 @@ acpi_cm_build_internal_package_object (
}
} /* else object is NOT a package */
} /* while (1) */
/*
* We'll never get here, but the compiler whines about
* return value
*/
return (AE_OK);
}
......@@ -677,7 +658,7 @@ acpi_cm_build_internal_package_object (
ACPI_STATUS
acpi_cm_build_internal_object (
ACPI_OBJECT *external_obj,
ACPI_OBJECT_INTERNAL *internal_obj)
ACPI_OPERAND_OBJECT *internal_obj)
{
ACPI_STATUS status;
......
/******************************************************************************
*
* Module Name: cmdebug - Debug print routines
* $Revision: 60 $
*
*****************************************************************************/
......@@ -27,7 +27,7 @@
#include "acpi.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmdebug");
MODULE_NAME ("cmdebug")
/*****************************************************************************
......@@ -41,16 +41,16 @@
****************************************************************************/
s32
u32
get_debug_level (void)
{
return acpi_dbg_level;
return (acpi_dbg_level);
}
void
set_debug_level (
s32 new_debug_level)
u32 new_debug_level)
{
acpi_dbg_level = new_debug_level;
......@@ -75,10 +75,10 @@ set_debug_level (
void
function_trace (
char *module_name,
s32 line_number,
s32 component_id,
char *function_name)
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
NATIVE_CHAR *function_name)
{
acpi_gbl_nesting_level++;
......@@ -109,10 +109,10 @@ function_trace (
void
function_trace_ptr (
char *module_name,
s32 line_number,
s32 component_id,
char *function_name,
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
NATIVE_CHAR *function_name,
void *pointer)
{
......@@ -142,11 +142,11 @@ function_trace_ptr (
void
function_trace_str (
char *module_name,
s32 line_number,
s32 component_id,
char *function_name,
char *string)
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
NATIVE_CHAR *function_name,
NATIVE_CHAR *string)
{
acpi_gbl_nesting_level++;
......@@ -175,16 +175,16 @@ function_trace_str (
void
function_trace_u32 (
char *module_name,
s32 line_number,
s32 component_id,
char *function_name,
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
NATIVE_CHAR *function_name,
u32 integer)
{
acpi_gbl_nesting_level++;
debug_print (module_name, line_number, component_id, TRACE_FUNCTIONS,
" %2.2ld Entered Function: %s, 0x%l_x\n",
" %2.2ld Entered Function: %s, 0x%lX\n",
acpi_gbl_nesting_level, function_name, integer);
}
......@@ -207,10 +207,10 @@ function_trace_u32 (
void
function_exit (
char *module_name,
s32 line_number,
s32 component_id,
char *function_name)
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
NATIVE_CHAR *function_name)
{
debug_print (module_name, line_number, component_id, TRACE_FUNCTIONS,
......@@ -240,30 +240,19 @@ function_exit (
void
function_status_exit (
char *module_name,
s32 line_number,
s32 component_id,
char *function_name,
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
NATIVE_CHAR *function_name,
ACPI_STATUS status)
{
if (status > ACPI_MAX_STATUS) {
debug_print (module_name, line_number, component_id,
TRACE_FUNCTIONS,
" %2.2ld Exiting Function: %s, [Unknown Status] 0x%X\n",
acpi_gbl_nesting_level,
function_name,
status);
}
else {
debug_print (module_name, line_number, component_id,
TRACE_FUNCTIONS,
" %2.2ld Exiting Function: %s, %s\n",
acpi_gbl_nesting_level,
function_name,
acpi_cm_format_exception (status));
}
debug_print (module_name, line_number, component_id,
TRACE_FUNCTIONS,
" %2.2ld Exiting Function: %s, %s\n",
acpi_gbl_nesting_level,
function_name,
acpi_cm_format_exception (status));
acpi_gbl_nesting_level--;
}
......@@ -288,10 +277,10 @@ function_status_exit (
void
function_value_exit (
char *module_name,
s32 line_number,
s32 component_id,
char *function_name,
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
NATIVE_CHAR *function_name,
NATIVE_UINT value)
{
......@@ -322,11 +311,11 @@ function_value_exit (
void
function_ptr_exit (
char *module_name,
s32 line_number,
s32 component_id,
char *function_name,
char *ptr)
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
NATIVE_CHAR *function_name,
u8 *ptr)
{
debug_print (module_name, line_number, component_id, TRACE_FUNCTIONS,
......@@ -357,11 +346,11 @@ function_ptr_exit (
void
debug_print (
char *module_name,
s32 line_number,
s32 component_id,
s32 print_level,
char *format,
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
u32 print_level,
NATIVE_CHAR *format,
...)
{
va_list args;
......@@ -397,8 +386,8 @@ debug_print (
void
debug_print_prefix (
char *module_name,
s32 line_number)
NATIVE_CHAR *module_name,
u32 line_number)
{
......@@ -421,7 +410,7 @@ debug_print_prefix (
void
debug_print_raw (
char *format,
NATIVE_CHAR *format,
...)
{
va_list args;
......@@ -451,10 +440,10 @@ debug_print_raw (
void
acpi_cm_dump_buffer (
char *buffer,
u8 *buffer,
u32 count,
u32 display,
s32 component_id)
u32 component_id)
{
u32 i = 0;
u32 j;
......@@ -477,7 +466,7 @@ acpi_cm_dump_buffer (
while (i < count) {
/* Print current offset */
acpi_os_printf ("%05_x ", i);
acpi_os_printf ("%05X ", i);
/* Print 16 hex chars */
......@@ -488,7 +477,7 @@ acpi_cm_dump_buffer (
return;
}
/* Make sure that the char doesn't get sign-extended! */
/* Make sure that the s8 doesn't get sign-extended! */
switch (display)
{
......@@ -496,7 +485,7 @@ acpi_cm_dump_buffer (
default:
acpi_os_printf ("%02_x ",
acpi_os_printf ("%02X ",
*((u8 *) &buffer[i + j]));
j += 1;
break;
......@@ -506,7 +495,7 @@ acpi_cm_dump_buffer (
MOVE_UNALIGNED16_TO_32 (&temp32,
&buffer[i + j]);
acpi_os_printf ("%04_x ", temp32);
acpi_os_printf ("%04X ", temp32);
j += 2;
break;
......@@ -515,7 +504,7 @@ acpi_cm_dump_buffer (
MOVE_UNALIGNED32_TO_32 (&temp32,
&buffer[i + j]);
acpi_os_printf ("%08_x ", temp32);
acpi_os_printf ("%08X ", temp32);
j += 4;
break;
......@@ -524,11 +513,11 @@ acpi_cm_dump_buffer (
MOVE_UNALIGNED32_TO_32 (&temp32,
&buffer[i + j]);
acpi_os_printf ("%08_x", temp32);
acpi_os_printf ("%08X", temp32);
MOVE_UNALIGNED32_TO_32 (&temp32,
&buffer[i + j + 4]);
acpi_os_printf ("%08_x ", temp32);
acpi_os_printf ("%08X ", temp32);
j += 8;
break;
}
......
/******************************************************************************
*
* Module Name: cmdelete - object deletion and reference count utilities
* $Revision: 53 $
*
*****************************************************************************/
......@@ -25,13 +25,13 @@
#include "acpi.h"
#include "interp.h"
#include "namesp.h"
#include "tables.h"
#include "parser.h"
#include "acinterp.h"
#include "acnamesp.h"
#include "actables.h"
#include "acparser.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmdelete");
MODULE_NAME ("cmdelete")
/******************************************************************************
......@@ -49,7 +49,7 @@
void
acpi_cm_delete_internal_obj (
ACPI_OBJECT_INTERNAL *object)
ACPI_OPERAND_OBJECT *object)
{
void *obj_pointer = NULL;
......@@ -110,14 +110,7 @@ acpi_cm_delete_internal_obj (
case ACPI_TYPE_METHOD:
/* Delete parse tree if it exists */
if (object->method.parser_op) {
acpi_ps_delete_parse_tree (object->method.parser_op);
object->method.parser_op = NULL;
}
/* Delete semaphore if it exists */
/* Delete the method semaphore if it exists */
if (object->method.semaphore) {
acpi_os_delete_semaphore (object->method.semaphore);
......@@ -146,7 +139,7 @@ acpi_cm_delete_internal_obj (
/* Only delete the object if it was dynamically allocated */
if (!(object->common.flags & AO_STATIC_ALLOCATION)) {
if (!(object->common.flags & AOPOBJ_STATIC_ALLOCATION)) {
acpi_cm_delete_object_desc (object);
}
......@@ -170,9 +163,9 @@ acpi_cm_delete_internal_obj (
ACPI_STATUS
acpi_cm_delete_internal_object_list (
ACPI_OBJECT_INTERNAL **obj_list)
ACPI_OPERAND_OBJECT **obj_list)
{
ACPI_OBJECT_INTERNAL **internal_obj;
ACPI_OPERAND_OBJECT **internal_obj;
/* Walk the null-terminated internal list */
......@@ -220,8 +213,8 @@ acpi_cm_delete_internal_object_list (
void
acpi_cm_update_ref_count (
ACPI_OBJECT_INTERNAL *object,
s32 action)
ACPI_OPERAND_OBJECT *object,
u32 action)
{
u16 count;
u16 new_count;
......@@ -308,23 +301,23 @@ acpi_cm_update_ref_count (
* DESCRIPTION: Increment the object reference count
*
* Object references are incremented when:
* 1) An object is added as a value in an Name Table Entry (NTE)
* 1) An object is attached to a Node (namespace object)
* 2) An object is copied (all subobjects must be incremented)
*
* Object references are decremented when:
* 1) An object is removed from an NTE
* 1) An object is detached from an Node
*
******************************************************************************/
ACPI_STATUS
acpi_cm_update_object_reference (
ACPI_OBJECT_INTERNAL *object,
ACPI_OPERAND_OBJECT *object,
u16 action)
{
ACPI_STATUS status;
u32 i;
ACPI_OBJECT_INTERNAL *next;
ACPI_OBJECT_INTERNAL *new;
ACPI_OPERAND_OBJECT *next;
ACPI_OPERAND_OBJECT *new;
ACPI_GENERIC_STATE *state_list = NULL;
ACPI_GENERIC_STATE *state;
......@@ -381,9 +374,9 @@ acpi_cm_update_object_reference (
/* Must walk list of address handlers */
next = object->addr_handler.link;
next = object->addr_handler.next;
while (next) {
new = next->addr_handler.link;
new = next->addr_handler.next;
acpi_cm_update_ref_count (next, action);
next = new;
......@@ -512,7 +505,7 @@ acpi_cm_update_object_reference (
void
acpi_cm_add_reference (
ACPI_OBJECT_INTERNAL *object)
ACPI_OPERAND_OBJECT *object)
{
......@@ -549,7 +542,7 @@ acpi_cm_add_reference (
void
acpi_cm_remove_reference (
ACPI_OBJECT_INTERNAL *object)
ACPI_OPERAND_OBJECT *object)
{
......
/******************************************************************************
*
* Module Name: cmeval - Object evaluation
* $Revision: 14 $
*
*****************************************************************************/
......@@ -25,19 +25,19 @@
#include "acpi.h"
#include "namesp.h"
#include "interp.h"
#include "acnamesp.h"
#include "acinterp.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmeval");
MODULE_NAME ("cmeval")
/****************************************************************************
*
* FUNCTION: Acpi_cm_evaluate_numeric_object
*
* PARAMETERS: Acpi_device - NTE for the device
* PARAMETERS: Device_node - Node for the device
* *Address - Where the value is returned
*
* RETURN: Status
......@@ -51,17 +51,17 @@
ACPI_STATUS
acpi_cm_evaluate_numeric_object (
char *object_name,
ACPI_NAMED_OBJECT *acpi_device,
NATIVE_CHAR *object_name,
ACPI_NAMESPACE_NODE *device_node,
u32 *address)
{
ACPI_OBJECT_INTERNAL *obj_desc;
ACPI_OPERAND_OBJECT *obj_desc;
ACPI_STATUS status;
/* Execute the method */
status = acpi_ns_evaluate_relative (acpi_device, object_name, NULL, &obj_desc);
status = acpi_ns_evaluate_relative (device_node, object_name, NULL, &obj_desc);
if (ACPI_FAILURE (status)) {
return (status);
......@@ -99,7 +99,7 @@ acpi_cm_evaluate_numeric_object (
*
* FUNCTION: Acpi_cm_execute_HID
*
* PARAMETERS: Acpi_device - NTE for the device
* PARAMETERS: Device_node - Node for the device
* *Hid - Where the HID is returned
*
* RETURN: Status
......@@ -113,16 +113,16 @@ acpi_cm_evaluate_numeric_object (
ACPI_STATUS
acpi_cm_execute_HID (
ACPI_NAMED_OBJECT *acpi_device,
ACPI_NAMESPACE_NODE *device_node,
DEVICE_ID *hid)
{
ACPI_OBJECT_INTERNAL *obj_desc;
ACPI_OPERAND_OBJECT *obj_desc;
ACPI_STATUS status;
/* Execute the method */
status = acpi_ns_evaluate_relative (acpi_device,
status = acpi_ns_evaluate_relative (device_node,
METHOD_NAME__HID, NULL, &obj_desc);
if (ACPI_FAILURE (status)) {
......@@ -176,7 +176,7 @@ acpi_cm_execute_HID (
*
* FUNCTION: Acpi_cm_execute_UID
*
* PARAMETERS: Acpi_device - NTE for the device
* PARAMETERS: Device_node - Node for the device
* *Uid - Where the UID is returned
*
* RETURN: Status
......@@ -190,16 +190,16 @@ acpi_cm_execute_HID (
ACPI_STATUS
acpi_cm_execute_UID (
ACPI_NAMED_OBJECT *acpi_device,
ACPI_NAMESPACE_NODE *device_node,
DEVICE_ID *uid)
{
ACPI_OBJECT_INTERNAL *obj_desc;
ACPI_OPERAND_OBJECT *obj_desc;
ACPI_STATUS status;
/* Execute the method */
status = acpi_ns_evaluate_relative (acpi_device,
status = acpi_ns_evaluate_relative (device_node,
METHOD_NAME__UID, NULL, &obj_desc);
if (ACPI_FAILURE (status)) {
......@@ -251,7 +251,7 @@ acpi_cm_execute_UID (
*
* FUNCTION: Acpi_cm_execute_STA
*
* PARAMETERS: Acpi_device - NTE for the device
* PARAMETERS: Device_node - Node for the device
* *Flags - Where the status flags are returned
*
* RETURN: Status
......@@ -265,16 +265,16 @@ acpi_cm_execute_UID (
ACPI_STATUS
acpi_cm_execute_STA (
ACPI_NAMED_OBJECT *acpi_device,
ACPI_NAMESPACE_NODE *device_node,
u32 *flags)
{
ACPI_OBJECT_INTERNAL *obj_desc;
ACPI_OPERAND_OBJECT *obj_desc;
ACPI_STATUS status;
/* Execute the method */
status = acpi_ns_evaluate_relative (acpi_device,
status = acpi_ns_evaluate_relative (device_node,
METHOD_NAME__STA, NULL, &obj_desc);
if (ACPI_FAILURE (status)) {
......
/******************************************************************************
*
* Module Name: cmglobal - Global variables for the ACPI subsystem
* $Revision: 99 $
*
*****************************************************************************/
......@@ -26,13 +26,13 @@
#define DEFINE_ACPI_GLOBALS
#include "acpi.h"
#include "events.h"
#include "namesp.h"
#include "interp.h"
#include "acevents.h"
#include "acnamesp.h"
#include "acinterp.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmglobal");
MODULE_NAME ("cmglobal")
/******************************************************************************
......@@ -126,31 +126,25 @@ u8 acpi_gbl_ns_properties[] =
NSP_NEWSCOPE | NSP_LOCAL, /* 13 Thermal */
NSP_NORMAL, /* 14 Buffer_field */
NSP_NORMAL, /* 15 Ddb_handle */
NSP_NORMAL, /* 16 reserved */
NSP_NORMAL, /* 17 reserved */
NSP_NORMAL, /* 18 reserved */
NSP_NORMAL, /* 19 reserved */
NSP_NORMAL, /* 20 reserved */
NSP_NORMAL, /* 21 reserved */
NSP_NORMAL, /* 22 reserved */
NSP_NORMAL, /* 23 reserved */
NSP_NORMAL, /* 24 reserved */
NSP_NORMAL, /* 25 Def_field */
NSP_NORMAL, /* 26 Bank_field */
NSP_NORMAL, /* 27 Index_field */
NSP_NORMAL, /* 28 Def_field_defn */
NSP_NORMAL, /* 29 Bank_field_defn */
NSP_NORMAL, /* 30 Index_field_defn */
NSP_NORMAL, /* 31 If */
NSP_NORMAL, /* 32 Else */
NSP_NORMAL, /* 33 While */
NSP_NEWSCOPE, /* 34 Scope */
NSP_LOCAL, /* 35 Def_any */
NSP_NORMAL, /* 36 Reference */
NSP_NORMAL, /* 37 Alias */
NSP_NORMAL, /* 38 Notify */
NSP_NORMAL, /* 39 Address Handler */
NSP_NORMAL /* 40 Invalid */
NSP_NORMAL, /* 16 Debug Object */
NSP_NORMAL, /* 17 Def_field */
NSP_NORMAL, /* 18 Bank_field */
NSP_NORMAL, /* 19 Index_field */
NSP_NORMAL, /* 20 Reference */
NSP_NORMAL, /* 21 Alias */
NSP_NORMAL, /* 22 Notify */
NSP_NORMAL, /* 23 Address Handler */
NSP_NORMAL, /* 24 Def_field_defn */
NSP_NORMAL, /* 25 Bank_field_defn */
NSP_NORMAL, /* 26 Index_field_defn */
NSP_NORMAL, /* 27 If */
NSP_NORMAL, /* 28 Else */
NSP_NORMAL, /* 29 While */
NSP_NEWSCOPE, /* 30 Scope */
NSP_LOCAL, /* 31 Def_any */
NSP_NORMAL, /* 32 Method Arg */
NSP_NORMAL, /* 33 Method Local */
NSP_NORMAL /* 34 Invalid */
};
......@@ -204,11 +198,11 @@ acpi_cm_valid_object_type (
if ((type < INTERNAL_TYPE_BEGIN) ||
(type > INTERNAL_TYPE_MAX))
{
return FALSE;
return (FALSE);
}
}
return TRUE;
return (TRUE);
}
......@@ -224,16 +218,60 @@ acpi_cm_valid_object_type (
*
****************************************************************************/
char *
NATIVE_CHAR *
acpi_cm_format_exception (
ACPI_STATUS status)
{
NATIVE_CHAR *exception = "UNKNOWN_STATUS";
ACPI_STATUS sub_status;
sub_status = (status & ~AE_CODE_MASK);
if (status > ACPI_MAX_STATUS) {
return "UNKNOWN_STATUS";
switch (status & AE_CODE_MASK)
{
case AE_CODE_ENVIRONMENTAL:
if (sub_status <= AE_CODE_ENV_MAX) {
exception = acpi_gbl_exception_names_env [sub_status];
}
break;
case AE_CODE_PROGRAMMER:
if (sub_status <= AE_CODE_PGM_MAX) {
exception = acpi_gbl_exception_names_pgm [sub_status -1];
}
break;
case AE_CODE_ACPI_TABLES:
if (sub_status <= AE_CODE_TBL_MAX) {
exception = acpi_gbl_exception_names_tbl [sub_status -1];
}
break;
case AE_CODE_AML:
if (sub_status <= AE_CODE_AML_MAX) {
exception = acpi_gbl_exception_names_aml [sub_status -1];
}
break;
case AE_CODE_CONTROL:
if (sub_status <= AE_CODE_CTRL_MAX) {
exception = acpi_gbl_exception_names_ctrl [sub_status -1];
}
break;
default:
break;
}
return (acpi_gbl_exception_names [status]);
return (exception);
}
......@@ -389,6 +427,11 @@ acpi_cm_init_globals (ACPI_INIT_DATA *init_data)
acpi_gbl_parse_cache_requests = 0;
acpi_gbl_parse_cache_hits = 0;
acpi_gbl_ext_parse_cache = NULL;
acpi_gbl_ext_parse_cache_depth = 0;
acpi_gbl_ext_parse_cache_requests = 0;
acpi_gbl_ext_parse_cache_hits = 0;
acpi_gbl_object_cache = NULL;
acpi_gbl_object_cache_depth = 0;
acpi_gbl_object_cache_requests = 0;
......@@ -402,7 +445,7 @@ acpi_cm_init_globals (ACPI_INIT_DATA *init_data)
/* Interpreter */
acpi_gbl_buf_seq = 0;
acpi_gbl_named_object_err = FALSE;
acpi_gbl_node_err = FALSE;
/* Parser */
......@@ -418,18 +461,15 @@ acpi_cm_init_globals (ACPI_INIT_DATA *init_data)
/* Namespace */
acpi_gbl_root_name_table.next_table = NULL;
acpi_gbl_root_name_table.parent_entry = NULL;
acpi_gbl_root_name_table.parent_table = NULL;
acpi_gbl_root_object = acpi_gbl_root_name_table.entries;
acpi_gbl_root_node = NULL;
acpi_gbl_root_object->name = ACPI_ROOT_NAME;
acpi_gbl_root_object->data_type = ACPI_DESC_TYPE_NAMED;
acpi_gbl_root_object->type = ACPI_TYPE_ANY;
acpi_gbl_root_object->this_index = 0;
acpi_gbl_root_object->child_table = NULL;
acpi_gbl_root_object->object = NULL;
acpi_gbl_root_node_struct.name = ACPI_ROOT_NAME;
acpi_gbl_root_node_struct.data_type = ACPI_DESC_TYPE_NAMED;
acpi_gbl_root_node_struct.type = ACPI_TYPE_ANY;
acpi_gbl_root_node_struct.child = NULL;
acpi_gbl_root_node_struct.peer = NULL;
acpi_gbl_root_node_struct.object = NULL;
acpi_gbl_root_node_struct.flags = ANOBJ_END_OF_PEER_LIST;
/* Memory allocation metrics - compiled out in non-debug mode. */
......
/******************************************************************************
*
* Module Name: cminit - Common ACPI subsystem initialization
* $Revision: 79 $
*
*****************************************************************************/
......@@ -25,14 +25,14 @@
#include "acpi.h"
#include "hardware.h"
#include "namesp.h"
#include "events.h"
#include "parser.h"
#include "dispatch.h"
#include "achware.h"
#include "acnamesp.h"
#include "acevents.h"
#include "acparser.h"
#include "acdispat.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cminit");
MODULE_NAME ("cminit")
/*******************************************************************************
......@@ -52,7 +52,7 @@
void
acpi_cm_facp_register_error (
char *register_name,
NATIVE_CHAR *register_name,
u32 value)
{
......@@ -77,7 +77,7 @@ ACPI_STATUS
acpi_cm_hardware_initialize (void)
{
ACPI_STATUS status = AE_OK;
s32 index;
u32 index;
/* Are we running on the actual hardware */
......@@ -351,8 +351,9 @@ acpi_cm_subsystem_shutdown (void)
acpi_ps_delete_parse_cache ();
/* Debug only - display leftover memory allocation, if any */
#ifdef ENABLE_DEBUGGER
acpi_cm_dump_current_allocations (ACPI_UINT32_MAX, NULL);
#endif
BREAKPOINT3;
......
/******************************************************************************
*
* Module Name: cmobject - ACPI object create/delete/size/cache routines
* $Revision: 27 $
*
*****************************************************************************/
......@@ -25,14 +25,14 @@
#include "acpi.h"
#include "interp.h"
#include "namesp.h"
#include "tables.h"
#include "acinterp.h"
#include "acnamesp.h"
#include "actables.h"
#include "amlcode.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmobject");
MODULE_NAME ("cmobject")
/******************************************************************************
......@@ -57,14 +57,14 @@
*
******************************************************************************/
ACPI_OBJECT_INTERNAL *
ACPI_OPERAND_OBJECT *
_cm_create_internal_object (
char *module_name,
s32 line_number,
s32 component_id,
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id,
OBJECT_TYPE_INTERNAL type)
{
ACPI_OBJECT_INTERNAL *object;
ACPI_OPERAND_OBJECT *object;
/* Allocate the raw object descriptor */
......@@ -79,7 +79,6 @@ _cm_create_internal_object (
/* Save the object type in the object descriptor */
object->common.type = type;
object->common.size = (u8) sizeof (ACPI_OBJECT_INTERNAL);
/* Init the reference count */
......@@ -88,10 +87,6 @@ _cm_create_internal_object (
/* Any per-type initialization should go here */
/* Memory allocation metrics - compiled out in non debug mode. */
INCREMENT_OBJECT_METRICS (sizeof (ACPI_OBJECT_INTERNAL));
return (object);
}
......@@ -102,7 +97,7 @@ _cm_create_internal_object (
*
* PARAMETERS: Operand - Object to be validated
*
* RETURN: Validate a pointer to be an ACPI_OBJECT_INTERNAL
* RETURN: Validate a pointer to be an ACPI_OPERAND_OBJECT
*
*****************************************************************************/
......@@ -114,13 +109,13 @@ acpi_cm_valid_internal_object (
/* Check for a null pointer */
if (!object) {
return FALSE;
return (FALSE);
}
/* Check for a pointer within one of the ACPI tables */
if (acpi_tb_system_table_pointer (object)) {
return FALSE;
return (FALSE);
}
/* Check the descriptor type field */
......@@ -131,13 +126,13 @@ acpi_cm_valid_internal_object (
return FALSE;
return (FALSE);
}
/* The object appears to be a valid ACPI_OBJECT_INTERNAL */
/* The object appears to be a valid ACPI_OPERAND_OBJECT */
return TRUE;
return (TRUE);
}
......@@ -159,11 +154,11 @@ acpi_cm_valid_internal_object (
void *
_cm_allocate_object_desc (
char *module_name,
s32 line_number,
s32 component_id)
NATIVE_CHAR *module_name,
u32 line_number,
u32 component_id)
{
ACPI_OBJECT_INTERNAL *object;
ACPI_OPERAND_OBJECT *object;
acpi_cm_acquire_mutex (ACPI_MTX_CACHES);
......@@ -176,8 +171,8 @@ _cm_allocate_object_desc (
/* There is an object available, use it */
object = acpi_gbl_object_cache;
acpi_gbl_object_cache = object->common.next;
object->common.next = NULL;
acpi_gbl_object_cache = object->cache.next;
object->cache.next = NULL;
acpi_gbl_object_cache_hits++;
acpi_gbl_object_cache_depth--;
......@@ -192,9 +187,8 @@ _cm_allocate_object_desc (
/* Attempt to allocate new descriptor */
object = _cm_callocate (sizeof (ACPI_OBJECT_INTERNAL), component_id,
object = _cm_callocate (sizeof (ACPI_OPERAND_OBJECT), component_id,
module_name, line_number);
if (!object) {
/* Allocation failed */
......@@ -203,6 +197,10 @@ _cm_allocate_object_desc (
return (NULL);
}
/* Memory allocation metrics - compiled out in non debug mode. */
INCREMENT_OBJECT_METRICS (sizeof (ACPI_OPERAND_OBJECT));
}
/* Mark the descriptor type */
......@@ -227,19 +225,19 @@ _cm_allocate_object_desc (
void
acpi_cm_delete_object_desc (
ACPI_OBJECT_INTERNAL *object)
ACPI_OPERAND_OBJECT *object)
{
/* Object must be an ACPI_OBJECT_INTERNAL */
/* Make sure that the object isn't already in the cache */
if (object->common.data_type != ACPI_DESC_TYPE_INTERNAL) {
if (object->common.data_type == (ACPI_DESC_TYPE_INTERNAL | ACPI_CACHED_OBJECT)) {
return;
}
/* Make sure that the object isn't already in the cache */
/* Object must be an ACPI_OPERAND_OBJECT */
if (object->common.next) {
if (object->common.data_type != ACPI_DESC_TYPE_INTERNAL) {
return;
}
......@@ -251,7 +249,7 @@ acpi_cm_delete_object_desc (
* Memory allocation metrics. Call the macro here since we only
* care about dynamically allocated objects.
*/
DECREMENT_OBJECT_METRICS (acpi_gbl_object_cache->common.size);
DECREMENT_OBJECT_METRICS (sizeof (ACPI_OPERAND_OBJECT));
acpi_cm_free (object);
return;
......@@ -261,17 +259,18 @@ acpi_cm_delete_object_desc (
/* Clear the entire object. This is important! */
MEMSET (object, 0, sizeof (ACPI_OBJECT_INTERNAL));
object->common.data_type = ACPI_DESC_TYPE_INTERNAL;
MEMSET (object, 0, sizeof (ACPI_OPERAND_OBJECT));
object->common.data_type = ACPI_DESC_TYPE_INTERNAL | ACPI_CACHED_OBJECT;
/* Put the object at the head of the global cache list */
object->common.next = acpi_gbl_object_cache;
object->cache.next = acpi_gbl_object_cache;
acpi_gbl_object_cache = object;
acpi_gbl_object_cache_depth++;
acpi_cm_release_mutex (ACPI_MTX_CACHES);
return;
}
......@@ -292,7 +291,7 @@ void
acpi_cm_delete_object_cache (
void)
{
ACPI_OBJECT_INTERNAL *next;
ACPI_OPERAND_OBJECT *next;
/* Traverse the global cache list */
......@@ -300,17 +299,18 @@ acpi_cm_delete_object_cache (
while (acpi_gbl_object_cache) {
/* Delete one cached state object */
next = acpi_gbl_object_cache->common.next;
acpi_gbl_object_cache->common.next = NULL;
next = acpi_gbl_object_cache->cache.next;
acpi_gbl_object_cache->cache.next = NULL;
/*
* Memory allocation metrics. Call the macro here since we only
* care about dynamically allocated objects.
*/
DECREMENT_OBJECT_METRICS (acpi_gbl_object_cache->common.size);
DECREMENT_OBJECT_METRICS (sizeof (ACPI_OPERAND_OBJECT));
acpi_cm_free (acpi_gbl_object_cache);
acpi_gbl_object_cache = next;
acpi_gbl_object_cache_depth--;
}
return;
......@@ -333,7 +333,7 @@ acpi_cm_delete_object_cache (
void
acpi_cm_init_static_object (
ACPI_OBJECT_INTERNAL *obj_desc)
ACPI_OPERAND_OBJECT *obj_desc)
{
......@@ -345,12 +345,12 @@ acpi_cm_init_static_object (
/*
* Clear the entire descriptor
*/
MEMSET ((void *) obj_desc, 0, sizeof (ACPI_OBJECT_INTERNAL));
MEMSET ((void *) obj_desc, 0, sizeof (ACPI_OPERAND_OBJECT));
/*
* Initialize the header fields
* 1) This is an ACPI_OBJECT_INTERNAL descriptor
* 1) This is an ACPI_OPERAND_OBJECT descriptor
* 2) The size is the full object (worst case)
* 3) The flags field indicates static allocation
* 4) Reference count starts at one (not really necessary since the
......@@ -358,8 +358,7 @@ acpi_cm_init_static_object (
*/
obj_desc->common.data_type = ACPI_DESC_TYPE_INTERNAL;
obj_desc->common.size = sizeof (ACPI_OBJECT_INTERNAL);
obj_desc->common.flags = AO_STATIC_ALLOCATION;
obj_desc->common.flags = AOPOBJ_STATIC_ALLOCATION;
obj_desc->common.reference_count = 1;
return;
......@@ -385,7 +384,7 @@ acpi_cm_init_static_object (
ACPI_STATUS
acpi_cm_get_simple_object_size (
ACPI_OBJECT_INTERNAL *internal_obj,
ACPI_OPERAND_OBJECT *internal_obj,
u32 *obj_length)
{
u32 length;
......@@ -405,7 +404,7 @@ acpi_cm_get_simple_object_size (
length = sizeof (ACPI_OBJECT);
if (VALID_DESCRIPTOR_TYPE (internal_obj, ACPI_DESC_TYPE_NAMED)) {
/* Object is an NTE (reference), just return the length */
/* Object is a named object (reference), just return the length */
*obj_length = (u32) ROUND_UP_TO_NATIVE_WORD (length);
return (status);
......@@ -495,13 +494,13 @@ acpi_cm_get_simple_object_size (
ACPI_STATUS
acpi_cm_get_package_object_size (
ACPI_OBJECT_INTERNAL *internal_obj,
ACPI_OPERAND_OBJECT *internal_obj,
u32 *obj_length)
{
ACPI_OBJECT_INTERNAL *this_internal_obj;
ACPI_OBJECT_INTERNAL *parent_obj[MAX_PACKAGE_DEPTH] = { 0,0,0,0,0 };
ACPI_OBJECT_INTERNAL *this_parent;
ACPI_OPERAND_OBJECT *this_internal_obj;
ACPI_OPERAND_OBJECT *parent_obj[MAX_PACKAGE_DEPTH] = { 0,0,0,0,0 };
ACPI_OPERAND_OBJECT *this_parent;
u32 this_index;
u32 index[MAX_PACKAGE_DEPTH] = { 0,0,0,0,0 };
u32 length = 0;
......@@ -537,7 +536,7 @@ acpi_cm_get_package_object_size (
status =
acpi_cm_get_simple_object_size (this_internal_obj, &object_space);
if (status != AE_OK) {
if (ACPI_FAILURE (status)) {
return (status);
}
......@@ -603,8 +602,6 @@ acpi_cm_get_package_object_size (
}
}
}
return (AE_OK);
}
......@@ -624,7 +621,7 @@ acpi_cm_get_package_object_size (
ACPI_STATUS
acpi_cm_get_object_size(
ACPI_OBJECT_INTERNAL *internal_obj,
ACPI_OPERAND_OBJECT *internal_obj,
u32 *obj_length)
{
ACPI_STATUS status;
......@@ -642,7 +639,7 @@ acpi_cm_get_object_size(
acpi_cm_get_simple_object_size (internal_obj, obj_length);
}
return status;
return (status);
}
This diff is collapsed.
/******************************************************************************
*
* Module Name: cmxface - External interfaces for "global" ACPI functions
* $Revision: 43 $
*
*****************************************************************************/
......@@ -24,16 +25,16 @@
#include "acpi.h"
#include "events.h"
#include "hardware.h"
#include "namesp.h"
#include "interp.h"
#include "acevents.h"
#include "achware.h"
#include "acnamesp.h"
#include "acinterp.h"
#include "amlcode.h"
#include "debugger.h"
#include "acdebug.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmxface");
MODULE_NAME ("cmxface")
/*******************************************************************************
......@@ -77,6 +78,8 @@ acpi_initialize (ACPI_INIT_DATA *init_data)
/* If configured, initialize the AML debugger */
DEBUGGER_EXEC (acpi_db_initialize ());
return (status);
}
......@@ -100,7 +103,9 @@ acpi_terminate (void)
/* Terminate the AML Debuger if present */
acpi_gbl_db_terminate_threads = TRUE;
acpi_cm_release_mutex (ACPI_MTX_DEBUG_CMD_READY);
/* TBD: [Investigate] This is no longer needed?*/
/* Acpi_cm_release_mutex (ACPI_MTX_DEBUG_CMD_READY); */
/* Shutdown and free all resources */
......@@ -224,7 +229,7 @@ acpi_format_exception (
ACPI_BUFFER *out_buffer)
{
u32 length;
char *formatted_exception;
NATIVE_CHAR *formatted_exception;
/*
......@@ -237,14 +242,7 @@ acpi_format_exception (
}
/* Exception must be within range */
if (exception > ACPI_MAX_STATUS) {
return (AE_BAD_PARAMETER);
}
/* Convert the exception code */
/* Convert the exception code (Handles bad exception codes) */
formatted_exception = acpi_cm_format_exception (exception);
......
......@@ -25,6 +25,9 @@
#include "acpi.h"
#include "driver.h"
#define _COMPONENT OS_DEPENDENT
MODULE_NAME ("cpu")
unsigned long acpi_c2_exit_latency = ACPI_INFINITE;
unsigned long acpi_c3_exit_latency = ACPI_INFINITE;
unsigned long acpi_c2_enter_latency = ACPI_INFINITE;
......@@ -33,6 +36,7 @@ unsigned long acpi_c3_enter_latency = ACPI_INFINITE;
static unsigned long acpi_pblk = ACPI_INVALID;
static int acpi_c2_tested = 0;
static int acpi_c3_tested = 0;
static int acpi_max_c_state = 1;
/*
* Clear busmaster activity flag
......@@ -101,10 +105,14 @@ acpi_idle(void)
/*
* start from the previous sleep level..
*/
if (sleep_level == 1)
if (sleep_level == 1
|| acpi_max_c_state < 2)
goto sleep1;
if (sleep_level == 2)
if (sleep_level == 2
|| acpi_max_c_state < 3)
goto sleep2;
sleep3:
sleep_level = 3;
if (!acpi_c3_tested) {
......@@ -193,7 +201,8 @@ acpi_idle(void)
acpi_clear_bm_activity(facp);
continue;
}
if (time > acpi_c3_enter_latency)
if (time > acpi_c3_enter_latency
&& acpi_max_c_state >= 3)
goto sleep3;
}
......@@ -210,7 +219,8 @@ acpi_idle(void)
time = TIME_BEGIN(pm_tmr);
safe_halt();
time = TIME_END(pm_tmr, time);
if (time > acpi_c2_enter_latency)
if (time > acpi_c2_enter_latency
&& acpi_max_c_state >= 2)
goto sleep2;
}
......@@ -260,12 +270,19 @@ acpi_find_cpu(ACPI_HANDLE handle, u32 level, void *ctx, void **value)
return AE_OK;
if (lat[2].latency < MAX_CX_STATE_LATENCY) {
printk(KERN_INFO "ACPI: C2 supported\n");
printk(KERN_INFO "ACPI: C2");
acpi_c2_exit_latency = lat[2].latency;
}
if (lat[3].latency < MAX_CX_STATE_LATENCY) {
printk(KERN_INFO "ACPI: C3 supported\n");
acpi_c3_exit_latency = lat[3].latency;
acpi_max_c_state = 2;
if (lat[3].latency < MAX_CX_STATE_LATENCY) {
printk(", C3 supported\n");
acpi_c3_exit_latency = lat[3].latency;
acpi_max_c_state = 3;
}
else {
printk(" supported\n");
}
}
memset(throttle, 0, sizeof(throttle));
......@@ -291,7 +308,7 @@ acpi_cpu_init(void)
{
acpi_walk_namespace(ACPI_TYPE_PROCESSOR,
ACPI_ROOT_OBJECT,
ACPI_INT32_MAX,
ACPI_UINT32_MAX,
acpi_find_cpu,
NULL,
NULL);
......
#
# Makefile for all Linux ACPI interpreter subdirectories
#
SUB_DIRS :=
MOD_SUB_DIRS := $(SUB_DIRS)
MOD_IN_SUB_DIRS :=
ALL_SUB_DIRS := $(SUB_DIRS)
O_TARGET := ../$(shell basename `pwd`).o
O_OBJS :=
M_OBJS :=
ACPI_OBJS := $(patsubst %.c,%.o,$(wildcard *.c))
EXTRA_CFLAGS += -I../include
EXTRA_CFLAGS += $(ACPI_CFLAGS)
# if the interpreter is used, it overrides arch/i386/kernel/acpi.c
ifeq ($(CONFIG_ACPI_INTERPRETER),y)
O_OBJS := $(ACPI_OBJS)
endif
include $(TOPDIR)/Rules.make
clean:
$(RM) *.o
/******************************************************************************
*
* Module Name: dsfield - Dispatcher field routines
* $Revision: 29 $
*
*****************************************************************************/
......@@ -26,13 +26,13 @@
#include "acpi.h"
#include "amlcode.h"
#include "dispatch.h"
#include "interp.h"
#include "namesp.h"
#include "acdispat.h"
#include "acinterp.h"
#include "acnamesp.h"
#define _COMPONENT DISPATCHER
MODULE_NAME ("dsfield");
MODULE_NAME ("dsfield")
/*
......@@ -46,28 +46,28 @@
#define FIELD_UPDATE_RULE_MASK 0x60
/*****************************************************************************
/*******************************************************************************
*
* FUNCTION: Acpi_ds_create_field
*
* PARAMETERS: Op - Op containing the Field definition and args
* Region - NTE for the containing Operation Region
* Region_node - Object for the containing Operation Region
*
* RETURN: Status
*
* DESCRIPTION: Create a new field in the specified operation region
*
****************************************************************************/
******************************************************************************/
ACPI_STATUS
acpi_ds_create_field (
ACPI_GENERIC_OP *op,
ACPI_HANDLE region,
ACPI_PARSE_OBJECT *op,
ACPI_NAMESPACE_NODE *region_node,
ACPI_WALK_STATE *walk_state)
{
ACPI_STATUS status = AE_AML_ERROR;
ACPI_GENERIC_OP *arg;
ACPI_NAMED_OBJECT *entry;
ACPI_PARSE_OBJECT *arg;
ACPI_NAMESPACE_NODE *node;
u8 field_flags;
u8 access_attribute = 0;
u32 field_bit_position = 0;
......@@ -76,6 +76,16 @@ acpi_ds_create_field (
/* First arg is the name of the parent Op_region */
arg = op->value.arg;
if (!region_node) {
status = acpi_ns_lookup (walk_state->scope_info, arg->value.name,
ACPI_TYPE_REGION, IMODE_EXECUTE,
NS_SEARCH_PARENT, walk_state,
&region_node);
if (ACPI_FAILURE (status)) {
return (status);
}
}
/* Second arg is the field flags */
......@@ -111,32 +121,29 @@ acpi_ds_create_field (
case AML_NAMEDFIELD_OP:
status = acpi_ns_lookup (walk_state->scope_info,
(char *) &((ACPI_NAMED_OP *)arg)->name,
(NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)arg)->name,
INTERNAL_TYPE_DEF_FIELD,
IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &entry);
NULL, &node);
if (ACPI_FAILURE (status)) {
return (status);
}
/*
* Initialize an object for the new NTE that is on
* Initialize an object for the new Node that is on
* the object stack
*/
status = acpi_aml_prep_def_field_value (entry, region,
field_flags,
access_attribute,
field_bit_position,
arg->value.size);
status = acpi_aml_prep_def_field_value (node, region_node, field_flags,
access_attribute, field_bit_position, arg->value.size);
if (ACPI_FAILURE (status)) {
return (status);
}
/* Keep track of bit position for the *next* field */
/* Keep track of bit position for *next* field */
field_bit_position += arg->value.size;
break;
......@@ -149,29 +156,29 @@ acpi_ds_create_field (
}
/*****************************************************************************
/*******************************************************************************
*
* FUNCTION: Acpi_ds_create_bank_field
*
* PARAMETERS: Op - Op containing the Field definition and args
* Region - NTE for the containing Operation Region
* Region_node - Object for the containing Operation Region
*
* RETURN: Status
*
* DESCRIPTION: Create a new bank field in the specified operation region
*
****************************************************************************/
******************************************************************************/
ACPI_STATUS
acpi_ds_create_bank_field (
ACPI_GENERIC_OP *op,
ACPI_HANDLE region,
ACPI_PARSE_OBJECT *op,
ACPI_NAMESPACE_NODE *region_node,
ACPI_WALK_STATE *walk_state)
{
ACPI_STATUS status = AE_AML_ERROR;
ACPI_GENERIC_OP *arg;
ACPI_NAMED_OBJECT *bank_reg;
ACPI_NAMED_OBJECT *entry;
ACPI_PARSE_OBJECT *arg;
ACPI_NAMESPACE_NODE *register_node;
ACPI_NAMESPACE_NODE *node;
u32 bank_value;
u8 field_flags;
u8 access_attribute = 0;
......@@ -181,8 +188,18 @@ acpi_ds_create_bank_field (
/* First arg is the name of the parent Op_region */
arg = op->value.arg;
if (!region_node) {
status = acpi_ns_lookup (walk_state->scope_info, arg->value.name,
ACPI_TYPE_REGION, IMODE_EXECUTE,
NS_SEARCH_PARENT, walk_state,
&region_node);
if (ACPI_FAILURE (status)) {
return (status);
}
}
/* Socond arg is the Bank Register */
/* Second arg is the Bank Register */
arg = arg->next;
......@@ -190,7 +207,7 @@ acpi_ds_create_bank_field (
INTERNAL_TYPE_BANK_FIELD_DEFN,
IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &bank_reg);
NULL, &register_node);
if (ACPI_FAILURE (status)) {
return (status);
......@@ -236,27 +253,24 @@ acpi_ds_create_bank_field (
case AML_NAMEDFIELD_OP:
status = acpi_ns_lookup (walk_state->scope_info,
(char *) &((ACPI_NAMED_OP *)arg)->name,
(NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)arg)->name,
INTERNAL_TYPE_DEF_FIELD,
IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &entry);
NULL, &node);
if (ACPI_FAILURE (status)) {
return (status);
}
/*
* Initialize an object for the new NTE that is on
* Initialize an object for the new Node that is on
* the object stack
*/
status = acpi_aml_prep_bank_field_value (entry, region,
bank_reg, bank_value,
field_flags,
access_attribute,
field_bit_position,
arg->value.size);
status = acpi_aml_prep_bank_field_value (node, region_node, register_node,
bank_value, field_flags, access_attribute,
field_bit_position, arg->value.size);
if (ACPI_FAILURE (status)) {
return (status);
......@@ -276,30 +290,30 @@ acpi_ds_create_bank_field (
}
/*****************************************************************************
/*******************************************************************************
*
* FUNCTION: Acpi_ds_create_index_field
*
* PARAMETERS: Op - Op containing the Field definition and args
* Region - NTE for the containing Operation Region
* Region_node - Object for the containing Operation Region
*
* RETURN: Status
*
* DESCRIPTION: Create a new index field in the specified operation region
*
****************************************************************************/
******************************************************************************/
ACPI_STATUS
acpi_ds_create_index_field (
ACPI_GENERIC_OP *op,
ACPI_HANDLE region,
ACPI_PARSE_OBJECT *op,
ACPI_HANDLE region_node,
ACPI_WALK_STATE *walk_state)
{
ACPI_STATUS status;
ACPI_GENERIC_OP *arg;
ACPI_NAMED_OBJECT *entry;
ACPI_NAMED_OBJECT *index_reg;
ACPI_NAMED_OBJECT *data_reg;
ACPI_PARSE_OBJECT *arg;
ACPI_NAMESPACE_NODE *node;
ACPI_NAMESPACE_NODE *index_register_node;
ACPI_NAMESPACE_NODE *data_register_node;
u8 field_flags;
u8 access_attribute = 0;
u32 field_bit_position = 0;
......@@ -312,7 +326,7 @@ acpi_ds_create_index_field (
status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
ACPI_TYPE_ANY, IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &index_reg);
NULL, &index_register_node);
if (ACPI_FAILURE (status)) {
return (status);
......@@ -326,7 +340,7 @@ acpi_ds_create_index_field (
INTERNAL_TYPE_INDEX_FIELD_DEFN,
IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &data_reg);
NULL, &data_register_node);
if (ACPI_FAILURE (status)) {
return (status);
......@@ -368,26 +382,24 @@ acpi_ds_create_index_field (
case AML_NAMEDFIELD_OP:
status = acpi_ns_lookup (walk_state->scope_info,
(char *) &((ACPI_NAMED_OP *)arg)->name,
(NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)arg)->name,
INTERNAL_TYPE_INDEX_FIELD,
IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &entry);
NULL, &node);
if (ACPI_FAILURE (status)) {
return (status);
}
/*
* Initialize an object for the new NTE that is on
* Initialize an object for the new Node that is on
* the object stack
*/
status = acpi_aml_prep_index_field_value (entry, index_reg,
data_reg, field_flags,
access_attribute,
field_bit_position,
arg->value.size);
status = acpi_aml_prep_index_field_value (node, index_register_node, data_register_node,
field_flags, access_attribute,
field_bit_position, arg->value.size);
if (ACPI_FAILURE (status)) {
return (status);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/******************************************************************************
*
* Module Name: dswscope - Scope stack manipulation
* $Revision: 38 $
*
*****************************************************************************/
......@@ -25,12 +25,12 @@
#include "acpi.h"
#include "interp.h"
#include "dispatch.h"
#include "acinterp.h"
#include "acdispat.h"
#define _COMPONENT NAMESPACE
MODULE_NAME ("dswscope");
MODULE_NAME ("dswscope")
#define STACK_POP(head) head
......@@ -69,24 +69,24 @@ acpi_ds_scope_stack_clear (
*
* FUNCTION: Acpi_ds_scope_stack_push
*
* PARAMETERS: *New_scope, - Name to be made current
* Type, - Type of frame being pushed
* PARAMETERS: *Node, - Name to be made current
* Type, - Type of frame being pushed
*
* DESCRIPTION: Push the current scope on the scope stack, and make the
* passed nte current.
* passed Node current.
*
***************************************************************************/
ACPI_STATUS
acpi_ds_scope_stack_push (
ACPI_NAME_TABLE *new_scope,
ACPI_NAMESPACE_NODE *node,
OBJECT_TYPE_INTERNAL type,
ACPI_WALK_STATE *walk_state)
{
ACPI_GENERIC_STATE *scope_info;
if (!new_scope) {
if (!node) {
/* invalid scope */
REPORT_ERROR ("Ds_scope_stack_push: null scope passed");
......@@ -109,7 +109,7 @@ acpi_ds_scope_stack_push (
/* Init new scope object */
scope_info->scope.name_table = new_scope;
scope_info->scope.node = node;
scope_info->common.value = (u16) type;
/* Push new scope object onto stack */
......
This diff is collapsed.
......@@ -32,6 +32,9 @@
#include "acpi.h"
#include "driver.h"
#define _COMPONENT OS_DEPENDENT
MODULE_NAME ("driver")
struct acpi_run_entry
{
void (*callback)(void*);
......
This diff is collapsed.
#
# Makefile for all Linux ACPI interpreter subdirectories
#
SUB_DIRS :=
MOD_SUB_DIRS := $(SUB_DIRS)
MOD_IN_SUB_DIRS :=
ALL_SUB_DIRS := $(SUB_DIRS)
O_TARGET := ../$(shell basename `pwd`).o
O_OBJS :=
M_OBJS :=
ACPI_OBJS := $(patsubst %.c,%.o,$(wildcard *.c))
EXTRA_CFLAGS += -I../include
EXTRA_CFLAGS += $(ACPI_CFLAGS)
# if the interpreter is used, it overrides arch/i386/kernel/acpi.c
ifeq ($(CONFIG_ACPI_INTERPRETER),y)
O_OBJS := $(ACPI_OBJS)
endif
include $(TOPDIR)/Rules.make
clean:
$(RM) *.o
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment