|
|
@@ -623,9 +623,11 @@ static inline int gru_get_cb_substatus(void *cb)
|
|
|
return cbs->isubstatus;
|
|
|
}
|
|
|
|
|
|
-/* Check the status of a CB. If the CB is in UPM mode, call the
|
|
|
- * OS to handle the UPM status.
|
|
|
- * Returns the CB status field value (0 for normal completion)
|
|
|
+/*
|
|
|
+ * User interface to check an instruction status. UPM and exceptions
|
|
|
+ * are handled automatically. However, this function does NOT wait
|
|
|
+ * for an active instruction to complete.
|
|
|
+ *
|
|
|
*/
|
|
|
static inline int gru_check_status(void *cb)
|
|
|
{
|
|
|
@@ -633,34 +635,31 @@ static inline int gru_check_status(void *cb)
|
|
|
int ret;
|
|
|
|
|
|
ret = cbs->istatus;
|
|
|
- if (ret == CBS_CALL_OS)
|
|
|
+ if (ret != CBS_ACTIVE)
|
|
|
ret = gru_check_status_proc(cb);
|
|
|
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)
|
|
|
{
|
|
|
- struct gru_control_block_status *cbs = (void *)cb;
|
|
|
- int ret = cbs->istatus;
|
|
|
-
|
|
|
- if (ret != CBS_IDLE)
|
|
|
- ret = gru_wait_proc(cb);
|
|
|
- return ret;
|
|
|
+ return gru_wait_proc(cb);
|
|
|
}
|
|
|
|
|
|
-/* 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
|
|
|
* bugs will cause termination.
|
|
|
*/
|
|
|
static inline void gru_wait_abort(void *cb)
|
|
|
{
|
|
|
- struct gru_control_block_status *cbs = (void *)cb;
|
|
|
-
|
|
|
- if (cbs->istatus != CBS_IDLE)
|
|
|
- gru_wait_abort_proc(cb);
|
|
|
+ gru_wait_abort_proc(cb);
|
|
|
}
|
|
|
|
|
|
|