Commit 9f250114 authored by Jack Steiner's avatar Jack Steiner Committed by Linus Torvalds

gru: cleanup gru inline functions

Cleanup of GRU inline functions to eliminate unnecessary inline code.
Update function descriptions.
Signed-off-by: default avatarJack Steiner <steiner@sgi.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6471cd4d
...@@ -623,9 +623,11 @@ static inline int gru_get_cb_substatus(void *cb) ...@@ -623,9 +623,11 @@ static inline int gru_get_cb_substatus(void *cb)
return cbs->isubstatus; return cbs->isubstatus;
} }
/* Check the status of a CB. If the CB is in UPM mode, call the /*
* OS to handle the UPM status. * User interface to check an instruction status. UPM and exceptions
* Returns the CB status field value (0 for normal completion) * are handled automatically. However, this function does NOT wait
* for an active instruction to complete.
*
*/ */
static inline int gru_check_status(void *cb) static inline int gru_check_status(void *cb)
{ {
...@@ -633,34 +635,31 @@ static inline int gru_check_status(void *cb) ...@@ -633,34 +635,31 @@ static inline int gru_check_status(void *cb)
int ret; int ret;
ret = cbs->istatus; ret = cbs->istatus;
if (ret == CBS_CALL_OS) if (ret != CBS_ACTIVE)
ret = gru_check_status_proc(cb); ret = gru_check_status_proc(cb);
return ret; return ret;
} }
/* Wait for CB to complete. /*
* Returns the CB status field value (0 for normal completion) * User interface (via inline function) to wait for an instruction
* to complete. Completion status (IDLE or EXCEPTION is returned
* to the user. Exception due to hardware errors are automatically
* retried before returning an exception.
*
*/ */
static inline int gru_wait(void *cb) static inline int gru_wait(void *cb)
{ {
struct gru_control_block_status *cbs = (void *)cb; return gru_wait_proc(cb);
int ret = cbs->istatus;
if (ret != CBS_IDLE)
ret = gru_wait_proc(cb);
return ret;
} }
/* Wait for CB to complete. Aborts program if error. (Note: error does NOT /*
* Wait for CB to complete. Aborts program if error. (Note: error does NOT
* mean TLB mis - only fatal errors such as memory parity error or user * mean TLB mis - only fatal errors such as memory parity error or user
* bugs will cause termination. * bugs will cause termination.
*/ */
static inline void gru_wait_abort(void *cb) static inline void gru_wait_abort(void *cb)
{ {
struct gru_control_block_status *cbs = (void *)cb; gru_wait_abort_proc(cb);
if (cbs->istatus != CBS_IDLE)
gru_wait_abort_proc(cb);
} }
......
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