17.05.2015 Views

TI486 Microprocessor - Al Kossow's Bitsavers

TI486 Microprocessor - Al Kossow's Bitsavers

TI486 Microprocessor - Al Kossow's Bitsavers

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

8MI Handler Example<br />

;Determine Why Are We In The SMI Handler<br />

COMMENT A<br />

Chip set/Core logic unique instructions will follow. The chip set will be<br />

used to deter.mine what caused the SMM interrupt to occur. The B~OS could also<br />

"jump" to this point in the SMM region.<br />

A<br />

;<br />

; Decision Tree:<br />

;a)<br />

;b)<br />

;c)<br />

If timer, go to timer_expired<br />

If port i/o occurred to a trapped location, go to port_io_caused<br />

If the cpu was turned off, go to cpu_turned_off<br />

;timer_expired;<br />

COMMENT A<br />

A chip set timer has expired. Unique code would appear to deter.mine which<br />

timer. Depending on the purpose of the timer the handler could;<br />

1) Reduce the clock frequency<br />

2) Execute a halt instruction and enter suspend mode<br />

3) Turn current off to the CPU<br />

4) Turn off a peripheral device<br />

5) Reset the timer and increment a counter<br />

reduce_clock:<br />

COMMENT A<br />

To go to a lower CPU current requirement the CPU clock can be reduced. The<br />

CPU clock can be reduced from its current setting to a lower value. That<br />

value could be zero. Since the CPU is a static device and will maintain the<br />

state of all its registers in the absence of a clock input there is no state<br />

saving requirement. ~t is assumed that by writing to the chip set it will<br />

reduce or zero the clock. ~f the clock is stopped then the next instruction<br />

to be executed will be one in this SM~ handler immediately following the<br />

point where the chip set turned the clock off.<br />

jmp end_timer:<br />

A-16 Tl486 8MM Programmer's Guide

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!